diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 903c2fe10..63652ae97 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -3,7 +3,7 @@ import {initLanguage, languageList, languageName} from "../language"; import {$callData, $urlSafe, SSEClient} from './utils' import emitter from "./events"; -const saveDraftTimers = {} +const dialogDraftState = { timer: {}, subTemp: null } export default { /** @@ -1001,6 +1001,12 @@ export default { loading: false, })); + // 特殊处理dialogDrafts + state.dialogDrafts = state.dialogDrafts.filter(item => !!item.content).map(item => ({ + ...item, + tag: !!item.content, + })); + // TranslationLanguage检查 if (typeof languageList[state.cacheTranslationLanguage] === "undefined") { state.cacheTranslationLanguage = languageName; @@ -1029,12 +1035,11 @@ export default { /** * Electron 页面卸载触发 - * @param commit */ - onBeforeUnload({commit}) { - if ($A.isSubElectron && $A.isJson(window.__dialogDraft)) { - commit('SET_DIALOG_DRAFT', window.__dialogDraft) - window.__dialogDraft = null; + onBeforeUnload() { + if ($A.isSubElectron && dialogDraftState.subTemp) { + $A.execMainDispatch("saveDialogDraft", dialogDraftState.subTemp) + dialogDraftState.subTemp = null; } }, @@ -3181,25 +3186,25 @@ export default { * @param commit * @param id * @param content + * @param immediate */ - saveDialogDraft({commit}, {id, content}) { + saveDialogDraft({commit}, {id, content, immediate = false}) { if ($A.isSubElectron) { - window.__dialogDraft = {id, content} + dialogDraftState.subTemp = {id, content, immediate: true} return } // 清除已有的计时器 - if (saveDraftTimers[id]) { - clearTimeout(saveDraftTimers[id]) - delete saveDraftTimers[id] + if (dialogDraftState.timer[id]) { + clearTimeout(dialogDraftState.timer[id]) + delete dialogDraftState.timer[id] } // 创建新的计时器 - saveDraftTimers[id] = setTimeout(() => { + dialogDraftState.timer[id] = setTimeout(() => { commit('SET_DIALOG_DRAFT', {id, content}) - delete saveDraftTimers[id] - resolve() - }, content ? 600 : 0) + delete dialogDraftState.timer[id] + }, (immediate || !content) ? 0 : 600) }, /** *****************************************************************************************/ diff --git a/resources/assets/js/store/mutations.js b/resources/assets/js/store/mutations.js index 565419348..6fbc2bdb6 100644 --- a/resources/assets/js/store/mutations.js +++ b/resources/assets/js/store/mutations.js @@ -7,14 +7,22 @@ export default { content: $A.filterInvalidLine(content), time: new Date().getTime() } + if (index === -1 && !item.content) { + return + } + + // 草稿标签 + if (state.dialogId == id) { + item.tag = index !== -1 ? state.dialogDrafts[index].tag : false + } else { + item.tag = !!item.content + } if (index !== -1) { // 更新已存在的草稿 - item.tag = state.dialogDrafts[index].tag state.dialogDrafts.splice(index, 1, item) } else { // 添加新草稿 - item.tag = state.dialogId != id state.dialogDrafts.push(item) } @@ -22,8 +30,11 @@ export default { $A.IDBSave("dialogDrafts", state.dialogDrafts) }, - // 显示草稿标签 + // 草稿标签 TAG_DIALOG_DRAFT(state, id) { + if (state.dialogId == id) { + return + } const index = state.dialogDrafts.findIndex(item => item.id === id) if (index !== -1) { state.dialogDrafts[index].tag = !!state.dialogDrafts[index].content