perf: 优化数据

This commit is contained in:
kuaifan 2025-03-19 12:40:41 +08:00
parent ccbd904a3f
commit 8bbe9c97e9
10 changed files with 185 additions and 165 deletions

View File

@ -1272,13 +1272,13 @@ ipcMain.on('sendForwardMain', (event, args) => {
}) })
/** /**
* 窗口数据同步 * 窗口同步执行派遣
* @param args {type, payload} * @param args {type, payload}
*/ */
ipcMain.on('syncStore', (event, args) => { ipcMain.on('syncDispatch', (event, args) => {
BrowserWindow.getAllWindows().forEach(window => { BrowserWindow.getAllWindows().forEach(window => {
if (window.webContents.id !== event.sender.id) { if (window.webContents.id !== event.sender.id) {
window.webContents.send('syncStore', args) window.webContents.send('syncDispatch', args)
} }
}) })
event.returnValue = "ok" event.returnValue = "ok"

View File

@ -440,13 +440,6 @@ export default {
this.$store.dispatch("openWebTabWindow", url) this.$store.dispatch("openWebTabWindow", url)
return true return true
} }
this.$Electron.registerMsgListener('dispatch', args => {
if (!$A.isJson(args)) {
return;
}
let {action, data} = args;
this.$store.dispatch(action, data);
})
this.$Electron.registerMsgListener('browserWindowBlur', _ => { this.$Electron.registerMsgListener('browserWindowBlur', _ => {
this.$store.state.windowActive = false; this.$store.state.windowActive = false;
}) })

View File

@ -204,24 +204,36 @@ if (isElectron) {
$A.Platform = /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent) ? "ios" : "android"; $A.Platform = /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent) ? "ios" : "android";
} }
// 子窗口给主窗口发送指令相关 // 同步执行派遣
$A.execMainDispatch = (action, data) => { const dispatchId = $A.randomString(6) + "_" + Date.now().toString()
if (!$A.isSubElectron) { $A.syncDispatch = (action, data) => {
if (!isElectron) {
return false return false
} }
$A.Electron.sendMessage('sendForwardMain', { if (!$A.isJson(data)) {
channel: 'dispatch', return false
data: {action, data}, }
if (data.__sync__ === true) {
delete data.__sync__;
return false
}
$A.Electron?.sendMessage('syncDispatch', {
dispatchId,
action,
data,
}); });
return true return true
}; };
$A.Electron?.registerMsgListener('syncDispatch', async ({dispatchId: targetId, action, data}) => {
window.execMainCacheData = {} if (dispatchId === targetId) {
$A.execMainCacheJudge = (key) => { return
const val = window.execMainCacheData[key] || false }
window.execMainCacheData[key] = true if (!$A.isJson(data)) {
return val return
}; }
data.__sync__ = true
await store.dispatch(action, data)
})
// 绑定截图快捷键 // 绑定截图快捷键
$A.bindScreenshotKey = (data) => { $A.bindScreenshotKey = (data) => {

View File

@ -1282,8 +1282,8 @@ export default {
method: 'post', method: 'post',
}).then(({data}) => { }).then(({data}) => {
this.$store.dispatch("saveDialogMsg", data); this.$store.dispatch("saveDialogMsg", data);
this.$store.dispatch("increaseTaskMsgNum", data.dialog_id); this.$store.dispatch("increaseTaskMsgNum", {id: data.dialog_id});
this.$store.dispatch("increaseMsgReplyNum", data.reply_id); this.$store.dispatch("increaseMsgReplyNum", {id: data.reply_id});
this.$store.dispatch("updateDialogLastMsg", data); this.$store.dispatch("updateDialogLastMsg", data);
}).catch(({msg}) => { }).catch(({msg}) => {
$A.modalError(msg) $A.modalError(msg)

View File

@ -283,7 +283,7 @@ export default {
if (userids.length > 0) { if (userids.length > 0) {
this.getDialogUser(); this.getDialogUser();
} else { } else {
this.$store.dispatch("forgetDialog", this.dialogId); this.$store.dispatch("forgetDialog", {id: this.dialogId});
this.goForward({name: 'manage-messenger'}); this.goForward({name: 'manage-messenger'});
} }
}).catch(({msg}) => { }).catch(({msg}) => {

View File

@ -831,8 +831,8 @@ export default {
this.generateUnreadData(this.dialogId) this.generateUnreadData(this.dialogId)
// //
if (!this.isChildComponent) { if (!this.isChildComponent) {
this.$store.dispatch('forgetInDialog', this._uid) this.$store.dispatch('forgetInDialog', {uid: this._uid})
this.$store.dispatch('closeDialog', this.dialogId) this.$store.dispatch('closeDialog', {id: this.dialogId})
} }
// //
this.observers.forEach(({observer}) => observer.disconnect()) this.observers.forEach(({observer}) => observer.disconnect())
@ -1219,7 +1219,7 @@ export default {
this.getDialogBase(dialog_id) this.getDialogBase(dialog_id)
this.generateUnreadData(old_id) this.generateUnreadData(old_id)
// //
this.$store.dispatch('closeDialog', old_id) this.$store.dispatch('closeDialog', {id: old_id})
// //
window.localStorage.removeItem('__cache:vote__') window.localStorage.removeItem('__cache:vote__')
window.localStorage.removeItem('__cache:unfoldWordChain__') window.localStorage.removeItem('__cache:unfoldWordChain__')
@ -2321,8 +2321,8 @@ export default {
}) })
this.$store.dispatch("saveDialogMsg", data); this.$store.dispatch("saveDialogMsg", data);
if (!isUpdate) { if (!isUpdate) {
this.$store.dispatch("increaseTaskMsgNum", data.dialog_id); this.$store.dispatch("increaseTaskMsgNum", {id: data.dialog_id});
this.$store.dispatch("increaseMsgReplyNum", data.reply_id); this.$store.dispatch("increaseMsgReplyNum", {id: data.reply_id});
this.$store.dispatch("updateDialogLastMsg", data); this.$store.dispatch("updateDialogLastMsg", data);
} }
this.cancelQuote(); this.cancelQuote();
@ -2766,7 +2766,7 @@ export default {
} }
}).then(({msg}) => { }).then(({msg}) => {
resolve(msg); resolve(msg);
this.$store.dispatch("forgetDialog", this.dialogId); this.$store.dispatch("forgetDialog", {id: this.dialogId});
this.goForward({name: 'manage-messenger'}); this.goForward({name: 'manage-messenger'});
}).catch(({msg}) => { }).catch(({msg}) => {
reject(msg); reject(msg);
@ -2789,7 +2789,7 @@ export default {
} }
}).then(({msg}) => { }).then(({msg}) => {
resolve(msg); resolve(msg);
this.$store.dispatch("forgetDialog", this.dialogId); this.$store.dispatch("forgetDialog", {id: this.dialogId});
this.goForward({name: 'manage-messenger'}); this.goForward({name: 'manage-messenger'});
}).catch(({msg}) => { }).catch(({msg}) => {
reject(msg); reject(msg);
@ -3540,7 +3540,7 @@ export default {
}, },
}).then(() => { }).then(() => {
resolve("消息已撤回"); resolve("消息已撤回");
this.$store.dispatch("forgetDialogMsg", this.operateItem.id); this.$store.dispatch("forgetDialogMsg", this.operateItem);
}).catch(({msg}) => { }).catch(({msg}) => {
reject(msg); reject(msg);
}); });

