import { create } from 'zustand' import { fetchUserProfile, updateUserProfile, UserInfoType } from '@/services/loginService' export interface UserState { user: UserInfoType fetchUserInfo: () => Promise updateUserInfo: (userInfo: Partial) => void } export const useUser = create()((set) => ({ user: { id: 0, "openid": "", "unionid": "", "session_key": "", "nickname": "张三", "avatar_url": "https://example.com/avatar.jpg", "gender": "", "country": "", "province": "", "city": "", "language": "", "phone": "13800138000", "is_subscribed": "0", "latitude": 0, "longitude": 0, "subscribe_time": "2024-06-15 14:00:00", "last_login_time": "2024-06-15 14:00:00" }, fetchUserInfo: async () => { const res = await fetchUserProfile() console.log(res) set({ user: res.data }) }, updateUserInfo: async(userInfo: Partial) => { const res = await updateUserProfile(userInfo) set({ user: res.data }) } })) export const useUserInfo = () => useUser((state) => state.user) export const useUserActions = () => useUser((state) => ({ fetchUserInfo: state.fetchUserInfo, updateUserInfo: state.updateUserInfo }))