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

MediaPicker Bileşeni

components/gallery/MediaPicker.tsx — Wrappable medya seçici bileşeni. useNativeImagePicker hook’unun bileşen versiyonu.

Props

{
  onMediaSelected: (result: MediaPickerResult) => void,
  onBatchSelected: (result: BatchMediaPickerResult) => void,
  allowsMultipleSelection: boolean,
  mediaTypes: 'Images' | 'Videos' | 'All',
  quality: number,           // 0-1
  cropping: boolean,
  cropSize?: { width, height },
  aspectRatio?: [w, h],
  selectionLimit: number,    // max seçim
  maxFileSize: number,       // MB
  children: ReactNode        // Custom buton içeriği
}

Fark: MediaPicker vs useNativeImagePicker

ÖzellikMediaPickeruseNativeImagePicker
KullanımBileşen (children wrap)Hook
Çoklu seçim
Video❌ (sadece image)
Compression✅ ImageManipulator✅ ImageCompressor

MediaPickerUtils

MediaPickerUtils.formatFileSize()bytes → "2.4 MB" formatı.