import { create } from 'zustand'; import { query, queryLogin } from '@/modules/query'; import { toast } from 'sonner'; type UserInfo = { avatar: string; description: string | null; id: string; needChangePassword: boolean; nickname: string | null; username: string; } type UserStore = { showEdit: boolean; setShowEdit: (showEdit: boolean) => void; showNameEdit: boolean; setShowNameEdit: (showNameEdit: boolean) => void; showCheckUserExist: boolean; setShowCheckUserExist: (showCheckUserExist: boolean) => void; formData: any; setFormData: (formData: any) => void; loading: boolean; setLoading: (loading: boolean) => void; updateSelf: (data: any) => Promise; showChangePassword: boolean; setShowChangePassword: (showChangePassword: boolean) => void; }; export const useUserStore = create((set, get) => { return { showEdit: false, setShowEdit: (showEdit) => set({ showEdit }), showNameEdit: false, setShowNameEdit: (showNameEdit) => set({ showNameEdit }), showCheckUserExist: false, setShowCheckUserExist: (showCheckUserExist) => set({ showCheckUserExist }), formData: {}, setFormData: (formData) => set({ formData }), loading: false, setLoading: (loading) => set({ loading }), updateSelf: async (data) => { const res = await query.post({ path: 'user', key: 'updateSelf', data, }); if (res.code === 200) { toast.success('Success'); set({ formData: res.data }); return res.data; } else { toast.error(res.message || 'Request failed'); } }, showChangePassword: false, setShowChangePassword: (showChangePassword) => set({ showChangePassword }), }; });