From 9ae278d622250638b71ffc81913fd27740d5785b Mon Sep 17 00:00:00 2001 From: Pang Date: Wed, 3 Apr 2024 06:26:27 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/WebSocketService.php | 1 + resources/assets/js/store/actions.js | 148 +++++++++++++++------------ 2 files changed, 82 insertions(+), 67 deletions(-) diff --git a/app/Services/WebSocketService.php b/app/Services/WebSocketService.php index d9ce8d127..db78da6ba 100644 --- a/app/Services/WebSocketService.php +++ b/app/Services/WebSocketService.php @@ -62,6 +62,7 @@ class WebSocketService implements WebSocketHandlerInterface 'type' => 'open', 'data' => [ 'fd' => $fd, + 'ud' => $user->userid, ], ])); // 通知上线 diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 0b215589b..ba121283e 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -14,7 +14,7 @@ export default { return new Promise(async resolve => { let action = null - // 清理缓存 + // 清理缓存、读取缓存 const clearCache = await $A.IDBString("clearCache") if (clearCache) { if (clearCache === "handle") { @@ -26,40 +26,8 @@ export default { const cacheVersion = await $A.IDBString("cacheVersion") if (cacheVersion !== state.cacheVersion) { await dispatch("handleClearCache") - } - - // 读取缓存 - state.clientId = await $A.IDBString("clientId") - state.cacheServerUrl = await $A.IDBString("cacheServerUrl") - state.cacheUserBasic = await $A.IDBArray("cacheUserBasic") - state.cacheDialogs = (await $A.IDBArray("cacheDialogs")).map(item => Object.assign(item, {loading: false, extra_draft_has: item.extra_draft_content ? 1 : 0})) - state.cacheProjects = await $A.IDBArray("cacheProjects") - state.cacheColumns = await $A.IDBArray("cacheColumns") - state.cacheTasks = await $A.IDBArray("cacheTasks") - state.cacheProjectParameter = await $A.IDBArray("cacheProjectParameter") - state.cacheTaskBrowse = await $A.IDBArray("cacheTaskBrowse") - state.dialogMsgs = await $A.IDBArray("dialogMsgs") - state.fileLists = await $A.IDBArray("fileLists") - state.userInfo = await $A.IDBJson("userInfo") - state.callAt = await $A.IDBArray("callAt") - state.cacheEmojis = await $A.IDBArray("cacheEmojis") - - // 会员信息 - if (state.userInfo.userid) { - state.userId = state.userInfo.userid = $A.runNum(state.userInfo.userid) - state.userToken = state.userInfo.token - state.userIsAdmin = $A.inArray("admin", state.userInfo.identity) - } - const localId = $A.runNum(window.localStorage.getItem("__system:userId__")) - const localToken = window.localStorage.getItem("__system:userToken__") || "" - if (state.userId === 0 && localId && localToken) { - state.userId = localId - state.userToken = localToken - } - - // ServerUrl - if (state.cacheServerUrl) { - window.systemInfo.apiUrl = state.cacheServerUrl + } else { + await dispatch("handleReadCache") } // 主题皮肤 @@ -887,43 +855,89 @@ export default { */ handleClearCache({state, dispatch}, userData) { return new Promise(async resolve => { - try { - // localStorage - const themeConf = window.localStorage.getItem("__system:themeConf__"); - const languageName = window.localStorage.getItem("__system:languageName__"); - const keyboardConf = window.localStorage.getItem("__system:keyboardConf__"); - window.localStorage.clear(); - window.localStorage.setItem("__system:themeConf__", themeConf) - window.localStorage.setItem("__system:languageName__", languageName) - window.localStorage.setItem("__system:keyboardConf__", keyboardConf) + // localStorage + const themeConf = window.localStorage.getItem("__system:themeConf__"); + const languageName = window.localStorage.getItem("__system:languageName__"); + const keyboardConf = window.localStorage.getItem("__system:keyboardConf__"); + window.localStorage.clear(); + window.localStorage.setItem("__system:themeConf__", themeConf) + window.localStorage.setItem("__system:languageName__", languageName) + window.localStorage.setItem("__system:keyboardConf__", keyboardConf) - // localForage - const clientId = await $A.IDBString("clientId") - const cacheServerUrl = await $A.IDBString("cacheServerUrl") - const cacheProjectParameter = await $A.IDBArray("cacheProjectParameter") - const cacheLoginEmail = await $A.IDBString("cacheLoginEmail"); - const cacheFileSort = await $A.IDBJson("cacheFileSort"); - const cacheTaskBrowse = await $A.IDBArray("cacheTaskBrowse") - const cacheEmojis = await $A.IDBArray("cacheEmojis") - const userInfo = await $A.IDBJson("userInfo") - await $A.IDBClear(); - await $A.IDBSet("clientId", clientId); - await $A.IDBSet("cacheServerUrl", cacheServerUrl); - await $A.IDBSet("cacheProjectParameter", cacheProjectParameter); - await $A.IDBSet("cacheLoginEmail", cacheLoginEmail); - await $A.IDBSet("cacheFileSort", cacheFileSort); - await $A.IDBSet("cacheTaskBrowse", cacheTaskBrowse); - await $A.IDBSet("cacheEmojis", cacheEmojis); - await $A.IDBSet("cacheVersion", state.cacheVersion) + // localForage + const clientId = await $A.IDBString("clientId") + const cacheServerUrl = await $A.IDBString("cacheServerUrl") + const cacheProjectParameter = await $A.IDBArray("cacheProjectParameter") + const cacheLoginEmail = await $A.IDBString("cacheLoginEmail"); + const cacheFileSort = await $A.IDBJson("cacheFileSort"); + const cacheTaskBrowse = await $A.IDBArray("cacheTaskBrowse") + const cacheEmojis = await $A.IDBArray("cacheEmojis") + const userInfo = await $A.IDBJson("userInfo") + await $A.IDBClear(); + await $A.IDBSet("clientId", clientId); + await $A.IDBSet("cacheServerUrl", cacheServerUrl); + await $A.IDBSet("cacheProjectParameter", cacheProjectParameter); + await $A.IDBSet("cacheLoginEmail", cacheLoginEmail); + await $A.IDBSet("cacheFileSort", cacheFileSort); + await $A.IDBSet("cacheTaskBrowse", cacheTaskBrowse); + await $A.IDBSet("cacheEmojis", cacheEmojis); + await $A.IDBSet("cacheVersion", state.cacheVersion) - // userInfo - dispatch("saveUserInfoBase", $A.isJson(userData) ? userData : userInfo).then(resolve); - } catch (e) { - resolve() - } + // userInfo + await dispatch("saveUserInfoBase", $A.isJson(userData) ? userData : userInfo) + + // readCache + await dispatch("handleReadCache") + + resolve() }); }, + /** + * 读取缓存 + * @param state + * @param dispatch + * @returns {Promise} + */ + handleReadCache({state}) { + return new Promise(async resolve => { + state.clientId = await $A.IDBString("clientId") + state.cacheServerUrl = await $A.IDBString("cacheServerUrl") + state.cacheUserBasic = await $A.IDBArray("cacheUserBasic") + state.cacheDialogs = (await $A.IDBArray("cacheDialogs")).map(item => Object.assign(item, {loading: false, extra_draft_has: item.extra_draft_content ? 1 : 0})) + state.cacheProjects = await $A.IDBArray("cacheProjects") + state.cacheColumns = await $A.IDBArray("cacheColumns") + state.cacheTasks = await $A.IDBArray("cacheTasks") + state.cacheProjectParameter = await $A.IDBArray("cacheProjectParameter") + state.cacheTaskBrowse = await $A.IDBArray("cacheTaskBrowse") + state.dialogMsgs = await $A.IDBArray("dialogMsgs") + state.fileLists = await $A.IDBArray("fileLists") + state.userInfo = await $A.IDBJson("userInfo") + state.callAt = await $A.IDBArray("callAt") + state.cacheEmojis = await $A.IDBArray("cacheEmojis") + + // 会员信息 + if (state.userInfo.userid) { + state.userId = state.userInfo.userid = $A.runNum(state.userInfo.userid) + state.userToken = state.userInfo.token + state.userIsAdmin = $A.inArray("admin", state.userInfo.identity) + } + const localId = $A.runNum(window.localStorage.getItem("__system:userId__")) + const localToken = window.localStorage.getItem("__system:userToken__") || "" + if (state.userId === 0 && localId && localToken) { + state.userId = localId + state.userToken = localToken + } + + // ServerUrl + if (state.cacheServerUrl) { + window.systemInfo.apiUrl = state.cacheServerUrl + } + + resolve() + }) + }, + /** *****************************************************************************************/ /** *************************************** 新窗口打开 ****************************************/ /** *****************************************************************************************/