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" = "Trotzdem entfernen";
|
||||
"toast_week_schedule_updated" = "Woche aktualisiert";
|
||||
"toast_week_schedule_reset" = "Woche folgt wieder deinen Einstellungen";
|
||||
|
||||
/* Hogar compartido (2.2) */
|
||||
"household_title" = "Gemeinsamer Haushalt";
|
||||
"household_section" = "Haushalt";
|
||||
"household_settings_footer" = "Plant die Woche gemeinsam, jede Person mit eigenem Konto. Funktioniert auch unter Android.";
|
||||
"household_intro" = "In einem Haushalt planen mehrere Personen dieselbe Woche und teilen sich Gerichte und Einkaufsliste.";
|
||||
"household_sign_in_footer" = "Zum Teilen musst du dich anmelden. Deine Gerichte bleiben deine: außerhalb deines Haushalts sieht sie niemand.";
|
||||
"household_create_section" = "Haushalt erstellen";
|
||||
"household_create" = "Haushalt erstellen";
|
||||
"household_name_placeholder" = "Name des Haushalts (z. B. Zuhause)";
|
||||
"household_create_footer" = "Deine aktuellen Gerichte, Tags und Wochen werden zum Ausgangspunkt des Haushalts.";
|
||||
"household_create_premium_footer" = "Einen Haushalt zu erstellen ist Premium. Wer eingeladen wird, zahlt nichts.";
|
||||
"household_join_section" = "Haushalt beitreten";
|
||||
"household_join" = "Mit Code beitreten";
|
||||
"household_code_placeholder" = "Einladungscode";
|
||||
"household_join_footer" = "Frag die Person, die den Haushalt erstellt hat, nach dem Code. Er läuft nach 7 Tagen ab.";
|
||||
"household_join_choice_title" = "Was ist mit deinen Gerichten?";
|
||||
"household_join_choice_message" = "Du kannst deine Gerichte und Wochen in diesen Haushalt mitnehmen oder nur mit denen des Haushalts starten.";
|
||||
"household_join_choice_merge" = "Meine Gerichte mitnehmen";
|
||||
"household_join_choice_replace" = "Nur die des Haushalts";
|
||||
"household_members_section" = "Mitglieder";
|
||||
"household_member_you" = "du";
|
||||
"household_member_unnamed" = "Ohne Namen";
|
||||
"household_invite_section" = "Einladung";
|
||||
"household_invite_footer" = "Teile diesen Code mit allen, die mit dir planen sollen.";
|
||||
"household_invite_share" = "Komm in meinen MealMood-Haushalt mit dem Code %@ — https://mealmood.app";
|
||||
"household_invite_expires" = "Läuft ab am %@";
|
||||
"household_invite_regenerate" = "Neuen Code erzeugen";
|
||||
"household_leave" = "Haushalt verlassen";
|
||||
"household_leave_confirm_title" = "Haushalt verlassen?";
|
||||
"household_leave_confirm_message" = "Du siehst und bearbeitest die Gerichte und Wochen des Haushalts auf diesem Gerät nicht mehr.";
|
||||
"household_leave_confirm_confirm" = "Verlassen";
|
||||
"household_relaunch_needed" = "Schließe MealMood und öffne es erneut, um den Wechsel abzuschließen.";
|
||||
"household_error_not_signed_in" = "Melde dich an, bevor du einen Haushalt erstellst oder beitrittst.";
|
||||
"household_error_no_household" = "Dieses Gerät gehört zu keinem Haushalt.";
|
||||
"household_error_invalid_code" = "Diesen Code gibt es nicht.";
|
||||
"household_error_expired_code" = "Dieser Code ist abgelaufen. Bitte um einen neuen.";
|
||||
|
||||
Reference in New Issue
Block a user