Merge branch 'new-race-mode' into test

This commit is contained in:
2026-05-14 17:15:07 +08:00
5 changed files with 26 additions and 29 deletions

View File

@@ -1,10 +1,12 @@
import { createSSRApp } from 'vue'
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import App from './App.vue'
export function createApp() {
const app = createSSRApp(App)
const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)
app.use(pinia)
return {
app

View File

@@ -9,7 +9,7 @@ import Signin from "@/components/Signin.vue";
import CreateRoom from "@/components/CreateRoom.vue";
import Avatar from "@/components/Avatar.vue";
import { getRoomAPI, joinRoomAPI, getBattleDataAPI, getHomeData } from "@/apis";
import { getRoomAPI, joinRoomAPI, getBattleDataAPI } from "@/apis";
import { debounce, canEenter } from "@/util";
import useStore from "@/store";
@@ -88,26 +88,8 @@ onShow(async () => {
onLoad(async (options) => {
if (options.roomID) {
roomID.value = options.roomID;
if (user.value.id) {
// 内存中有用户状态,直接进房
enterRoom(options.roomID);
} else {
// 冷启动(如分享链接进入)时 Pinia 状态已重置,尝试用已存储的 token 静默恢复用户信息
const env = uni.getAccountInfoSync().miniProgram.envVersion;
const token = uni.getStorageSync(`${env}_token`);
if (token) {
try {
const homeData = await getHomeData();
if (homeData?.user) {
store.updateUser(homeData.user);
enterRoom(options.roomID);
return;
}
} catch {}
}
// token 不存在或已失效,弹出授权登录弹窗
showSignin.value = true;
}
if (user.value.id) enterRoom(options.roomID);
else showSignin.value = true;
}
});
</script>

View File

@@ -154,14 +154,14 @@ export default defineStore("store", {
},
},
// 开启数据持久化
// 数据持久化via pinia-plugin-persistedstate
// 仅持久化 user 和 device身份凭证需在冷启动时恢复如从分享链接进入
// config、game 等运行时状态不持久化,每次联网后重新拉取
persist: {
enabled: true,
strategies: [
{
storage: uni.getStorageSync,
paths: ["user", "device", "config"], // 只持久化用户信息
},
],
storage: {
getItem: (key) => uni.getStorageSync(key),
setItem: (key, value) => uni.setStorageSync(key, value),
},
paths: ['user', 'device'],
},
});