perf: 优化消息窗口

This commit is contained in:
kuaifan 2025-03-30 07:51:13 +08:00
parent 7fc328492b
commit 15f3f9c0e5
4 changed files with 40 additions and 37 deletions

View File

@ -2666,7 +2666,7 @@ export default {
onDialogMenu(cmd) { onDialogMenu(cmd) {
switch (cmd) { switch (cmd) {
case "single": case "single":
this.$store.dispatch('openDialogWindow', this.dialogData.id); this.$store.dispatch('openDialog', {dialog_id: this.dialogData.id, single: true});
break; break;
case "searchMsg": case "searchMsg":

View File

@ -70,7 +70,7 @@ export default {
}, },
onOpenDialog() { onOpenDialog() {
this.$store.dispatch('openDialogWindow', this.projectData.dialog_id); this.$store.dispatch('openDialog', {dialog_id: this.projectData.dialog_id, single: true});
this.toggleParameter(); this.toggleParameter();
}, },

View File

@ -1130,7 +1130,7 @@ export default {
break; break;
case 'single': case 'single':
this.$store.dispatch('openDialogWindow', this.operateItem.id); this.$store.dispatch('openDialog', {dialog_id: this.operateItem.id, single: true});
break; break;
case 'hide': case 'hide':

View File

@ -1248,28 +1248,6 @@ export default {
$A.Electron.sendMessage('openWebTabWindow', params) $A.Electron.sendMessage('openWebTabWindow', params)
}, },
/**
* 打开会话独立窗口客户端
* @param state
* @param dispatch
* @param dialogId
* @returns {Promise<void>}
*/
async openDialogWindow({state, dispatch}, dialogId) {
const dialogData = state.cacheDialogs.find(({id}) => id === dialogId) || {}
dispatch('openChildWindow', {
name: `dialog-${dialogId}`,
path: `/single/dialog/${dialogId}`,
force: false,
config: {
title: dialogData.name,
parent: null,
width: Math.min(window.screen.availWidth, 1024),
height: Math.min(window.screen.availHeight, 768),
},
});
},
/** *****************************************************************************************/ /** *****************************************************************************************/
/** ************************************** 文件 **********************************************/ /** ************************************** 文件 **********************************************/
/** *****************************************************************************************/ /** *****************************************************************************************/
@ -3048,21 +3026,18 @@ export default {
*/ */
openDialog({state, dispatch}, dialog_id) { openDialog({state, dispatch}, dialog_id) {
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
if ($A.isSubElectron) { let single_window = false
const data = $A.isJson(dialog_id) ? dialog_id : {dialog_id}
$A.syncDispatch("openDialog", data)
$A.Electron.sendMessage('mainWindowActive');
resolve()
return
}
//
let search_msg_id; let search_msg_id;
let dialog_msg_id; let dialog_msg_id;
if ($A.isJson(dialog_id)) { if ($A.isJson(dialog_id)) {
single_window = (dialog_id.single || dialog_id.single_window) && $A.Electron;
search_msg_id = dialog_id.search_msg_id; search_msg_id = dialog_id.search_msg_id;
dialog_msg_id = dialog_id.dialog_msg_id; dialog_msg_id = dialog_id.dialog_msg_id;
dialog_id = dialog_id.dialog_id; dialog_id = dialog_id.dialog_id;
} }
search_msg_id = /^\d+$/.test(search_msg_id) ? parseInt(search_msg_id) : 0;
dialog_msg_id = /^\d+$/.test(dialog_msg_id) ? parseInt(dialog_msg_id) : 0;
dialog_id = /^\d+$/.test(dialog_id) ? parseInt(dialog_id) : 0;
// //
if (dialog_id > 0 && state.cacheDialogs.findIndex(item => item.id == dialog_id) === -1) { if (dialog_id > 0 && state.cacheDialogs.findIndex(item => item.id == dialog_id) === -1) {
dispatch("showSpinner", 300) dispatch("showSpinner", 300)
@ -3076,17 +3051,45 @@ export default {
} }
} }
// //
if (single_window || $A.isSubElectron) {
dispatch('openDialogNewWindow', dialog_id);
resolve()
return
}
//
requestAnimationFrame(_ => { requestAnimationFrame(_ => {
state.dialogSearchMsgId = /^\d+$/.test(search_msg_id) ? search_msg_id : 0; state.dialogSearchMsgId = search_msg_id;
state.dialogMsgId = /^\d+$/.test(dialog_msg_id) ? dialog_msg_id : 0; state.dialogMsgId = dialog_msg_id;
state.dialogId = /^\d+$/.test(dialog_id) ? dialog_id : 0; state.dialogId = dialog_id;
resolve() resolve()
}) })
}) })
}, },
/** /**
* 打开个人会话 * 打开会话客户端新窗口
* @param state
* @param dispatch
* @param dialogId
* @returns {Promise<void>}
*/
openDialogNewWindow({state, dispatch}, dialogId) {
const dialogData = state.cacheDialogs.find(({id}) => id === dialogId) || {}
dispatch('openChildWindow', {
name: `dialog-${dialogId}`,
path: `/single/dialog/${dialogId}`,
force: false,
config: {
title: dialogData.name,
parent: null,
width: Math.min(window.screen.availWidth, 1024),
height: Math.min(window.screen.availHeight, 768),
},
});
},
/**
* 打开会话通过会员ID打开个人会话
* @param state * @param state
* @param dispatch * @param dispatch
* @param userid * @param userid