import AsyncStorage from "@react-native-async-storage/async-storage"; import { create } from "zustand"; import { createJSONStorage, persist } from "zustand/middleware"; import { isTargetPinned, togglePinnedTarget, type PinnedTabTarget } from "@/workspace-pins/target"; interface PinnedTargetsState { pinned: PinnedTabTarget[]; toggle: (target: PinnedTabTarget) => void; isPinned: (target: PinnedTabTarget) => boolean; } export const usePinnedTargetsStore = create()( persist( (set, get) => ({ pinned: [], toggle: (target) => set((state) => ({ pinned: togglePinnedTarget(state.pinned, target) })), isPinned: (target) => isTargetPinned(get().pinned, target), }), { name: "pinned-tab-targets", storage: createJSONStorage(() => AsyncStorage), partialize: (state) => ({ pinned: state.pinned }), }, ), );