import AsyncStorage from "@react-native-async-storage/async-storage"; import { create } from "zustand"; import { createJSONStorage, persist } from "zustand/middleware"; import { seedFavoriteIds } from "@/lib/data/seed"; type FavState = { ids: string[]; toggle: (id: string) => void; has: (id: string) => boolean; }; export const useFavoritesStore = create()( persist( (set, get) => ({ ids: seedFavoriteIds, toggle: (id) => { const ids = get().ids; set({ ids: ids.includes(id) ? ids.filter((x) => x !== id) : [...ids, id], }); }, has: (id) => get().ids.includes(id), }), { name: "gishen-favorites", storage: createJSONStorage(() => AsyncStorage), version: 2, migrate: (persisted: unknown) => { const state = (persisted ?? {}) as Partial; return !state.ids?.length ? { ...state, ids: seedFavoriteIds } : state; }, } ) );