View File

@ -1280,7 +1280,7 @@ export default {
}, },
}).then(({msg}) => { }).then(({msg}) => {
resolve(msg); resolve(msg);
this.$store.dispatch("forgetFile", item.id); this.$store.dispatch("forgetFile", item);
}).catch(({msg}) => { }).catch(({msg}) => {
reject(msg); reject(msg);
}); });
@ -1433,7 +1433,7 @@ export default {
}, },
}).then(({msg}) => { }).then(({msg}) => {
resolve(msg); resolve(msg);
this.$store.dispatch("forgetFile", ids); this.$store.dispatch("forgetFile", {id: ids});
this.selectIds = this.selectIds.filter(id => !ids.includes(id)) this.selectIds = this.selectIds.filter(id => !ids.includes(id))
}).catch(({msg}) => { }).catch(({msg}) => {
reject(msg); reject(msg);
@ -1542,7 +1542,7 @@ export default {
const isCreate = !/^\d+$/.test(item.id); const isCreate = !/^\d+$/.test(item.id);
if (isCreate) { if (isCreate) {
item.newname = '' item.newname = ''
this.$store.dispatch("forgetFile", item.id); this.$store.dispatch("forgetFile", item);
} else { } else {
this.setLoad(item.id, false) this.setLoad(item.id, false)
this.setEdit(item.id, false) this.setEdit(item.id, false)
@ -1554,7 +1554,7 @@ export default {
const isCreate = !/^\d+$/.test(item.id); const isCreate = !/^\d+$/.test(item.id);
if (!item.newname) { if (!item.newname) {
if (isCreate) { if (isCreate) {
this.$store.dispatch("forgetFile", item.id); this.$store.dispatch("forgetFile", item);
} else { } else {
this.setEdit(item.id, false) this.setEdit(item.id, false)
} }
@ -1583,14 +1583,14 @@ export default {
this.setEdit(item.id, false) this.setEdit(item.id, false)
this.$store.dispatch("saveFile", data); this.$store.dispatch("saveFile", data);
if (isCreate) { if (isCreate) {
this.$store.dispatch("forgetFile", item.id); this.$store.dispatch("forgetFile", item);
this.shakeFile(data.id); this.shakeFile(data.id);
} }
}).catch(({msg}) => { }).catch(({msg}) => {
$A.modalError(msg) $A.modalError(msg)
this.setLoad(item.id, false) this.setLoad(item.id, false)
if (isCreate) { if (isCreate) {
this.$store.dispatch("forgetFile", item.id); this.$store.dispatch("forgetFile", item);
} }
}) })
}, },

View File

@ -301,12 +301,12 @@ export default {
// 错误处理 // 错误处理
reject({ret, data, msg: msg || $A.L('未知错误')}) reject({ret, data, msg: msg || $A.L('未知错误')})
if (ret === -4001) { if (ret === -4001) {
dispatch("forgetProject", data.project_id) dispatch("forgetProject", {id: data.project_id})
} else if (ret === -4002) { } else if (ret === -4002) {
data.force === 1 && (state.taskArchiveView = 0) data.force === 1 && (state.taskArchiveView = 0)
dispatch("forgetTask", data.task_id) dispatch("forgetTask", {id: data.task_id})
} else if (ret === -4003) { } else if (ret === -4003) {
dispatch("forgetDialog", data.dialog_id) dispatch("forgetDialog", {id: data.dialog_id})
} else if (ret === -4004) { } else if (ret === -4004) {
dispatch("getTaskForParent", data.task_id).catch(() => {}) dispatch("getTaskForParent", data.task_id).catch(() => {})
} }
@ -461,10 +461,11 @@ export default {
* 显示文件打开文件所在位置 * 显示文件打开文件所在位置
* @param state * @param state
* @param dispatch * @param dispatch
* @param params * @param data
*/ */
filePos({state, dispatch}, params) { filePos({state, dispatch}, data) {
if ($A.execMainDispatch("filePos", params)) { if ($A.isSubElectron) {
$A.syncDispatch("filePos", data)
$A.Electron.sendMessage('mainWindowActive'); $A.Electron.sendMessage('mainWindowActive');
return return
} }
@ -472,7 +473,7 @@ export default {
if (state.windowPortrait) { if (state.windowPortrait) {
dispatch("openDialog", 0); dispatch("openDialog", 0);
} }
$A.goForward({name: 'manage-file', params}); $A.goForward({name: 'manage-file', params: data});
}, },
/** /**
@ -483,6 +484,8 @@ export default {
* @param data|{key, project_id} * @param data|{key, project_id}
*/ */
toggleProjectParameter({commit, state}, data) { toggleProjectParameter({commit, state}, data) {
$A.syncDispatch("toggleProjectParameter", data)
//
let key = data; let key = data;
let value = null; let value = null;
let project_id = state.projectId; let project_id = state.projectId;
@ -827,6 +830,8 @@ export default {
* @param data * @param data
*/ */
saveUserBasic({commit, state}, data) { saveUserBasic({commit, state}, data) {
$A.syncDispatch("saveUserBasic", data)
//
const index = state.cacheUserBasic.findIndex(({userid}) => userid == data.userid); const index = state.cacheUserBasic.findIndex(({userid}) => userid == data.userid);
if (index > -1) { if (index > -1) {
data = Object.assign({}, state.cacheUserBasic[index], data) data = Object.assign({}, state.cacheUserBasic[index], data)
@ -1100,7 +1105,8 @@ export default {
* Electron 页面卸载触发 * Electron 页面卸载触发
*/ */
onBeforeUnload() { onBeforeUnload() {
if (dialogDraftState.subTemp && $A.execMainDispatch("saveDialogDraft", dialogDraftState.subTemp)) { if ($A.isSubElectron && dialogDraftState.subTemp) {
$A.syncDispatch("saveDialogDraft", dialogDraftState.subTemp)
dialogDraftState.subTemp = null; dialogDraftState.subTemp = null;
} }
}, },
@ -1220,6 +1226,8 @@ export default {
* @param data * @param data
*/ */
saveFile({commit, state, dispatch}, data) { saveFile({commit, state, dispatch}, data) {
$A.syncDispatch("saveFile", data)
//
if ($A.isArray(data)) { if ($A.isArray(data)) {
data.forEach((file) => { data.forEach((file) => {
dispatch("saveFile", file); dispatch("saveFile", file);
@ -1240,15 +1248,17 @@ export default {
* @param commit * @param commit
* @param state * @param state
* @param dispatch * @param dispatch
* @param file_id * @param data
*/ */
forgetFile({commit, state, dispatch}, file_id) { forgetFile({commit, state, dispatch}, data) {
const ids = $A.isArray(file_id) ? file_id : [file_id]; $A.syncDispatch("forgetFile", data)
//
const ids = $A.isArray(data.id) ? data.id : [data.id];
ids.some(id => { ids.some(id => {
commit("file/save", state.fileLists.filter(file => file.id != id)) commit("file/save", state.fileLists.filter(file => file.id != id))
state.fileLists.some(file => { state.fileLists.some(file => {
if (file.pid == id) { if (file.pid == id) {
dispatch("forgetFile", file.id); dispatch("forgetFile", file);
} }
}); });
}) })
@ -1261,6 +1271,8 @@ export default {
* @param data * @param data
*/ */
packProgress({state, dispatch}, data) { packProgress({state, dispatch}, data) {
$A.syncDispatch("packProgress", data)
//
const index = state.filePackLists.findIndex(({name}) => name == data.name); const index = state.filePackLists.findIndex(({name}) => name == data.name);
if (index > -1) { if (index > -1) {
state.filePackLists[index].progress = data.progress; state.filePackLists[index].progress = data.progress;
@ -1334,6 +1346,8 @@ export default {
* @param data * @param data
*/ */
saveProject({commit, state, dispatch}, data) { saveProject({commit, state, dispatch}, data) {
$A.syncDispatch("saveProject", data)
//
if ($A.isArray(data)) { if ($A.isArray(data)) {
data.forEach((project) => { data.forEach((project) => {
dispatch("saveProject", project) dispatch("saveProject", project)
@ -1373,15 +1387,17 @@ export default {
* @param commit * @param commit
* @param state * @param state
* @param dispatch * @param dispatch
* @param project_id * @param data
*/ */
forgetProject({commit, state, dispatch}, project_id) { forgetProject({commit, state, dispatch}, data) {
const ids = $A.isArray(project_id) ? project_id : [project_id]; $A.syncDispatch("forgetProject", data)
//
const ids = $A.isArray(data.id) ? data.id : [data.id];
ids.some(id => { ids.some(id => {
const index = state.cacheProjects.findIndex(project => project.id == id); const index = state.cacheProjects.findIndex(project => project.id == id);
if (index > -1) { if (index > -1) {
dispatch("forgetTask", state.cacheTasks.filter(item => item.project_id == project_id).map(item => item.id)) dispatch("forgetTask", {id: state.cacheTasks.filter(item => item.project_id == data.id).map(item => item.id)})
dispatch("forgetColumn", state.cacheColumns.filter(item => item.project_id == project_id).map(item => item.id)) dispatch("forgetColumn", {id: state.cacheColumns.filter(item => item.project_id == data.id).map(item => item.id)})
commit("project/splice", {index}) commit("project/splice", {index})
state.projectTotal = Math.max(0, state.projectTotal - 1) state.projectTotal = Math.max(0, state.projectTotal - 1)
} }
@ -1392,7 +1408,7 @@ export default {
return $A.sortDay(b.top_at, a.top_at); return $A.sortDay(b.top_at, a.top_at);
} }
return b.id - a.id; return b.id - a.id;
}).find(({id}) => id && id != project_id); }).find(({id}) => id && id != data.id);
if (project) { if (project) {
$A.goForward({name: 'manage-project', params: {projectId: project.id}}); $A.goForward({name: 'manage-project', params: {projectId: project.id}});
} else { } else {
@ -1425,7 +1441,7 @@ export default {
data: callData.get() data: callData.get()
}).then(({data}) => { }).then(({data}) => {
dispatch("saveProject", data.data); dispatch("saveProject", data.data);
callData.save(data).then(ids => dispatch("forgetProject", ids)) callData.save(data).then(ids => dispatch("forgetProject", {id: ids}))
state.projectTotal = data.total_all; state.projectTotal = data.total_all;
// //
resolve(data) resolve(data)
@ -1503,7 +1519,7 @@ export default {
project_id, project_id,
}, },
}).then(result => { }).then(result => {
dispatch("forgetProject", project_id) dispatch("forgetProject", {id: project_id})
resolve(result) resolve(result)
}).catch(e => { }).catch(e => {
console.warn(e); console.warn(e);
@ -1531,7 +1547,7 @@ export default {
project_id, project_id,
}, },
}).then(result => { }).then(result => {
dispatch("forgetProject", project_id) dispatch("forgetProject", {id: project_id})
resolve(result) resolve(result)
}).catch(e => { }).catch(e => {
console.warn(e); console.warn(e);
@ -1559,7 +1575,7 @@ export default {
project_id, project_id,
}, },
}).then(result => { }).then(result => {
dispatch("forgetProject", project_id) dispatch("forgetProject", {id: project_id})
resolve(result) resolve(result)
}).catch(e => { }).catch(e => {
console.warn(e); console.warn(e);
@ -1581,6 +1597,8 @@ export default {
* @param data * @param data
*/ */
saveColumn({commit, state, dispatch}, data) { saveColumn({commit, state, dispatch}, data) {
$A.syncDispatch("saveColumn", data)
//
if ($A.isArray(data)) { if ($A.isArray(data)) {
data.forEach((column) => { data.forEach((column) => {
dispatch("saveColumn", column) dispatch("saveColumn", column)
@ -1600,15 +1618,17 @@ export default {
* @param commit * @param commit
* @param state * @param state
* @param dispatch * @param dispatch
* @param column_id * @param data
*/ */
forgetColumn({commit, state, dispatch}, column_id) { forgetColumn({commit, state, dispatch}, data) {
const ids = $A.isArray(column_id) ? column_id : [column_id]; $A.syncDispatch("forgetColumn", data)
//
const ids = $A.isArray(data.id) ? data.id : [data.id];
const project_ids = []; const project_ids = [];
ids.some(id => { ids.some(id => {
const index = state.cacheColumns.findIndex(column => column.id == id); const index = state.cacheColumns.findIndex(column => column.id == id);
if (index > -1) { if (index > -1) {
dispatch("forgetTask", state.cacheTasks.filter(item => item.column_id == column_id).map(item => item.id)) dispatch("forgetTask", {id: state.cacheTasks.filter(item => item.column_id == data.id).map(item => item.id)})
project_ids.push(state.cacheColumns[index].project_id) project_ids.push(state.cacheColumns[index].project_id)
commit("project/column/splice", {index}) commit("project/column/splice", {index})
} }
@ -1684,7 +1704,7 @@ export default {
column_id, column_id,
}, },
}).then(result => { }).then(result => {
dispatch("forgetColumn", column_id) dispatch("forgetColumn", {id: column_id})
resolve(result) resolve(result)
}).catch(e => { }).catch(e => {
console.warn(e); console.warn(e);
@ -1705,6 +1725,8 @@ export default {
* @param data * @param data
*/ */
saveTask({commit, state, dispatch}, data) { saveTask({commit, state, dispatch}, data) {
$A.syncDispatch("saveTask", data)
//
if ($A.isArray(data)) { if ($A.isArray(data)) {
data.forEach((task) => { data.forEach((task) => {
dispatch("saveTask", task) dispatch("saveTask", task)
@ -1772,10 +1794,12 @@ export default {
* @param commit * @param commit
* @param state * @param state
* @param dispatch * @param dispatch
* @param task_id * @param data
*/ */
forgetTask({commit, state, dispatch}, task_id) { forgetTask({commit, state, dispatch}, data) {
const ids = ($A.isArray(task_id) ? task_id : [task_id]).filter(id => id != state.taskArchiveView); $A.syncDispatch("forgetTask", data)
//
const ids = ($A.isArray(data.id) ? data.id : [data.id]).filter(id => id != state.taskArchiveView);
const parent_ids = []; const parent_ids = [];
const project_ids = []; const project_ids = [];
ids.some(id => { ids.some(id => {
@ -1833,14 +1857,16 @@ export default {
* 增加任务消息数量 * 增加任务消息数量
* @param state * @param state
* @param commit * @param commit
* @param dialog_id * @param data
*/ */
increaseTaskMsgNum({state, commit}, dialog_id) { increaseTaskMsgNum({state, commit}, data) {
const index = state.cacheTasks.findIndex(item => item.dialog_id === dialog_id); $A.syncDispatch("increaseTaskMsgNum", data)
//
const index = state.cacheTasks.findIndex(item => item.dialog_id === data.id);
if (index !== -1) { if (index !== -1) {
const data = $A.cloneJSON(state.cacheTasks[index]) const newData = $A.cloneJSON(state.cacheTasks[index])
data.msg_num++; newData.msg_num++;
commit("task/splice", {index, data}) commit("task/splice", {index, data: newData})
} }
}, },
@ -1848,14 +1874,16 @@ export default {
* 新增回复数量 * 新增回复数量
* @param state * @param state
* @param commit * @param commit
* @param reply_id * @param data
*/ */
increaseMsgReplyNum({state, commit}, reply_id) { increaseMsgReplyNum({state, commit}, data) {
const index = state.dialogMsgs.findIndex(m => m.id == reply_id) $A.syncDispatch("increaseMsgReplyNum", data)
//
const index = state.dialogMsgs.findIndex(m => m.id == data.id)
if (index !== -1) { if (index !== -1) {
const data = $A.cloneJSON(state.dialogMsgs[index]) const newData = $A.cloneJSON(state.dialogMsgs[index])
data.reply_num-- newData.reply_num--
commit("message/splice", {index, data}) commit("message/splice", {index, data: newData})
} }
}, },
@ -1863,14 +1891,16 @@ export default {
* 减少回复数量 * 减少回复数量
* @param state * @param state
* @param commit * @param commit
* @param reply_id * @param data
*/ */
decrementMsgReplyNum({state, commit}, reply_id) { decrementMsgReplyNum({state, commit}, data) {
const index = state.dialogMsgs.findIndex(m => m.id == reply_id) $A.syncDispatch("decrementMsgReplyNum", data)
//
const index = state.dialogMsgs.findIndex(m => m.id == data.id)
if (index !== -1) { if (index !== -1) {
const data = $A.cloneJSON(state.dialogMsgs[index]) const newData = $A.cloneJSON(state.dialogMsgs[index])
data.reply_num-- newData.reply_num--
commit("message/splice", {index, data}) commit("message/splice", {index, data: newData})
} }
}, },
@ -1905,7 +1935,7 @@ export default {
state.projectLoad--; state.projectLoad--;
} }
dispatch("saveTask", data.data); dispatch("saveTask", data.data);
callData.save(data).then(ids => dispatch("forgetTask", ids)) callData.save(data).then(ids => dispatch("forgetTask", {id: ids}))
// //
if (data.next_page_url) { if (data.next_page_url) {
requestData.page = data.current_page + 1 requestData.page = data.current_page + 1
@ -2052,7 +2082,7 @@ export default {
data, data,
}).then(result => { }).then(result => {
state.taskArchiveView = 0; state.taskArchiveView = 0;
dispatch("forgetTask", data.task_id) dispatch("forgetTask", {id: data.task_id})
resolve(result) resolve(result)
}).catch(e => { }).catch(e => {
console.warn(e); console.warn(e);
@ -2136,6 +2166,8 @@ export default {
* @param data * @param data
*/ */
saveTaskContent({commit, state, dispatch}, data) { saveTaskContent({commit, state, dispatch}, data) {
$A.syncDispatch("saveTaskContent", data)
//
if ($A.isArray(data)) { if ($A.isArray(data)) {
data.forEach(item => { data.forEach(item => {
dispatch("saveTaskContent", item) dispatch("saveTaskContent", item)
@ -2663,6 +2695,8 @@ export default {
* @param data * @param data
*/ */
saveDialog({commit, state, dispatch}, data) { saveDialog({commit, state, dispatch}, data) {
$A.syncDispatch("saveDialog", data)
//
if ($A.isArray(data)) { if ($A.isArray(data)) {
data.forEach((dialog) => { data.forEach((dialog) => {
dispatch("saveDialog", dialog) dispatch("saveDialog", dialog)
@ -2716,6 +2750,8 @@ export default {
* @param data * @param data
*/ */
updateDialogLastMsg({state, dispatch}, data) { updateDialogLastMsg({state, dispatch}, data) {
$A.syncDispatch("updateDialogLastMsg", data)
//
if ($A.isArray(data)) { if ($A.isArray(data)) {
data.forEach((msg) => { data.forEach((msg) => {
dispatch("updateDialogLastMsg", msg) dispatch("updateDialogLastMsg", msg)
@ -2806,7 +2842,7 @@ export default {
data: callData.get() data: callData.get()
}).then(({data}) => { }).then(({data}) => {
dispatch("saveDialog", data.data); dispatch("saveDialog", data.data);
callData.save(data).then(ids => dispatch("forgetDialog", ids)) callData.save(data).then(ids => dispatch("forgetDialog", {id: ids}))
// //
if (data.current_page === 1) { if (data.current_page === 1) {
dispatch("getDialogLatestMsgs", data.data.map(({id}) => id)) dispatch("getDialogLatestMsgs", data.data.map(({id}) => id))
@ -3026,14 +3062,16 @@ export default {
* @param commit * @param commit
* @param state * @param state
* @param dispatch * @param dispatch
* @param dialog_id * @param data
*/ */
forgetDialog({commit, state, dispatch}, dialog_id) { forgetDialog({commit, state, dispatch}, data) {
const ids = $A.isArray(dialog_id) ? dialog_id : [dialog_id]; $A.syncDispatch("forgetDialog", data)
//
const ids = $A.isArray(data.id) ? data.id : [data.id];
ids.some(id => { ids.some(id => {
const index = state.cacheDialogs.findIndex(dialog => dialog.id == id); const index = state.cacheDialogs.findIndex(dialog => dialog.id == id);
if (index > -1) { if (index > -1) {
dispatch("forgetDialogMsg", state.dialogMsgs.filter(item => item.dialog_id == dialog_id).map(item => item.id)) dispatch("forgetDialogMsg", {id: state.dialogMsgs.filter(item => item.dialog_id == data.id).map(item => item.id)})
commit("dialog/splice", {index}) commit("dialog/splice", {index})
} }
}) })
@ -3050,6 +3088,8 @@ export default {
* @param data {uid, dialog_id} * @param data {uid, dialog_id}
*/ */
saveInDialog({commit, state, dispatch}, data) { saveInDialog({commit, state, dispatch}, data) {
$A.syncDispatch("saveInDialog", data)
//
const index = state.dialogIns.findIndex(item => item.uid == data.uid); const index = state.dialogIns.findIndex(item => item.uid == data.uid);
if (index > -1) { if (index > -1) {
commit("dialog/in/splice", {index, data: Object.assign({}, state.dialogIns[index], data)}); commit("dialog/in/splice", {index, data: Object.assign({}, state.dialogIns[index], data)});
@ -3083,10 +3123,12 @@ export default {
* 忘记正在会话 * 忘记正在会话
* @param state * @param state
* @param commit * @param commit
* @param uid * @param data
*/ */
forgetInDialog({state, commit}, uid) { forgetInDialog({state, commit}, data) {
const index = state.dialogIns.findIndex(item => item.uid == uid); $A.syncDispatch("forgetInDialog", data)
//
const index = state.dialogIns.findIndex(item => item.uid == data.uid);
if (index > -1) { if (index > -1) {
commit("dialog/in/splice", {index}) commit("dialog/in/splice", {index})
} }
@ -3097,18 +3139,21 @@ export default {
* @param state * @param state
* @param commit * @param commit
* @param dispatch * @param dispatch
* @param dialog_id * @param data
*/ */
closeDialog({state, commit, dispatch}, dialog_id) { closeDialog({state, commit, dispatch}, data) {
if (!/^\d+$/.test(dialog_id)) { $A.syncDispatch("closeDialog", data)
// 判断参数
if (!/^\d+$/.test(data.id)) {
return return
} }
// 更新草稿标签 // 更新草稿标签
commit('draft/tag', dialog_id) commit('draft/tag', data.id)
// 关闭会话后删除会话超限消息 // 关闭会话后删除会话超限消息
const msgs = state.dialogMsgs.filter(item => item.dialog_id == dialog_id) const msgs = state.dialogMsgs.filter(item => item.dialog_id == data.id)
if (msgs.length > state.dialogMsgKeep) { if (msgs.length > state.dialogMsgKeep) {
const delIds = msgs.sort((a, b) => b.id - a.id).splice(state.dialogMsgKeep).map(item => item.id) const delIds = msgs.sort((a, b) => b.id - a.id).splice(state.dialogMsgKeep).map(item => item.id)
commit("message/save", state.dialogMsgs.filter(item => !delIds.includes(item.id))) commit("message/save", state.dialogMsgs.filter(item => !delIds.includes(item.id)))
@ -3123,6 +3168,8 @@ export default {
* @param data * @param data
*/ */
saveDialogTodo({commit, state, dispatch}, data) { saveDialogTodo({commit, state, dispatch}, data) {
$A.syncDispatch("saveDialogTodo", data)
//
if ($A.isArray(data)) { if ($A.isArray(data)) {
data.forEach(item => { data.forEach(item => {
dispatch("saveDialogTodo", item) dispatch("saveDialogTodo", item)
@ -3141,10 +3188,12 @@ export default {
* 忘记待办数据 * 忘记待办数据
* @param state * @param state
* @param commit * @param commit
* @param msg_id * @param data
*/ */
forgetDialogTodoForMsgId({state, commit}, msg_id) { forgetDialogTodoForMsgId({state, commit}, data) {
const index = state.dialogTodos.findIndex(item => item.msg_id == msg_id); $A.syncDispatch("forgetDialogTodoForMsgId", data)
//
const index = state.dialogTodos.findIndex(item => item.msg_id == data.id);
if (index > -1) { if (index > -1) {
commit('dialog/todo/splice', {index}) commit('dialog/todo/splice', {index})
} }
@ -3158,6 +3207,8 @@ export default {
* @param data * @param data
*/ */
saveDialogMsgTop({commit, state, dispatch}, data) { saveDialogMsgTop({commit, state, dispatch}, data) {
$A.syncDispatch("saveDialogMsgTop", data)
//
if ($A.isArray(data)) { if ($A.isArray(data)) {
data.forEach(item => { data.forEach(item => {
dispatch("saveDialogMsgTop", item) dispatch("saveDialogMsgTop", item)
@ -3177,10 +3228,12 @@ export default {
* 忘记消息置顶数据 * 忘记消息置顶数据
* @param state * @param state
* @param commit * @param commit
* @param msg_id * @param data
*/ */
forgetDialogMsgTopForMsgId({state, commit}, msg_id) { forgetDialogMsgTopForMsgId({state, commit}, data) {
const index = state.dialogMsgTops.findIndex(item => item.msg_id == msg_id); $A.syncDispatch("forgetDialogMsgTopForMsgId", data)
//
const index = state.dialogMsgTops.findIndex(item => item.msg_id == data.id);
if (index > -1) { if (index > -1) {
commit('dialog/msg/top/splice', {index}) commit('dialog/msg/top/splice', {index})
} }
@ -3242,6 +3295,8 @@ export default {
* @param data * @param data
*/ */
saveDialogMsg({commit, state, dispatch}, data) { saveDialogMsg({commit, state, dispatch}, data) {
$A.syncDispatch("saveDialogMsg", data)
//
if ($A.isArray(data)) { if ($A.isArray(data)) {
data.forEach((msg) => { data.forEach((msg) => {
dispatch("saveDialogMsg", msg) dispatch("saveDialogMsg", msg)
@ -3292,21 +3347,23 @@ export default {
* @param commit * @param commit
* @param state * @param state
* @param dispatch * @param dispatch
* @param msg_id * @param data
*/ */
forgetDialogMsg({commit, state, dispatch}, msg_id) { forgetDialogMsg({commit, state, dispatch}, data) {
const ids = $A.isArray(msg_id) ? msg_id : [msg_id]; $A.syncDispatch("forgetDialogMsg", data)
//
const ids = $A.isArray(data.id) ? data.id : [data.id];
ids.some(id => { ids.some(id => {
const index = state.dialogMsgs.findIndex(item => item.id == id); const index = state.dialogMsgs.findIndex(item => item.id == id);
if (index > -1) { if (index > -1) {
const msgData = state.dialogMsgs[index] const msgData = state.dialogMsgs[index]
dispatch("decrementMsgReplyNum", msgData.reply_id); dispatch("decrementMsgReplyNum", {id: msgData.reply_id});
dispatch("audioStop", $A.getObject(msgData, 'msg.path')); dispatch("audioStop", $A.getObject(msgData, 'msg.path'));
commit("message/splice", {index}) commit("message/splice", {index})
} }
}) })
dispatch("forgetDialogTodoForMsgId", msg_id) dispatch("forgetDialogTodoForMsgId", data)
dispatch("forgetDialogMsgTopForMsgId", msg_id) dispatch("forgetDialogMsgTopForMsgId", data)
}, },
/** /**
@ -3943,7 +4000,7 @@ export default {
switch (mode) { switch (mode) {
case 'delete': case 'delete':
// 删除消息 // 删除消息
dispatch("forgetDialogMsg", data.id) dispatch("forgetDialogMsg", data)
// //
const dialog = state.cacheDialogs.find(({id}) => id == dialog_id); const dialog = state.cacheDialogs.find(({id}) => id == dialog_id);
if (dialog) { if (dialog) {
@ -3972,9 +4029,9 @@ export default {
const isChat = mode === "chat" || $A.isSubElectron; const isChat = mode === "chat" || $A.isSubElectron;
if (!state.dialogMsgs.find(({id}) => id == data.id)) { if (!state.dialogMsgs.find(({id}) => id == data.id)) {
// 新增任务消息数量 // 新增任务消息数量
dispatch("increaseTaskMsgNum", data.dialog_id); dispatch("increaseTaskMsgNum", {id: data.dialog_id});
// 新增回复数量 // 新增回复数量
dispatch("increaseMsgReplyNum", data.reply_id); dispatch("increaseMsgReplyNum", {id: data.reply_id});
// //
if (!isChat) { if (!isChat) {
if (data.userid !== state.userId) { if (data.userid !== state.userId) {
@ -4045,7 +4102,7 @@ export default {
case 'groupExit': case 'groupExit':
case 'groupDelete': case 'groupDelete':
// 群组退出、解散 // 群组退出、解散
dispatch("forgetDialog", data.id) dispatch("forgetDialog", data)
break; break;
case 'updateTopMsg': case 'updateTopMsg':
// 更新置顶 // 更新置顶
@ -4078,7 +4135,7 @@ export default {
break; break;
case 'delete': case 'delete':
case 'archived': case 'archived':
dispatch("forgetProject", data.id); dispatch("forgetProject", data);
break; break;
case 'sort': case 'sort':
dispatch("getTaskForProject", data.id).catch(() => {}) dispatch("getTaskForProject", data.id).catch(() => {})
@ -4100,7 +4157,7 @@ export default {
dispatch("saveColumn", data) dispatch("saveColumn", data)
break; break;
case 'delete': case 'delete':
dispatch("forgetColumn", data.id) dispatch("forgetColumn", data)
break; break;
} }
})(msgDetail); })(msgDetail);
@ -4133,7 +4190,7 @@ export default {
dispatch("forgetTaskFile", data.id) dispatch("forgetTaskFile", data.id)
break; break;
case 'delete': case 'delete':
dispatch("forgetTask", data.id) dispatch("forgetTask", data)
break; break;
} }
})(msgDetail); })(msgDetail);
@ -4151,7 +4208,7 @@ export default {
dispatch("saveFile", data); dispatch("saveFile", data);
break; break;
case 'delete': case 'delete':
dispatch("forgetFile", data.id); dispatch("forgetFile", data);
break; break;
case 'compress': case 'compress':
dispatch("packProgress", data); dispatch("packProgress", data);

View File

@ -5,7 +5,6 @@ import state from './state'
import getters from './getters' import getters from './getters'
import actions from './actions' import actions from './actions'
import mutations from './mutations' import mutations from './mutations'
import plugins from './plugins'
Vue.use(Vuex) Vue.use(Vuex)
@ -14,5 +13,4 @@ export default new Vuex.Store({
getters, getters,
mutations, mutations,
actions, actions,
plugins,
}) })

View File

@ -1,40 +0,0 @@
/**
* electron 同步插件
* @param store
*/
const createElectronSyncPlugin = (store) => {
const {electron} = window
if (!electron) {
return
}
const sourceId = $A.randomString(6) + "_" + Date.now().toString()
let isSyncing = false
electron.registerMsgListener('syncStore', ({type, payload, sourceId: targetId}) => {
if (sourceId === targetId) {
return
}
isSyncing = true
try {
store.commit(type, payload)
} finally {
isSyncing = false
}
})
store.subscribe((mutation) => {
if (isSyncing) {
return
}
electron.sendMessage('syncStore', {
type: mutation.type,
payload: mutation.payload,
sourceId
});
});
};
export default [createElectronSyncPlugin]