yangjie #22
1
main.js
1
main.js
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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':
|
case 'showDriverList':
|
||||||
setChatLists(chatList)
|
equipmentManagementRef.current.setData(showDriverList)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
window.electron.windowHandleMessageCallBack((_e: any, data: any) => {
|
||||||
|
setChatLists(data.parmes.chatList)
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
const chatBigWindowView = document.getElementById('chatBigWindowView') as HTMLElement;
|
const chatBigWindowView = document.getElementById('chatBigWindowView') as HTMLElement;
|
||||||
if (chatBigWindowView) {
|
if (chatBigWindowView) {
|
||||||
chatBigWindowView.scrollTop = chatBigWindowView.scrollHeight;
|
chatBigWindowView.scrollTop = chatBigWindowView.scrollHeight;
|
||||||
}
|
}
|
||||||
}, 100)
|
}, 100)
|
||||||
break;
|
})
|
||||||
case 'showDriverList':
|
|
||||||
equipmentManagementRef.current.setData(showDriverList)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
channel.postMessage({
|
channel.postMessage({
|
||||||
type: 'chatBigWindowSendChannelMsg',
|
type: 'chatBigWindowSendChannelMsg',
|
||||||
chatBigWindowSendChannelMsg: {
|
chatBigWindowSendChannelMsg: {
|
||||||
|
|
|
||||||
|
|
@ -8,15 +8,12 @@ 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;
|
|
||||||
switch (type) {
|
|
||||||
case 'chatListIten':
|
|
||||||
setChatLists((newChatList: any) => {
|
setChatLists((newChatList: any) => {
|
||||||
chatListIten.timer = setTimeout(() => {
|
data.parmes.chatListIten.timer = setTimeout(() => {
|
||||||
removeItemByIndex();
|
removeItemByIndex();
|
||||||
}, 3000);
|
}, 3000);
|
||||||
return [chatListIten, ...newChatList]
|
return [data.parmes.chatListIten, ...newChatList]
|
||||||
})
|
})
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
const chatSmallWindowView = document.getElementById('chatSmallWindowView') as HTMLElement;
|
const chatSmallWindowView = document.getElementById('chatSmallWindowView') as HTMLElement;
|
||||||
|
|
@ -24,9 +21,7 @@ const ChatSmallWindow: React.FC = () => {
|
||||||
chatSmallWindowView.scrollTop = chatSmallWindowView.scrollHeight;
|
chatSmallWindowView.scrollTop = chatSmallWindowView.scrollHeight;
|
||||||
}
|
}
|
||||||
}, 100)
|
}, 100)
|
||||||
break;
|
})
|
||||||
}
|
|
||||||
}
|
|
||||||
return () => {
|
return () => {
|
||||||
channel.close();
|
channel.close();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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':
|
|
||||||
if (currentSpeakUser.length) {
|
|
||||||
setInputValue(currentSpeakUser.join(';'))
|
|
||||||
} else {
|
} else {
|
||||||
setInputValue('')
|
setInputValue('')
|
||||||
}
|
}
|
||||||
break;
|
})
|
||||||
}
|
|
||||||
}
|
|
||||||
return () => {
|
|
||||||
channel.close();
|
|
||||||
}
|
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className={styles.currentSpeakUserWindow}>
|
<div className={styles.currentSpeakUserWindow}>
|
||||||
|
|
|
||||||
|
|
@ -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,34 +64,33 @@ 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) => {
|
||||||
|
switch (data.parmes.type) {
|
||||||
|
case 'currentSpeakUserMe':
|
||||||
let domMe = document.getElementById(`micr-item-${userInfo.uid}`) as HTMLDivElement;
|
let domMe = document.getElementById(`micr-item-${userInfo.uid}`) as HTMLDivElement;
|
||||||
if (domMe) {
|
if (domMe) {
|
||||||
domMe.style.height = `${data.parmes.currentSpeakUserMe}%`
|
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 () => {
|
||||||
clearInterval(timeout)
|
clearInterval(timeout)
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
|
parmes: {
|
||||||
footerList: res,
|
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',
|
||||||
|
parmes: {
|
||||||
roomUserList: res,
|
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',
|
||||||
|
parmes: {
|
||||||
chatList: res,
|
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',
|
||||||
|
parmes: {
|
||||||
chatList,
|
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',
|
||||||
|
parmes: {
|
||||||
chatListIten: item,
|
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: {
|
||||||
});
|
|
||||||
channel.postMessage({
|
|
||||||
type: 'footerList',
|
|
||||||
footerList,
|
footerList,
|
||||||
});
|
type: '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',
|
||||||
|
parmes: {
|
||||||
chatListIten: item,
|
chatListIten: item,
|
||||||
});
|
}
|
||||||
|
})
|
||||||
setTextMsg('');
|
setTextMsg('');
|
||||||
chatScrollBotton()
|
chatScrollBotton()
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue