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 |
|---|---|
photos | Galeri fotoğrafları + kapak |
logo | Okul logosu |
videos | YouTube video URL’leri |
Fotoğraf Yükleme Akışı
useNativeImagePickerveyauseImageCropPickerhook’u ile fotoğraf seçilir- Seçilen fotoğraflar
UploadItem[]listesine eklenir - Her öğe için
GalleryService.uploadPhoto()çağrılır - Upload progress gösterilir (
UploadProgressbileşeni) - 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.
Related
- galeri-yonetimi — galeri domain
- medya-yukleme-akisi — upload akışı
- react-native-sortables-galeri — sıralama kararı