This commit is contained in:
yj 2024-10-21 13:44:12 +08:00
parent 5366601bb2
commit 7cae77f946
7 changed files with 125 additions and 110 deletions

View File

@ -367,6 +367,7 @@ app.on('ready', () => {
ipcMain.handle('mainWindowCenter', () => {
mainWindowCenter()
});
// 窗口通信
ipcMain.handle('windowHandleMessage', (event, data) => {
if (childWindow[data.key]) {
childWindow[data.key].webContents.send('windowHandleMessageCallBack', data)

View File

@ -29,22 +29,22 @@ const ChatBigWindow: React.FC = () => {
useEffect(() => {
setUser(userInfo)
channel.onmessage = function (event) {
const { type, chatList, showDriverList } = event.data;
const { type, showDriverList } = event.data;
switch (type) {
case 'chatList':
setChatLists(chatList)
setTimeout(() => {
const chatBigWindowView = document.getElementById('chatBigWindowView') as HTMLElement;
if (chatBigWindowView) {
chatBigWindowView.scrollTop = chatBigWindowView.scrollHeight;
}
}, 100)
break;
case 'showDriverList':
equipmentManagementRef.current.setData(showDriverList)
break;
}
}
window.electron.windowHandleMessageCallBack((_e: any, data: any) => {
setChatLists(data.parmes.chatList)
setTimeout(() => {
const chatBigWindowView = document.getElementById('chatBigWindowView') as HTMLElement;
if (chatBigWindowView) {
chatBigWindowView.scrollTop = chatBigWindowView.scrollHeight;
}
}, 100)
})
channel.postMessage({
type: 'chatBigWindowSendChannelMsg',
chatBigWindowSendChannelMsg: {

View File

@ -8,25 +8,20 @@ const ChatSmallWindow: React.FC = () => {
const [isExpand, setIsExpand] = useState(false)
const channel = new BroadcastChannel('meeting_channel');
useEffect(() => {
channel.onmessage = function (event) {
const { type, chatListIten } = event.data;
switch (type) {
case 'chatListIten':
setChatLists((newChatList: any) => {
chatListIten.timer = setTimeout(() => {
removeItemByIndex();
}, 3000);
return [chatListIten, ...newChatList]
})
setTimeout(() => {
const chatSmallWindowView = document.getElementById('chatSmallWindowView') as HTMLElement;
if (chatSmallWindowView) {
chatSmallWindowView.scrollTop = chatSmallWindowView.scrollHeight;
}
}, 100)
break;
}
}
window.electron.windowHandleMessageCallBack((_e: any, data: any) => {
setChatLists((newChatList: any) => {
data.parmes.chatListIten.timer = setTimeout(() => {
removeItemByIndex();
}, 3000);
return [data.parmes.chatListIten, ...newChatList]
})
setTimeout(() => {
const chatSmallWindowView = document.getElementById('chatSmallWindowView') as HTMLElement;
if (chatSmallWindowView) {
chatSmallWindowView.scrollTop = chatSmallWindowView.scrollHeight;
}
}, 100)
})
return () => {
channel.close();
}

View File

@ -2,26 +2,16 @@ import styles from '@/page/Meeting/CurrentSpeakUserWindow/index.module.scss'
import { useEffect, useState } from "react";
const CurrentSpeakUserWindow: React.FC = () => {
const [inputValue, setInputValue] = useState('')
const channel = new BroadcastChannel('meeting_channel');
useEffect(() => {
channel.onmessage = function (event) {
const { type, currentSpeakUser } = event.data;
switch (type) {
case 'currentSpeakUser':
if (currentSpeakUser.length) {
setInputValue(currentSpeakUser.join(';'))
} else {
setInputValue('')
}
break;
window.electron.windowHandleMessageCallBack((_e: any, data: any) => {
if (data.parmes.currentSpeakUser.length) {
setInputValue(data.parmes.currentSpeakUser.join(';'))
} else {
setInputValue('')
}
}
return () => {
channel.close();
}
})
}, []);
return (
<>
<div className={styles.currentSpeakUserWindow}>

View File

@ -56,8 +56,7 @@ const ShareScreenWindow: React.FC = () => {
useEffect(() => {
getRoomUser()
channel.onmessage = function (event) {
let { type, time, roomUserList, footerList, currentSpeakUserMe } = event.data;
const footerListTemplate = [...footerLists];
let { type, time } = event.data;
switch (type) {
case 'time':
setTimeStr(time)
@ -65,33 +64,32 @@ const ShareScreenWindow: React.FC = () => {
setTimeStr(time++)
}, 1000)
break;
case 'roomUserList':
setRoomUserLists(roomUserList)
break;
case 'footerList':
footerListTemplate[0].title = footerList[0][0].active ? '解除静音' : '静音';
footerListTemplate[0].active = footerList[0][0].active;
footerListTemplate[1].title = footerList[0][1].active ? '开启视频' : '关闭视频';
footerListTemplate[1].active = footerList[0][1].active;
footerListTemplate[4].title = footerList[1][3].active ? '录制中' : '录制';
footerListTemplate[4].active = footerList[1][3].active;
setFooterLists(footerListTemplate)
break;
case 'currentSpeakUserMe':
let domMe = document.getElementById(`micr-item-${userInfo.uid}`) as HTMLDivElement;
if (domMe) {
domMe.style.height = `${currentSpeakUserMe}%`
}
break;
}
}
channel.postMessage({
type: 'shareScreenWindowGetTime'
});
window.electron.windowHandleMessageCallBack((_e: any, data: any) => {
let domMe = document.getElementById(`micr-item-${userInfo.uid}`) as HTMLDivElement;
if (domMe) {
domMe.style.height = `${data.parmes.currentSpeakUserMe}%`
switch (data.parmes.type) {
case 'currentSpeakUserMe':
let domMe = document.getElementById(`micr-item-${userInfo.uid}`) as HTMLDivElement;
if (domMe) {
domMe.style.height = `${data.parmes.currentSpeakUserMe}%`
}
break;
case 'footerList':
const footerListTemplate = [...footerLists];
footerListTemplate[0].title = data.parmes.footerList[0][0].active ? '解除静音' : '静音';
footerListTemplate[0].active = data.parmes.footerList[0][0].active;
footerListTemplate[1].title = data.parmes.footerList[0][1].active ? '开启视频' : '关闭视频';
footerListTemplate[1].active = data.parmes.footerList[0][1].active;
footerListTemplate[4].title = data.parmes.footerList[1][3].active ? '录制中' : '录制';
footerListTemplate[4].active = data.parmes.footerList[1][3].active;
setFooterLists(footerListTemplate)
break;
case 'roomUserList':
setRoomUserLists(data.parmes.roomUserList)
break;
}
})
return () => {

View File

@ -20,11 +20,8 @@ const UserListWindow: React.FC = () => {
useEffect(() => {
setUser(userInfo)
channel.onmessage = function (event) {
const { type, roomUserList, showDriverList } = event.data;
const { type, showDriverList } = event.data;
switch (type) {
case 'roomUserList':
setRoomUserList(roomUserList)
break;
case 'showDriverList':
equipmentManagementRef.current.setData(showDriverList)
break;
@ -33,6 +30,13 @@ const UserListWindow: React.FC = () => {
channel.postMessage({
type: 'userListWindowGetRoomUserList'
});
window.electron.windowHandleMessageCallBack((_e: any, data: any) => {
switch (data.parmes.type) {
case 'roomUserList':
setRoomUserList(data.parmes.roomUserList)
break;
}
})
return () => {
channel.close();
}

View File

@ -263,10 +263,13 @@ const Meeting: React.FC = () => {
break;
case 'shareScreenWindowGetFooterLists':
setFooterList((res: any) => {
channel.postMessage({
type: 'footerList',
footerList: res,
});
window.electron.windowHandleMessage({
key: 'shareScreenWindow',
parmes: {
footerList: res,
type: 'footerList'
}
})
return res
})
break;
@ -303,10 +306,13 @@ const Meeting: React.FC = () => {
break;
case 'userListWindowGetRoomUserList':
setRoomUserList(((res: any) => {
channel.postMessage({
type: 'roomUserList',
roomUserList: res,
});
window.electron.windowHandleMessage({
key: 'userListWindow',
parmes: {
roomUserList: res,
type: 'roomUserList'
}
})
return res
}))
break;
@ -351,9 +357,11 @@ const Meeting: React.FC = () => {
sendMsg(chatBigWindowSendChannelMsg.msg)
} else[
setChatList((res: any) => {
channel.postMessage({
type: 'chatList',
chatList: res,
window.electron.windowHandleMessage({
key: 'chatBigWindow',
parmes: {
chatList: res,
}
})
return res
})
@ -379,7 +387,12 @@ const Meeting: React.FC = () => {
usernames.push(user.userName);
}
})
storage.setItem('currentSpeakUser', JSON.stringify(usernames))
window.electron.windowHandleMessage({
key: 'currentSpeakUserWindow',
parmes: {
currentSpeakUser: usernames,
}
})
return res
});
@ -469,10 +482,12 @@ const Meeting: React.FC = () => {
useEffect(() => {
if (chatList.length) {
channel.postMessage({
type: 'chatList',
chatList,
});
window.electron.windowHandleMessage({
key: 'chatBigWindow',
parmes: {
chatList,
}
})
}
}, [chatList]);
@ -526,10 +541,12 @@ const Meeting: React.FC = () => {
setNoViewChatList(storageNoViewChatList)
}
setChatList((newChatList: any) => [...newChatList, item])
channel.postMessage({
type: 'chatListIten',
chatListIten: item,
});
window.electron.windowHandleMessage({
key: 'chatSmallWindow',
parmes: {
chatListIten: item,
}
})
setStatusList((res: any) => {
if (!res.userChatList) {
api.open({
@ -876,14 +893,27 @@ const Meeting: React.FC = () => {
observerObject.observe(element);
});
}
channel.postMessage({
type: 'roomUserList',
roomUserList,
});
channel.postMessage({
type: 'footerList',
footerList,
});
window.electron.windowHandleMessage({
key: 'shareScreenWindow',
parmes: {
footerList,
type: 'footerList'
}
})
window.electron.windowHandleMessage({
key: 'shareScreenWindow',
parmes: {
roomUserList,
type: 'roomUserList'
}
})
window.electron.windowHandleMessage({
key: 'userListWindow',
parmes: {
roomUserList,
type: 'roomUserList'
}
})
return () => {
elements.forEach(element => {
observer?.unobserve(element);
@ -964,6 +994,7 @@ const Meeting: React.FC = () => {
key: 'shareScreenWindow',
parmes: {
currentSpeakUserMe: percentage,
type: 'currentSpeakUserMe'
}
})
}
@ -1644,12 +1675,6 @@ const Meeting: React.FC = () => {
case 'meetingMode':
setMeetingMode(e.value)
break;
case 'currentSpeakUser':
channel.postMessage({
type: 'currentSpeakUser',
currentSpeakUser: JSON.parse(e.value),
});
break;
case 'quitMeeting':
if (e.value) {
setQuitMeetingModal(true)
@ -1694,10 +1719,12 @@ const Meeting: React.FC = () => {
timestamp: +new Date()
}
setChatList((newChatList: any) => [...newChatList, item])
channel.postMessage({
type: 'chatListIten',
chatListIten: item,
});
window.electron.windowHandleMessage({
key: 'chatSmallWindow',
parmes: {
chatListIten: item,
}
})
setTextMsg('');
chatScrollBotton()
} else {