hogar compartido: colaboracion entre cuentas sobre Firestore
CloudKit sincroniza la base privada de un Apple ID: ni llega a Android ni deja que dos cuentas editen el mismo plan (CKShare sigue sin existir en SwiftData). El contenido de un hogar pasa por tanto a Firestore, y un dispositivo que entra en un hogar construye el store local sin CloudKit — dos espejos escribiendo los mismos objetos se pelean, que es justo lo que ya obligó a apagar el sync por iCloud KV. SwiftData sigue siendo el store local y el modo offline; HouseholdSyncService es lo unico que habla con la red. Detecta cambios comparando una huella del contenido de cada documento con la ultima sincronizada (el "shadow"), asi que no hace falta instrumentar con updatedAt las treinta vistas que mutan modelos. Los borrados van como tombstone: un borrado duro volveria desde cualquier miembro que estuviera sin conexion. Semanas y slots usan id derivado del contenido (2026-09-14, 5-dinner) para que dos miembros que abren la misma semana escriban el mismo documento en vez de crear dos, y para que los conflictos se resuelvan por slot y no por semana. Incluye reglas de seguridad (solo miembros; los codigos de invitacion se pueden leer por id pero no listar), pantalla de hogar en Ajustes con Sign in with Apple, invitacion por codigo de 6 caracteres sin vocales ni 0/O/1/I, y la eleccion al unirse entre llevarse los platos propios o adoptar los del hogar. Fuera de esta fase: fotos de platos (necesitan Storage) y el cliente Android. Refs #33 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013su1ttRiMeMYxkZJ1Y3246
This commit is contained in:
@@ -478,3 +478,40 @@
|
||||
"week_schedule_warning_confirm" = "Retirer quand même";
|
||||
"toast_week_schedule_updated" = "Semaine mise à jour";
|
||||
"toast_week_schedule_reset" = "Semaine revenue à vos réglages généraux";
|
||||
|
||||
/* Hogar compartido (2.2) */
|
||||
"household_title" = "Foyer partagé";
|
||||
"household_section" = "Foyer";
|
||||
"household_settings_footer" = "Planifiez la semaine à plusieurs, chacun depuis son compte. Fonctionne aussi depuis Android.";
|
||||
"household_intro" = "Un foyer permet à plusieurs personnes de planifier la même semaine, avec les plats et la liste de courses en commun.";
|
||||
"household_sign_in_footer" = "Il faut se connecter pour partager. Vos plats restent les vôtres : personne en dehors de votre foyer ne les voit.";
|
||||
"household_create_section" = "Créer un foyer";
|
||||
"household_create" = "Créer le foyer";
|
||||
"household_name_placeholder" = "Nom du foyer (ex. Maison)";
|
||||
"household_create_footer" = "Vos plats, étiquettes et semaines actuels deviennent le point de départ du foyer.";
|
||||
"household_create_premium_footer" = "Créer un foyer est réservé au Premium. La personne invitée n'a rien à payer.";
|
||||
"household_join_section" = "Rejoindre un foyer";
|
||||
"household_join" = "Rejoindre avec le code";
|
||||
"household_code_placeholder" = "Code d'invitation";
|
||||
"household_join_footer" = "Demandez le code à la personne qui a créé le foyer. Il expire au bout de 7 jours.";
|
||||
"household_join_choice_title" = "Et vos plats ?";
|
||||
"household_join_choice_message" = "Vous pouvez emmener vos plats et vos semaines dans ce foyer, ou commencer avec ceux du foyer uniquement.";
|
||||
"household_join_choice_merge" = "Emmener mes plats";
|
||||
"household_join_choice_replace" = "Garder ceux du foyer";
|
||||
"household_members_section" = "Membres";
|
||||
"household_member_you" = "vous";
|
||||
"household_member_unnamed" = "Sans nom";
|
||||
"household_invite_section" = "Invitation";
|
||||
"household_invite_footer" = "Partagez ce code avec les personnes qui planifieront avec vous.";
|
||||
"household_invite_share" = "Rejoins mon foyer MealMood avec le code %@ — https://mealmood.app";
|
||||
"household_invite_expires" = "Expire le %@";
|
||||
"household_invite_regenerate" = "Générer un nouveau code";
|
||||
"household_leave" = "Quitter le foyer";
|
||||
"household_leave_confirm_title" = "Quitter le foyer ?";
|
||||
"household_leave_confirm_message" = "Vous ne verrez plus et ne pourrez plus modifier les plats et les semaines du foyer sur cet appareil.";
|
||||
"household_leave_confirm_confirm" = "Quitter";
|
||||
"household_relaunch_needed" = "Fermez et rouvrez MealMood pour terminer le changement.";
|
||||
"household_error_not_signed_in" = "Connectez-vous avant de créer un foyer ou d'en rejoindre un.";
|
||||
"household_error_no_household" = "Cet appareil n'appartient à aucun foyer.";
|
||||
"household_error_invalid_code" = "Ce code n'existe pas.";
|
||||
"household_error_expired_code" = "Ce code a expiré. Demandez-en un nouveau.";
|
||||
|
||||
Reference in New Issue
Block a user