import { defineStore } from "pinia"; import { wxLogin, wxGetUserProfile } from "@/utils/login.js"; import { getPlatformProvider } from "@/utils/system"; import { getUserInfo } from "@/api/auth.js"; export const useUserStore = defineStore("user", { state: () => ({ token: "", userInfo: {}, }), actions: { setToken(token) { this.token = token; uni.setStorageSync("token", token); // 持久化 tokenx }, setUserInfo(userInfo) { this.userInfo = userInfo; uni.setStorageSync("userInfo", JSON.stringify(userInfo)); // 持久化用户信息 }, loadFromStorage() { const token = uni.getStorageSync("token"); const userInfoStr = uni.getStorageSync("userInfo"); if (token) this.token = token; if (userInfoStr) { try { this.userInfo = JSON.parse(userInfoStr); } catch (e) { this.userInfo = {}; } } }, clear() { this.token = ""; this.userInfo = {}; uni.removeStorageSync("token"); uni.removeStorageSync("userInfo"); }, loadUserInfo() { const userStr = uni.getStorageSync("userInfo"); if (userStr) { try { this.userInfo = JSON.parse(userStr); } catch (e) { this.userInfo = {}; } } }, async fetchUserInfo() { try { const res = await getUserInfo(); if (res) { this.setUserInfo(res); } } catch (e) { console.error("fetchUserInfo error", e); } }, logout() { this.userInfo = {}; this.token = ""; uni.removeStorageSync("userInfo"); uni.removeStorageSync("token"); }, }, });