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" = "Quitar igualmente";
|
||||
"toast_week_schedule_updated" = "Semana actualizada";
|
||||
"toast_week_schedule_reset" = "Semana con tu configuración general";
|
||||
|
||||
/* Hogar compartido (2.2) */
|
||||
"household_title" = "Hogar compartido";
|
||||
"household_section" = "Hogar";
|
||||
"household_settings_footer" = "Planificad la semana entre varias personas, cada una desde su cuenta. Funciona también desde Android.";
|
||||
"household_intro" = "Un hogar permite que varias personas planifiquen la misma semana, con sus platos y su lista de la compra en común.";
|
||||
"household_sign_in_footer" = "Necesitas identificarte para compartir con otra persona. Tus platos siguen siendo tuyos: nadie fuera de tu hogar los ve.";
|
||||
"household_create_section" = "Crear un hogar";
|
||||
"household_create" = "Crear hogar";
|
||||
"household_name_placeholder" = "Nombre del hogar (p. ej. Casa)";
|
||||
"household_create_footer" = "Tus platos, etiquetas y semanas actuales pasan a ser el punto de partida del hogar.";
|
||||
"household_create_premium_footer" = "Crear un hogar es Premium. Quien recibe la invitación no necesita pagar.";
|
||||
"household_join_section" = "Unirme a un hogar";
|
||||
"household_join" = "Unirme con el código";
|
||||
"household_code_placeholder" = "Código de invitación";
|
||||
"household_join_footer" = "Pide el código a quien creó el hogar. Caduca a los 7 días.";
|
||||
"household_join_choice_title" = "¿Qué hacemos con tus platos?";
|
||||
"household_join_choice_message" = "Puedes llevarte a este hogar los platos y semanas que ya tienes, o empezar solo con los del hogar.";
|
||||
"household_join_choice_merge" = "Llevarme mis platos";
|
||||
"household_join_choice_replace" = "Usar solo los del hogar";
|
||||
"household_members_section" = "Miembros";
|
||||
"household_member_you" = "tú";
|
||||
"household_member_unnamed" = "Sin nombre";
|
||||
"household_invite_section" = "Invitación";
|
||||
"household_invite_footer" = "Comparte este código con quien quieras que planifique contigo.";
|
||||
"household_invite_share" = "Únete a mi hogar en MealMood con el código %@ — https://mealmood.app";
|
||||
"household_invite_expires" = "Caduca el %@";
|
||||
"household_invite_regenerate" = "Generar código nuevo";
|
||||
"household_leave" = "Salir del hogar";
|
||||
"household_leave_confirm_title" = "¿Salir del hogar?";
|
||||
"household_leave_confirm_message" = "Dejarás de ver y de editar los platos y las semanas del hogar en este dispositivo.";
|
||||
"household_leave_confirm_confirm" = "Salir";
|
||||
"household_relaunch_needed" = "Cierra y vuelve a abrir MealMood para terminar el cambio.";
|
||||
"household_error_not_signed_in" = "Identifícate antes de crear o unirte a un hogar.";
|
||||
"household_error_no_household" = "Este dispositivo no pertenece a ningún hogar.";
|
||||
"household_error_invalid_code" = "Ese código no existe.";
|
||||
"household_error_expired_code" = "Ese código ha caducado. Pide uno nuevo.";
|
||||
|
||||
Reference in New Issue
Block a user