Proje: Okul B2B App · Hub: Okul B2B App — Conventions

Galeri Ekranı Pattern

app/(tabs)/gallery.tsx — Galeri yönetimi ekranı.

Sekmeler

PagerView ile üç sekme:

Sekmeİçerik
photosGaleri fotoğrafları + kapak
logoOkul logosu
videosYouTube video URL’leri

Fotoğraf Yükleme Akışı

  1. useNativeImagePicker veya useImageCropPicker hook’u ile fotoğraf seçilir
  2. Seçilen fotoğraflar UploadItem[] listesine eklenir
  3. Her öğe için GalleryService.uploadPhoto() çağrılır
  4. Upload progress gösterilir (UploadProgress bileşeni)
  5. Upload tamamlanınca galeri yenilenir

Dosya Adı Güvenliği

const createSafeFileName = (originalName: string, prefix?: string): string => {
  // Max 50 karakter limit (API şartı)
  // Timestamp suffix ile benzersizlik
  // .jpg uzantısı fallback
}

Platform Farkı: PhotoViewModal

gallery/PhotoViewModal.tsx          → iOS
gallery/PhotoViewModal.android.tsx  → Android

Platform-specific import ile otomatik seçilir.

GestureHandlerRootView

Sıralama (react-native-sortables) için GestureHandlerRootView galeri bileşenini wrap etmeli.

useFocusEffect ile Refresh

Ekrana dönüldüğünde galeri yenilenir (useFocusEffect).

ActionSheetIOS

iOS’ta fotoğraf seçenekleri (kamera vs galeri) ActionSheetIOS ile gösterilir.