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

@@ -25,6 +25,7 @@
"@dcloudio/uni-quickapp-webview": "3.0.0-4060620250520001",
"@dcloudio/uni-ui": "^1.5.11",
"pinia": "2.0.36",
"pinia-plugin-persistedstate": "^4.7.1",
"vue": "^3.4.21",
"vue-i18n": "^9.1.9"
},

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'],
},
});

View File

@@ -2565,6 +2565,11 @@ default-gateway@^6.0.3:
dependencies:
execa "^5.0.0"
defu@^6.1.4:
version "6.1.7"
resolved "https://registry.npmmirror.com/defu/-/defu-6.1.7.tgz#72543567c8e9f97ff13ce402b6dbe09ac5ae4d23"
integrity sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==
depd@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
@@ -3468,6 +3473,13 @@ pify@^2.3.0:
resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"
integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
pinia-plugin-persistedstate@^4.7.1:
version "4.7.1"
resolved "https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-4.7.1.tgz#d13880e0b7efdafd1b73fca3d73cd64ae34bde84"
integrity sha512-WHOqh2esDlR3eAaknPbqXrkkj0D24h8shrDPqysgCFR6ghqP/fpFfJmMPJp0gETHsvrh9YNNg6dQfo2OEtDnIQ==
dependencies:
defu "^6.1.4"
pinia@2.0.36:
version "2.0.36"
resolved "https://registry.npmjs.org/pinia/-/pinia-2.0.36.tgz"