yangjie #22

Merged
yangqiang merged 99 commits from yangjie into master 2024-10-22 16:11:46 +08:00
7 changed files with 125 additions and 110 deletions
Showing only changes of commit 7cae77f946 - Show all commits

View File

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

View File

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

View File

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

View File

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

View File

@ -56,8 +56,7 @@ const ShareScreenWindow: React.FC = () => {
useEffect(() => { useEffect(() => {
getRoomUser() getRoomUser()
channel.onmessage = function (event) { channel.onmessage = function (event) {
let { type, time, roomUserList, footerList, currentSpeakUserMe } = event.data; let { type, time } = event.data;
const footerListTemplate = [...footerLists];
switch (type) { switch (type) {
case 'time': case 'time':
setTimeStr(time) setTimeStr(time)
@ -65,33 +64,32 @@ const ShareScreenWindow: React.FC = () => {
setTimeStr(time++) setTimeStr(time++)
}, 1000) }, 1000)
break; 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({ channel.postMessage({
type: 'shareScreenWindowGetTime' type: 'shareScreenWindowGetTime'
}); });
window.electron.windowHandleMessageCallBack((_e: any, data: any) => { window.electron.windowHandleMessageCallBack((_e: any, data: any) => {
let domMe = document.getElementById(`micr-item-${userInfo.uid}`) as HTMLDivElement; switch (data.parmes.type) {
if (domMe) { case 'currentSpeakUserMe':
domMe.style.height = `${data.parmes.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 () => { return () => {

View File

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

View File

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