import { defineStore } from 'pinia' import { ref } from 'vue' import type { User, Address } from '../types' import { getUserProfile, getAddressList } from '../api/user' export const useUserStore = defineStore('user', () => { const user = ref(null) const token = ref(uni.getStorageSync('token') || '') const addresses = ref([]) function setUser(u: User) { user.value = u } function setToken(t: string) { token.value = t uni.setStorageSync('token', t) } function logout() { user.value = null token.value = '' uni.removeStorageSync('token') } function setAddresses(list: Address[]) { addresses.value = list } /** 从后端拉取用户信息 */ async function fetchProfile() { try { const data = await getUserProfile() user.value = data } catch { // token 可能失效,静默处理 } } /** 从后端拉取收货地址列表 */ async function fetchAddresses() { try { const list = await getAddressList() addresses.value = list } catch { // 静默处理 } } return { user, token, addresses, setUser, setToken, logout, setAddresses, fetchProfile, fetchAddresses, } })