Files
spring-festival-greetings/stores/user.js
2026-01-30 17:48:48 +08:00

67 lines
1.7 KiB
JavaScript

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();
console.log(1111, res);
if (res) {
this.setUserInfo(res);
}
} catch (e) {
console.error("fetchUserInfo error", e);
}
},
logout() {
this.userInfo = {};
this.token = "";
uni.removeStorageSync("userInfo");
uni.removeStorageSync("token");
},
},
});