Merge branch 'new-race-mode' into test
This commit is contained in:
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
16
src/store.js
16
src/store.js
@@ -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'],
|
||||
},
|
||||
});
|
||||
|
||||
12
yarn.lock
12
yarn.lock
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user