Aller au contenu

Photos (camera)

Photo prise ou choisie (expo-image-picker), envoyée dans Supabase Storage (dossier par utilisateur), composant PhotoPicker.

Paquet @daroms/module-camera
Activer bun daroms module add camera
Requiert auth
Dépendances natives expo-image-picker
Routes ajoutées aucune
Onglets aucun
Migrations migrations/storage_images.sql
Edge functions aucune
Variables d’environnement aucune
Gate de navigation non
Section de réglages non

Photos prises ou choisies (expo-image-picker, fonctionne dans Expo Go), envoyées dans Supabase Storage. Requiert auth.

  • Activer : bun daroms module add camera (migration : bucket images public en lecture par URL, écriture et suppression limitées au dossier <user_id>/).
  • Configuration (modules.camera) : bucket (défaut images ; autre nom = adapter la migration), quality (0.7), aspect (ex. [1, 1] pour un avatar), cameraPermission et photosPermission (textes iOS, défaut selon defaultLocale).
  • Écran : <PhotoPicker value={photo?.uri ?? item.image_url} onChange={setPhoto} /> (feuille appareil photo, galerie, retirer).
  • Envoi dans api.ts, au moment d’enregistrer :
    import { uploadPhoto, type Photo } from '@daroms/module-camera'
    mutationFn: async ({ photo, ...input }: PostInput & { photo: Photo | null }) => {
    const image = photo ? await uploadPhoto(photo) : null
    return insertPost({ ...input, image_url: image?.url ?? null })
    }
  • pickPhoto('camera' | 'library') et removePhoto(path) pour un usage sans composant.
  • Colonne d’image : image_url:text? dans g table.

Dans app.manifest.ts > modules['camera'], validée par modules/camera/config.ts au démarrage.

Clé Schéma zod Rôle
bucket z.string().default('images') Bucket Supabase Storage (créé par la migration du module, lecture publique).
quality z.number().min(0).max(1).default(0.7) Compression JPEG, de 0 à 1.
aspect z.tuple([z.number().positive(), z.number().positive()]).optional() Recadrage imposé par défaut, ex. [1, 1] pour un avatar (sinon photo entière).
cameraPermission z.string().optional() Textes iOS des permissions (plugin) : défaut dans la langue par défaut de l’app.
photosPermission z.string().optional() -

Valeurs écrites par module add :

{
"bucket": "images",
"quality": 0.7
}
import { PhotoPicker, pickPhoto, removePhoto } from '@daroms/module-camera'
  • Valeurs : PhotoPicker, pickPhoto, removePhoto, uploadPhoto

  • Types : PhotoPickerProps, Photo, PhotoSource, UploadedPhoto