This commit is contained in:
parent
5366601bb2
commit
7cae77f946
1
main.js
1
main.js
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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: {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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}>
|
||||
|
|
|
|||
|
|
@ -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 () => {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue