import { DrawerUISlice } from '@/types/stores'; import { StateCreator } from 'zustand'; export const createDrawerUISlice: StateCreator< DrawerUISlice, [], [], DrawerUISlice > = (set, get, api) => ({ // event flag untuk memicu formik validate triggerValidate: false, // dibalik untuk memicu event toggleValidate: () => { const current = get().triggerValidate; set({ triggerValidate: !current }); }, // sistem subscriber sederhana agar form bisa listen perubahan flag subscribeValidate: (callback: () => void) => { let prev = get().triggerValidate; const unsub = api.subscribe((state) => { if (state.triggerValidate !== prev) { prev = state.triggerValidate; callback(); } }); return unsub; }, isValid: false, setIsValid: (isValid: boolean) => set({ isValid }), subscribeIsValid: (callback: (isValid: boolean) => void) => { return api.subscribe((state) => { callback(Boolean(state.isValid)); }); }, });