import AsyncStorage from "@react-native-async-storage/async-storage"; import { create } from "zustand"; import { createJSONStorage, persist } from "zustand/middleware"; import { seedFamily } from "@/lib/data/seed"; export type FamilyMember = { id: string; name: string; relationship: "spouse" | "child" | "parent" | "other"; phone?: string; status: "pending" | "accepted"; }; type FamilyState = { members: FamilyMember[]; activeMemberId: string | null; inviteCode: string; addMember: (m: Omit) => void; acceptInvite: (id: string) => void; removeMember: (id: string) => void; setActiveMember: (id: string | null) => void; }; export const useFamilyStore = create()( persist( (set, get) => ({ members: seedFamily, activeMemberId: "fam_demo_sara", inviteCode: "FAM-GISHEN", addMember: (m) => set({ members: [ { ...m, id: `fam_${Date.now()}`, status: "pending", }, ...get().members, ], }), acceptInvite: (id) => set({ members: get().members.map((m) => m.id === id ? { ...m, status: "accepted" } : m ), }), removeMember: (id) => set({ members: get().members.filter((m) => m.id !== id), activeMemberId: get().activeMemberId === id ? null : get().activeMemberId, }), setActiveMember: (id) => set({ activeMemberId: id }), }), { name: "gishen-family", storage: createJSONStorage(() => AsyncStorage), version: 2, migrate: (persisted: unknown) => { const state = (persisted ?? {}) as Partial; return !state.members?.length ? { ...state, members: seedFamily, activeMemberId: "fam_demo_sara" } : state; }, } ) );