Photos (camera)
Photo prise ou choisie (expo-image-picker), envoyée dans Supabase Storage (dossier par utilisateur), composant PhotoPicker.
Fiche technique
Section intitulée « Fiche technique »| 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 |
Mise en place et usage
Section intitulée « Mise en place et usage »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 : bucketimagespublic en lecture par URL, écriture et suppression limitées au dossier<user_id>/). - Configuration (
modules.camera) :bucket(défautimages; autre nom = adapter la migration),quality(0.7),aspect(ex.[1, 1]pour un avatar),cameraPermissionetphotosPermission(textes iOS, défaut selondefaultLocale). - É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) : nullreturn insertPost({ ...input, image_url: image?.url ?? null })} pickPhoto('camera' | 'library')etremovePhoto(path)pour un usage sans composant.- Colonne d’image :
image_url:text?dansg table.
Configuration
Section intitulée « Configuration »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