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" = "Rimuovi comunque";
|
||||
"toast_week_schedule_updated" = "Settimana aggiornata";
|
||||
"toast_week_schedule_reset" = "Settimana tornata alle impostazioni generali";
|
||||
|
||||
/* Hogar compartido (2.2) */
|
||||
"household_title" = "Casa condivisa";
|
||||
"household_section" = "Casa";
|
||||
"household_settings_footer" = "Pianificate la settimana insieme, ognuno dal proprio account. Funziona anche da Android.";
|
||||
"household_intro" = "Una casa permette a più persone di pianificare la stessa settimana, condividendo piatti e lista della spesa.";
|
||||
"household_sign_in_footer" = "Per condividere serve accedere. I tuoi piatti restano tuoi: fuori dalla tua casa non li vede nessuno.";
|
||||
"household_create_section" = "Creare una casa";
|
||||
"household_create" = "Crea casa";
|
||||
"household_name_placeholder" = "Nome della casa (es. Casa)";
|
||||
"household_create_footer" = "I tuoi piatti, le etichette e le settimane attuali diventano il punto di partenza della casa.";
|
||||
"household_create_premium_footer" = "Creare una casa è Premium. Chi ricevi l'invito non deve pagare.";
|
||||
"household_join_section" = "Unirsi a una casa";
|
||||
"household_join" = "Unisciti con il codice";
|
||||
"household_code_placeholder" = "Codice d'invito";
|
||||
"household_join_footer" = "Chiedi il codice a chi ha creato la casa. Scade dopo 7 giorni.";
|
||||
"household_join_choice_title" = "E i tuoi piatti?";
|
||||
"household_join_choice_message" = "Puoi portare in questa casa i piatti e le settimane che hai già, oppure iniziare solo con quelli della casa.";
|
||||
"household_join_choice_merge" = "Porta i miei piatti";
|
||||
"household_join_choice_replace" = "Solo quelli della casa";
|
||||
"household_members_section" = "Membri";
|
||||
"household_member_you" = "tu";
|
||||
"household_member_unnamed" = "Senza nome";
|
||||
"household_invite_section" = "Invito";
|
||||
"household_invite_footer" = "Condividi questo codice con chi vuoi che pianifichi con te.";
|
||||
"household_invite_share" = "Entra nella mia casa MealMood con il codice %@ — https://mealmood.app";
|
||||
"household_invite_expires" = "Scade il %@";
|
||||
"household_invite_regenerate" = "Genera un nuovo codice";
|
||||
"household_leave" = "Esci dalla casa";
|
||||
"household_leave_confirm_title" = "Uscire dalla casa?";
|
||||
"household_leave_confirm_message" = "Su questo dispositivo non vedrai né modificherai più i piatti e le settimane della casa.";
|
||||
"household_leave_confirm_confirm" = "Esci";
|
||||
"household_relaunch_needed" = "Chiudi e riapri MealMood per completare il cambio.";
|
||||
"household_error_not_signed_in" = "Accedi prima di creare una casa o di unirti a una.";
|
||||
"household_error_no_household" = "Questo dispositivo non appartiene a nessuna casa.";
|
||||
"household_error_invalid_code" = "Quel codice non esiste.";
|
||||
"household_error_expired_code" = "Quel codice è scaduto. Chiedine uno nuovo.";
|
||||
|
||||
Reference in New Issue
Block a user