import { create } from 'zustand'; import { query } from '@/modules'; import { message } from '@/modules/message'; type ContainerStore = { showEdit: boolean; setShowEdit: (showEdit: boolean) => void; showPublish: boolean; setShowPublish: (showPublish: boolean) => void; formData: any; setFormData: (formData: any) => void; loading: boolean; setLoading: (loading: boolean) => void; list: any[]; getList: () => Promise; updateData: (data: any, opts?: { closePublish?: boolean; closeEdit?: boolean }) => Promise; deleteData: (id: string) => Promise; }; export const useContainerStore = create((set, get) => { return { showEdit: false, setShowEdit: (showEdit) => set({ showEdit }), showPublish: false, setShowPublish: (showPublish) => set({ showPublish }), formData: {}, setFormData: (formData) => set({ formData }), loading: false, setLoading: (loading) => set({ loading }), list: [], getList: async () => { set({ loading: true }); const res = await query.post({ path: 'container', key: 'list', }); set({ loading: false }); if (res.code === 200) { set({ list: res.data }); } else { message.error(res.message || 'Request failed'); } }, updateData: async (data, opts) => { const { getList } = get(); const closePublish = opts?.closePublish ?? true; const closeEdit = opts?.closeEdit ?? true; const res = await query.post({ path: 'container', key: 'update', data, }); if (res.code === 200) { message.success('Success'); set({ formData: res.data }); getList(); if (closePublish) { set({ showPublish: false }); } if (closeEdit) { set({ showEdit: false }); } } else { message.error(res.message || 'Request failed'); } return res.code === 200; }, deleteData: async (id) => { const { getList } = get(); const res = await query.post({ path: 'container', key: 'delete', id, }); if (res.code === 200) { getList(); message.success('Success'); } else { message.error(res.message || 'Request failed'); } }, }; });