Compare commits
No commits in common. "2598ecbcea060c4dd9ce9583fcffb7685394e89c" and "f24150af42136cb7f6f59c91bdd5f0c4c9f6b7cf" have entirely different histories.
2598ecbcea
...
f24150af42
21
main.js
21
main.js
|
|
@ -95,7 +95,6 @@ function createWindow() {
|
||||||
}
|
}
|
||||||
const additionalData = { myKey: 'myValue' }
|
const additionalData = { myKey: 'myValue' }
|
||||||
app.on('ready', () => {
|
app.on('ready', () => {
|
||||||
// const gotTheLock = true
|
|
||||||
const gotTheLock = app.requestSingleInstanceLock(additionalData)
|
const gotTheLock = app.requestSingleInstanceLock(additionalData)
|
||||||
if (gotTheLock) {
|
if (gotTheLock) {
|
||||||
app.getPath('crashDumps')
|
app.getPath('crashDumps')
|
||||||
|
|
@ -160,10 +159,6 @@ app.on('ready', () => {
|
||||||
startNumber++
|
startNumber++
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// 更新
|
|
||||||
ipcMain.handle('updateHandle', () => {
|
|
||||||
updateHandle()
|
|
||||||
});
|
|
||||||
// socket
|
// socket
|
||||||
ipcMain.handle('startSignalr', (event, user) => {
|
ipcMain.handle('startSignalr', (event, user) => {
|
||||||
startSignalr(user)
|
startSignalr(user)
|
||||||
|
|
@ -190,7 +185,6 @@ app.on('ready', () => {
|
||||||
connection.off('ModifyNickName');
|
connection.off('ModifyNickName');
|
||||||
connection.off('JoinChannelCallback');
|
connection.off('JoinChannelCallback');
|
||||||
connection.off('ExitSharedScreen');
|
connection.off('ExitSharedScreen');
|
||||||
connection.off('SetSpeaker');
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
ipcMain.handle('onStop', (event) => {
|
ipcMain.handle('onStop', (event) => {
|
||||||
|
|
@ -232,10 +226,6 @@ app.on('ready', () => {
|
||||||
// 退出房间
|
// 退出房间
|
||||||
await connection.invoke(str, data.roomNum)
|
await connection.invoke(str, data.roomNum)
|
||||||
break;
|
break;
|
||||||
case 'SetSpeakerCallback':
|
|
||||||
// 发言人设置成功
|
|
||||||
await connection.invoke(str, data)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
ipcMain.handle('onOtherSignalr', (event) => {
|
ipcMain.handle('onOtherSignalr', (event) => {
|
||||||
|
|
@ -404,13 +394,6 @@ app.on('ready', () => {
|
||||||
key: 'ExitSharedScreen'
|
key: 'ExitSharedScreen'
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
// 设置发言人
|
|
||||||
connection.on("SetSpeaker", (RoomManagerInputDTO) => {
|
|
||||||
mainWindow.webContents.send('onSignalr', {
|
|
||||||
key: 'SetSpeaker',
|
|
||||||
RoomManagerInputDTO
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// 放大缩小退出窗口
|
// 放大缩小退出窗口
|
||||||
|
|
@ -734,7 +717,9 @@ function updateHandle() {
|
||||||
})
|
})
|
||||||
autoUpdater.on('update-available', function (info) {
|
autoUpdater.on('update-available', function (info) {
|
||||||
let messageStr = JSON.stringify({ type: '0' })
|
let messageStr = JSON.stringify({ type: '0' })
|
||||||
sendUpdateMessage(messageStr)
|
setTimeout(() => {
|
||||||
|
sendUpdateMessage(messageStr)
|
||||||
|
}, 5000)
|
||||||
})
|
})
|
||||||
autoUpdater.on('update-not-available', function (info) {
|
autoUpdater.on('update-not-available', function (info) {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "WGShare.Metting",
|
"name": "WGShare.Metting",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.7.1",
|
"version": "0.6.5",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"authors": "yj",
|
"authors": "yj",
|
||||||
"description": "智汇享",
|
"description": "智汇享",
|
||||||
|
|
|
||||||
|
|
@ -91,10 +91,6 @@ window.electron = {
|
||||||
setEnv: (str) => {
|
setEnv: (str) => {
|
||||||
ipcRenderer.invoke('setEnv', str)
|
ipcRenderer.invoke('setEnv', str)
|
||||||
},
|
},
|
||||||
// 更新
|
|
||||||
updateHandle: () => {
|
|
||||||
ipcRenderer.invoke('updateHandle')
|
|
||||||
},
|
|
||||||
// 通知下载最新的包
|
// 通知下载最新的包
|
||||||
onDownload: (type) => {
|
onDownload: (type) => {
|
||||||
ipcRenderer.invoke('updateDownload', type)
|
ipcRenderer.invoke('updateDownload', type)
|
||||||
|
|
|
||||||
|
|
@ -260,12 +260,6 @@ const App: React.FC = () => {
|
||||||
storage.removeItem('user')
|
storage.removeItem('user')
|
||||||
navigate('/login')
|
navigate('/login')
|
||||||
}
|
}
|
||||||
} else if (e.key === 'reconnect') {
|
|
||||||
if (e.value == true) {
|
|
||||||
if (location.hash.indexOf('/meeting') === -1) {
|
|
||||||
window.electron.updateHandle()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
|
|
@ -71,20 +71,14 @@ export const PostRoomManager = (data: any) =>
|
||||||
request({
|
request({
|
||||||
url: `/room/manager`,
|
url: `/room/manager`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: {
|
data
|
||||||
...data,
|
|
||||||
SettingUserId: ''
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
export const DeleteRoomManager = (data: any) =>
|
export const DeleteRoomManager = (data: any) =>
|
||||||
request({
|
request({
|
||||||
url: `/room/manager`,
|
url: `/room/manager`,
|
||||||
method: 'delete',
|
method: 'delete',
|
||||||
data: {
|
data
|
||||||
...data,
|
|
||||||
SettingUserId: ''
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
export const GetRoomKickout = (roomNum: string, kickUid: string) =>
|
export const GetRoomKickout = (roomNum: string, kickUid: string) =>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import styles from '@/components/Avatar/index.module.scss'
|
import styles from '@/components/Avatar/index.module.scss'
|
||||||
import { memo, useImperativeHandle, forwardRef } from "react";
|
import { useState, useImperativeHandle, forwardRef } from "react";
|
||||||
const Avatar = forwardRef((props: any, ref: any) => {
|
const Avatar = forwardRef((props: any, ref: any) => {
|
||||||
useImperativeHandle(ref, () => ({
|
useImperativeHandle(ref, () => ({
|
||||||
getData: () => {
|
getData: () => {
|
||||||
|
|
@ -15,4 +15,4 @@ const Avatar = forwardRef((props: any, ref: any) => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default memo(Avatar)
|
export default Avatar
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import styles from '@/components/EquipmentManagement/index.module.scss'
|
import styles from '@/components/EquipmentManagement/index.module.scss'
|
||||||
import { getKeyOpenChildWindow } from '@/utils/package/public';
|
import { getKeyOpenChildWindow } from '@/utils/package/public';
|
||||||
import { Button, Modal, Select, Slider, message } from 'antd';
|
import { Button, Modal, Select, Slider, message } from 'antd';
|
||||||
import { useState, useImperativeHandle, forwardRef, memo } from "react";
|
import { useState, useImperativeHandle, forwardRef } from "react";
|
||||||
const EquipmentManagement = forwardRef((props: any, ref: any) => {
|
const EquipmentManagement = forwardRef((props: any, ref: any) => {
|
||||||
useImperativeHandle(ref, () => ({
|
useImperativeHandle(ref, () => ({
|
||||||
changeModal: async (uid: string, userName: string) => {
|
changeModal: async (uid: string, userName: string) => {
|
||||||
|
|
@ -116,4 +116,4 @@ const EquipmentManagement = forwardRef((props: any, ref: any) => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default memo(EquipmentManagement)
|
export default EquipmentManagement
|
||||||
|
|
@ -2,7 +2,7 @@ import { PostFeedback } from '@/api/Home/Index';
|
||||||
import styles from '@/components/FeedBackModel/index.module.scss'
|
import styles from '@/components/FeedBackModel/index.module.scss'
|
||||||
import { Button, message, Modal, Rate } from 'antd';
|
import { Button, message, Modal, Rate } from 'antd';
|
||||||
import TextArea from 'antd/es/input/TextArea';
|
import TextArea from 'antd/es/input/TextArea';
|
||||||
import { useState, useImperativeHandle, forwardRef, memo } from "react";
|
import { useState, useImperativeHandle, forwardRef } from "react";
|
||||||
const FeedBackModel = forwardRef((_props: any, ref: any) => {
|
const FeedBackModel = forwardRef((_props: any, ref: any) => {
|
||||||
useImperativeHandle(ref, () => ({
|
useImperativeHandle(ref, () => ({
|
||||||
changeModal: () => {
|
changeModal: () => {
|
||||||
|
|
@ -135,4 +135,4 @@ const FeedBackModel = forwardRef((_props: any, ref: any) => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default memo(FeedBackModel)
|
export default FeedBackModel
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import styles from '@/components/InvitingPersonnelModal/index.module.scss'
|
import styles from '@/components/InvitingPersonnelModal/index.module.scss'
|
||||||
import { Button, Checkbox, Input, Modal, Pagination, Radio, message } from 'antd';
|
import { Button, Checkbox, Input, Modal, Pagination, Radio, message } from 'antd';
|
||||||
import { useState, useImperativeHandle, forwardRef, useEffect, memo } from "react";
|
import { useState, useImperativeHandle, forwardRef, useEffect } from "react";
|
||||||
import { SearchOutlined } from '@ant-design/icons';
|
import { SearchOutlined } from '@ant-design/icons';
|
||||||
import { GetUserList } from '@/api/Home/User';
|
import { GetUserList } from '@/api/Home/User';
|
||||||
import { useLocation } from 'react-router-dom';
|
import { useLocation } from 'react-router-dom';
|
||||||
|
|
@ -197,4 +197,4 @@ const InvitingPersonnelModal = forwardRef((props: any, ref: any) => {
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
export default memo(InvitingPersonnelModal)
|
export default InvitingPersonnelModal
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import styles from '@/components/JoinMeetingModal/index.module.scss'
|
import styles from '@/components/JoinMeetingModal/index.module.scss'
|
||||||
import ImageUrl from '@/utils/package/imageUrl';
|
import ImageUrl from '@/utils/package/imageUrl';
|
||||||
import { Modal, message } from 'antd';
|
import { Modal, message } from 'antd';
|
||||||
import { useState, useImperativeHandle, forwardRef, useRef, memo } from "react";
|
import { useState, useImperativeHandle, forwardRef, useRef } from "react";
|
||||||
import Avatar from '@/components/Avatar';
|
import Avatar from '@/components/Avatar';
|
||||||
import JoinSetting from '../JoinSetting';
|
import JoinSetting from '../JoinSetting';
|
||||||
const JoinMeetingModal = forwardRef((props: any, ref: any) => {
|
const JoinMeetingModal = forwardRef((props: any, ref: any) => {
|
||||||
|
|
@ -55,4 +55,4 @@ const JoinMeetingModal = forwardRef((props: any, ref: any) => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default memo(JoinMeetingModal)
|
export default JoinMeetingModal
|
||||||
|
|
@ -3,7 +3,7 @@ import { storage } from '@/utils';
|
||||||
import ImageUrl from '@/utils/package/imageUrl';
|
import ImageUrl from '@/utils/package/imageUrl';
|
||||||
import { GetCheckoutRoomNum, GetRoomRtcToken, GetRoomInfo } from '@/api/Home/Index';
|
import { GetCheckoutRoomNum, GetRoomRtcToken, GetRoomInfo } from '@/api/Home/Index';
|
||||||
import { Button, Modal, message } from 'antd';
|
import { Button, Modal, message } from 'antd';
|
||||||
import { useState, useImperativeHandle, forwardRef, memo } from "react";
|
import { useState, useImperativeHandle, forwardRef } from "react";
|
||||||
import { PostRefresh } from '@/api/Login';
|
import { PostRefresh } from '@/api/Login';
|
||||||
import Avatar from '@/components/Avatar';
|
import Avatar from '@/components/Avatar';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
@ -236,4 +236,4 @@ const JoinSetting = forwardRef((_props: any, ref: any) => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default memo(JoinSetting)
|
export default JoinSetting
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import styles from '@/components/MeetingDisconnected/index.module.scss'
|
import styles from '@/components/MeetingDisconnected/index.module.scss'
|
||||||
import { InfoCircleOutlined } from '@ant-design/icons';
|
import { InfoCircleOutlined } from '@ant-design/icons';
|
||||||
import { useState, useImperativeHandle, forwardRef, memo } from "react";
|
import { useState, useImperativeHandle, forwardRef } from "react";
|
||||||
const MeetingDisconnected = forwardRef((props: any, ref: any) => {
|
const MeetingDisconnected = forwardRef((props: any, ref: any) => {
|
||||||
useImperativeHandle(ref, () => ({
|
useImperativeHandle(ref, () => ({
|
||||||
changeModal: (bool: boolean) => {
|
changeModal: (bool: boolean) => {
|
||||||
|
|
@ -17,4 +17,4 @@ const MeetingDisconnected = forwardRef((props: any, ref: any) => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default memo(MeetingDisconnected)
|
export default MeetingDisconnected
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import styles from '@/components/Operation/index.module.scss'
|
import styles from '@/components/Operation/index.module.scss'
|
||||||
import ImageUrl from '@/utils/package/imageUrl';
|
import ImageUrl from '@/utils/package/imageUrl';
|
||||||
import { useEffect, useState, memo } from "react";
|
import { useEffect, useState } from "react";
|
||||||
type OperationKeyType = 'minimize' | 'quit' | 'maximize' | 'unmaximize' | 'hide' | 'show';
|
type OperationKeyType = 'minimize' | 'quit' | 'maximize' | 'unmaximize' | 'hide' | 'show';
|
||||||
type OperationType = {
|
type OperationType = {
|
||||||
icon: string;
|
icon: string;
|
||||||
|
|
@ -100,4 +100,4 @@ const Operation: React.FC = () => {
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
export default memo(Operation)
|
export default Operation
|
||||||
|
|
@ -2,7 +2,7 @@ import styles from '@/components/QuitTips/index.module.scss'
|
||||||
import { storage } from '@/utils';
|
import { storage } from '@/utils';
|
||||||
import { InfoCircleOutlined } from '@ant-design/icons';
|
import { InfoCircleOutlined } from '@ant-design/icons';
|
||||||
import { Button, Checkbox, Modal, Radio } from 'antd';
|
import { Button, Checkbox, Modal, Radio } from 'antd';
|
||||||
import { useState, useImperativeHandle, forwardRef, memo } from "react";
|
import { useState, useImperativeHandle, forwardRef } from "react";
|
||||||
type OperationKeyType = 'minimize' | 'quit' | 'maximize' | 'unmaximize' | 'hide' | 'show';
|
type OperationKeyType = 'minimize' | 'quit' | 'maximize' | 'unmaximize' | 'hide' | 'show';
|
||||||
const QuitTips = forwardRef((props: any, ref: any) => {
|
const QuitTips = forwardRef((props: any, ref: any) => {
|
||||||
useImperativeHandle(ref, () => ({
|
useImperativeHandle(ref, () => ({
|
||||||
|
|
@ -66,4 +66,4 @@ const QuitTips = forwardRef((props: any, ref: any) => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default memo(QuitTips)
|
export default QuitTips
|
||||||
|
|
@ -8,7 +8,7 @@ import {
|
||||||
VerticalAlignBottomOutlined
|
VerticalAlignBottomOutlined
|
||||||
} from '@ant-design/icons';
|
} from '@ant-design/icons';
|
||||||
import { Button, Input, message, Modal, Pagination, Popconfirm, Progress, Table } from 'antd';
|
import { Button, Input, message, Modal, Pagination, Popconfirm, Progress, Table } from 'antd';
|
||||||
import { forwardRef, useEffect, useImperativeHandle, useState, useRef, memo } from "react";
|
import { forwardRef, useEffect, useImperativeHandle, useState, useRef } from "react";
|
||||||
import { DeleteRoomFile, GetRoomFile, GetRoomFileDwUrl, GetRoomUpFileurl, GetRoomUserItem, PostRoomFile } from '@/api/Meeting';
|
import { DeleteRoomFile, GetRoomFile, GetRoomFileDwUrl, GetRoomUpFileurl, GetRoomUserItem, PostRoomFile } from '@/api/Meeting';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { useLocation } from 'react-router-dom';
|
import { useLocation } from 'react-router-dom';
|
||||||
|
|
@ -393,4 +393,4 @@ const SharedFilesModel = forwardRef((props: any, ref: any) => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default memo(SharedFilesModel)
|
export default SharedFilesModel
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { GetRoomSingnIn, PostRoomSingnIn } from '@/api/Meeting';
|
||||||
import styles from '@/components/SingIn/index.module.scss'
|
import styles from '@/components/SingIn/index.module.scss'
|
||||||
import { storage } from '@/utils';
|
import { storage } from '@/utils';
|
||||||
import { Button, message, Modal } from 'antd';
|
import { Button, message, Modal } from 'antd';
|
||||||
import { useState, useImperativeHandle, forwardRef, memo } from "react";
|
import { useState, useImperativeHandle, forwardRef } from "react";
|
||||||
const SingIn = forwardRef((props: any, ref: any) => {
|
const SingIn = forwardRef((props: any, ref: any) => {
|
||||||
useImperativeHandle(ref, () => ({
|
useImperativeHandle(ref, () => ({
|
||||||
changeModal: () => {
|
changeModal: () => {
|
||||||
|
|
@ -85,4 +85,4 @@ const SingIn = forwardRef((props: any, ref: any) => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default memo(SingIn)
|
export default SingIn
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import styles from '@/components/SpeakerModeModal/index.module.scss'
|
import styles from '@/components/SpeakerModeModal/index.module.scss'
|
||||||
import { Checkbox, Modal } from 'antd';
|
import { Checkbox, Modal } from 'antd';
|
||||||
import { useState, useImperativeHandle, forwardRef, memo } from "react";
|
import { useState, useImperativeHandle, forwardRef } from "react";
|
||||||
import { storage } from '@/utils';
|
import { storage } from '@/utils';
|
||||||
import { useLocation } from 'react-router-dom';
|
import { useLocation } from 'react-router-dom';
|
||||||
import { GetSyncView } from '@/api/Meeting';
|
import { GetSyncView } from '@/api/Meeting';
|
||||||
|
|
@ -147,4 +147,4 @@ const FourScreenMode: React.FC<Props> = ({ onClick, meetingMode }) => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default memo(SpeakerModeModal)
|
export default SpeakerModeModal
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import styles from '@/components/StupWizard/index.module.scss'
|
import styles from '@/components/StupWizard/index.module.scss'
|
||||||
import ImageUrl from '@/utils/package/imageUrl';
|
import ImageUrl from '@/utils/package/imageUrl';
|
||||||
import { Button, Checkbox, Empty, Input, message, Modal, Popover, Radio, Select, Slider, Space } from 'antd';
|
import { Button, Checkbox, Empty, Input, message, Modal, Popover, Radio, Select, Slider, Space } from 'antd';
|
||||||
import { forwardRef, useEffect, useImperativeHandle, useState, memo } from "react";
|
import { forwardRef, useEffect, useImperativeHandle, useState } from "react";
|
||||||
import { agora } from '@/utils/package/agora'
|
import { agora } from '@/utils/package/agora'
|
||||||
import { CloseOutlined, LoadingOutlined, QuestionCircleOutlined } from '@ant-design/icons';
|
import { CloseOutlined, LoadingOutlined, QuestionCircleOutlined } from '@ant-design/icons';
|
||||||
import { storage } from '@/utils';
|
import { storage } from '@/utils';
|
||||||
|
|
@ -969,4 +969,4 @@ const FileComponents = () => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default memo(StupWizard)
|
export default StupWizard
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { useEffect, memo } from "react";
|
import { useEffect } from "react";
|
||||||
import '@/components/TldrawView/index.scss'
|
import '@/components/TldrawView/index.scss'
|
||||||
import {
|
import {
|
||||||
Tldraw,
|
Tldraw,
|
||||||
|
|
@ -44,4 +44,4 @@ const TldrawView: React.FC = () => {
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
export default memo(TldrawView)
|
export default TldrawView
|
||||||
|
|
@ -2,7 +2,7 @@ import styles from '@/components/UpdateModal/index.module.scss'
|
||||||
import ImageUrl from '@/utils/package/imageUrl';
|
import ImageUrl from '@/utils/package/imageUrl';
|
||||||
import { getUpdateUrl } from '@/utils/package/public';
|
import { getUpdateUrl } from '@/utils/package/public';
|
||||||
import { Button, Flex, Modal, Progress } from 'antd';
|
import { Button, Flex, Modal, Progress } from 'antd';
|
||||||
import { forwardRef, useImperativeHandle, useState, memo } from "react";
|
import { forwardRef, useImperativeHandle, useState } from "react";
|
||||||
|
|
||||||
const UpdateModal = forwardRef((props: any, ref: any) => {
|
const UpdateModal = forwardRef((props: any, ref: any) => {
|
||||||
useImperativeHandle(ref, () => ({
|
useImperativeHandle(ref, () => ({
|
||||||
|
|
@ -87,4 +87,4 @@ const UpdateModal = forwardRef((props: any, ref: any) => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default memo(UpdateModal)
|
export default UpdateModal
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { PutAlterUname } from '@/api/Meeting';
|
||||||
import styles from '@/components/UserName/index.module.scss'
|
import styles from '@/components/UserName/index.module.scss'
|
||||||
import { storage } from '@/utils';
|
import { storage } from '@/utils';
|
||||||
import { Button, Input, message, Modal } from 'antd';
|
import { Button, Input, message, Modal } from 'antd';
|
||||||
import { useState, useImperativeHandle, forwardRef, memo } from "react";
|
import { useState, useImperativeHandle, forwardRef } from "react";
|
||||||
const UserName = forwardRef((props: any, ref: any) => {
|
const UserName = forwardRef((props: any, ref: any) => {
|
||||||
useImperativeHandle(ref, () => ({
|
useImperativeHandle(ref, () => ({
|
||||||
changeModal: (data: any) => {
|
changeModal: (data: any) => {
|
||||||
|
|
@ -71,4 +71,4 @@ const UserName = forwardRef((props: any, ref: any) => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
export default memo(UserName)
|
export default UserName
|
||||||
|
|
@ -3,7 +3,7 @@ import styles from '@/components/UserVideo/index.module.scss'
|
||||||
import { GetPolling } from '@/api/Meeting';
|
import { GetPolling } from '@/api/Meeting';
|
||||||
import { agora } from '@/utils/package/agora';
|
import { agora } from '@/utils/package/agora';
|
||||||
import { Button, Empty, Select, message } from 'antd';
|
import { Button, Empty, Select, message } from 'antd';
|
||||||
import { useEffect, useState, memo } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { useLocation } from 'react-router';
|
import { useLocation } from 'react-router';
|
||||||
import { VideoStreamType } from 'agora-electron-sdk';
|
import { VideoStreamType } from 'agora-electron-sdk';
|
||||||
const { setInterval, clearInterval } = require('timers');
|
const { setInterval, clearInterval } = require('timers');
|
||||||
|
|
@ -154,4 +154,4 @@ const UserVideo: React.FC = () => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default memo(UserVideo)
|
export default UserVideo
|
||||||
|
|
|
||||||
|
|
@ -153,10 +153,10 @@ const ShareScreenWindow: React.FC = () => {
|
||||||
<>
|
<>
|
||||||
<div className={styles.shareScreenWindow} style={{ width: isExpand ? '100%' : '100%' }}>
|
<div className={styles.shareScreenWindow} style={{ width: isExpand ? '100%' : '100%' }}>
|
||||||
<div className={styles.shareScreenWindowTitle}>
|
<div className={styles.shareScreenWindowTitle}>
|
||||||
<span>{changeCurrentSeconds(timeStr)} {!isExpand ? '共享中' : ''}
|
<span>{changeCurrentSeconds(timeStr)} 共享中
|
||||||
{networkIcon(currentEffective)}
|
{networkIcon(currentEffective)}
|
||||||
<span style={{ color: 'white', marginLeft: '30px' }}>
|
<span style={{ color: 'white', marginLeft: '30px' }}>
|
||||||
{!isExpand ? <span style={{ marginRight: '10px' }}>网络质量:{networkQuality.level}</span> : ''}
|
<span style={{ marginRight: '10px' }}>网络质量:{networkQuality.level}</span>
|
||||||
<span>延迟:{networkOther.lastmileDelay}ms</span>
|
<span>延迟:{networkOther.lastmileDelay}ms</span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -223,7 +223,7 @@ const ShareScreenWindow: React.FC = () => {
|
||||||
<div className={`${styles.shareScreenWindowExpand} drag`} onClick={() => {
|
<div className={`${styles.shareScreenWindowExpand} drag`} onClick={() => {
|
||||||
setIsExpand(!isExpand)
|
setIsExpand(!isExpand)
|
||||||
window.electron.setChildWindow({
|
window.electron.setChildWindow({
|
||||||
width: isExpand ? 440 : 440 / 1.6,
|
width: isExpand ? 440 : 440 / 2,
|
||||||
key: 'shareScreenWindow',
|
key: 'shareScreenWindow',
|
||||||
})
|
})
|
||||||
}}>
|
}}>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import { SearchOutlined, EllipsisOutlined, ExclamationCircleFilled, FullscreenEx
|
||||||
import { useLocation, useNavigate } from 'react-router-dom';
|
import { useLocation, useNavigate } from 'react-router-dom';
|
||||||
import { thumbImageBufferToBase64 } from '@/utils/package/base64'
|
import { thumbImageBufferToBase64 } from '@/utils/package/base64'
|
||||||
import { storage } from '@/utils';
|
import { storage } from '@/utils';
|
||||||
import { GetRoomUser, PostOpenMicr, GetSharedScreen, PostOpenCamera, GetLeaveAll, PostRoomManager, DeleteRoomManager, GetRoomKickout, GetShowUser, PostShowUser, PostMuteAll, GetRoomUserItem, GetApplySpeak, PostSharedScreen } from '@/api/Meeting';
|
import { GetRoomUser, PostOpenMicr, PostOpenCamera, GetLeaveAll, PostRoomManager, DeleteRoomManager, GetRoomKickout, GetShowUser, PostShowUser, PostMuteAll, GetRoomUserItem, GetApplySpeak, PostSharedScreen } from '@/api/Meeting';
|
||||||
import ImageUrl from '@/utils/package/imageUrl'
|
import ImageUrl from '@/utils/package/imageUrl'
|
||||||
import { agora } from '@/utils/package/agora'
|
import { agora } from '@/utils/package/agora'
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
|
|
@ -162,7 +162,6 @@ const Meeting: React.FC = () => {
|
||||||
const [_speackUid, setSpeackUid] = useState<any>([])
|
const [_speackUid, setSpeackUid] = useState<any>([])
|
||||||
const [currentSpeakUser, setCurrentSpeakUser] = useState<any>([])
|
const [currentSpeakUser, setCurrentSpeakUser] = useState<any>([])
|
||||||
const [chatList, setChatList] = useState<any>([])
|
const [chatList, setChatList] = useState<any>([])
|
||||||
const [applyUserList, setApplyUserList] = useState<any>([])
|
|
||||||
const [isExpand, setIsExpand] = useState(false)
|
const [isExpand, setIsExpand] = useState(false)
|
||||||
const [currentVideoId, setCurrentVideoId] = useState('')
|
const [currentVideoId, setCurrentVideoId] = useState('')
|
||||||
const [currentVideoUid, setCurrentVideoUid] = useState('')
|
const [currentVideoUid, setCurrentVideoUid] = useState('')
|
||||||
|
|
@ -1023,10 +1022,6 @@ const Meeting: React.FC = () => {
|
||||||
return res
|
return res
|
||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
// 共享
|
|
||||||
case 'SetSpeaker':
|
|
||||||
window.electron.onInvoke('SetSpeakerCallback', item.RoomManagerInputDTO)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return () => {
|
return () => {
|
||||||
|
|
@ -1182,49 +1177,6 @@ const Meeting: React.FC = () => {
|
||||||
return () => clearTimeout(timer);
|
return () => clearTimeout(timer);
|
||||||
}, [isClickedMediaSteam]);
|
}, [isClickedMediaSteam]);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
let timer: NodeJS.Timeout | undefined;
|
|
||||||
if (timer) {
|
|
||||||
clearInterval(timer)
|
|
||||||
timer = undefined;
|
|
||||||
}
|
|
||||||
if (applyUserList.length) {
|
|
||||||
timer = setInterval(() => {
|
|
||||||
setRoomUserList((list: any) => {
|
|
||||||
let newApplyUserList = [...applyUserList]
|
|
||||||
newApplyUserList.forEach((item: any, index: number) => {
|
|
||||||
const user = list.find((i: any) => i.uid === item.uid)
|
|
||||||
if (user) {
|
|
||||||
if (user.isRoomManager) {
|
|
||||||
newApplyUserList.splice(index, 1)
|
|
||||||
} else {
|
|
||||||
item.status--
|
|
||||||
if (item.status <= 0) {
|
|
||||||
message.error(`设置${user.userName}发言人失败!`)
|
|
||||||
newApplyUserList.splice(index, 1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
newApplyUserList.splice(index, 1)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (newApplyUserList.length === 0) {
|
|
||||||
clearInterval(timer)
|
|
||||||
timer = undefined;
|
|
||||||
}
|
|
||||||
setApplyUserList(newApplyUserList)
|
|
||||||
return list
|
|
||||||
})
|
|
||||||
}, 1000);
|
|
||||||
} else {
|
|
||||||
if (timer) {
|
|
||||||
clearInterval(timer)
|
|
||||||
timer = undefined;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return () => timer ? clearTimeout(timer) : null;
|
|
||||||
}, [applyUserList]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const elements = document.querySelectorAll('.intersectionObserver-view');
|
const elements = document.querySelectorAll('.intersectionObserver-view');
|
||||||
if (elements.length && currentVideoId) {
|
if (elements.length && currentVideoId) {
|
||||||
|
|
@ -1729,15 +1681,8 @@ const Meeting: React.FC = () => {
|
||||||
case '共享屏幕':
|
case '共享屏幕':
|
||||||
await getUserRoomInfo().then(async (res) => {
|
await getUserRoomInfo().then(async (res) => {
|
||||||
if (res) {
|
if (res) {
|
||||||
GetSharedScreen(state.channelId).then(req => {
|
getDesktopCapturerVideo()
|
||||||
if (req.code === 200) {
|
setIsSharedScreenModal(true)
|
||||||
if (res.data) {
|
|
||||||
setIsShare(res.data)
|
|
||||||
}
|
|
||||||
getDesktopCapturerVideo()
|
|
||||||
setIsSharedScreenModal(true)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
message.error(msgTips)
|
message.error(msgTips)
|
||||||
}
|
}
|
||||||
|
|
@ -2032,13 +1977,6 @@ const Meeting: React.FC = () => {
|
||||||
roomId: data.roomId,
|
roomId: data.roomId,
|
||||||
roomNum: data.roomNum,
|
roomNum: data.roomNum,
|
||||||
userId: data.userId
|
userId: data.userId
|
||||||
}).then(res => {
|
|
||||||
if (res.code === 200) {
|
|
||||||
setApplyUserList((newChatList: any) => [...newChatList, {
|
|
||||||
uid: data.userId,
|
|
||||||
status: 5
|
|
||||||
}])
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2646,7 +2584,7 @@ const Meeting: React.FC = () => {
|
||||||
{isAdmin && currentLookUserAccount ? getSettingIcon() : null}
|
{isAdmin && currentLookUserAccount ? getSettingIcon() : null}
|
||||||
<div className={getMeetingContentBodyLeftModeClass()} id='videoView' style={meetingMode === 'SpeakerMode' && isVideoFullScreen ? { width: '0' } : {}}>
|
<div className={getMeetingContentBodyLeftModeClass()} id='videoView' style={meetingMode === 'SpeakerMode' && isVideoFullScreen ? { width: '0' } : {}}>
|
||||||
{roomUserList.map((item: any, index: number) => {
|
{roomUserList.map((item: any, index: number) => {
|
||||||
return (item.isRoom && item.isAdmin ? <div
|
return (index <= 19 && item.isRoom && item.isAdmin ? <div
|
||||||
id={item.uid}
|
id={item.uid}
|
||||||
className={`${styles.meetingContentSwiperCard} intersectionObserver-view`}
|
className={`${styles.meetingContentSwiperCard} intersectionObserver-view`}
|
||||||
key={index}
|
key={index}
|
||||||
|
|
@ -2769,7 +2707,7 @@ const Meeting: React.FC = () => {
|
||||||
</div> : null)
|
</div> : null)
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
{isAdmin > 6 ? <div>
|
{roomUserList.length > 6 ? <div>
|
||||||
{meetingMode === "StandardMode" ? <div className={`${styles.meetingContentSwiperCaret}`} style={{ left: '20px', top: '66px' }} onClick={() => {
|
{meetingMode === "StandardMode" ? <div className={`${styles.meetingContentSwiperCaret}`} style={{ left: '20px', top: '66px' }} onClick={() => {
|
||||||
const container = document.getElementById('videoView') as HTMLElement;
|
const container = document.getElementById('videoView') as HTMLElement;
|
||||||
container.scrollLeft -= 100
|
container.scrollLeft -= 100
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ export interface IElectronAPI {
|
||||||
quitAndInstall: (callBack: Function) => void;
|
quitAndInstall: (callBack: Function) => void;
|
||||||
isOpenWindows: (callBack: Function) => void;
|
isOpenWindows: (callBack: Function) => void;
|
||||||
setEnv: (str: string) => any;
|
setEnv: (str: string) => any;
|
||||||
updateHandle: () => any;
|
|
||||||
getVersion: () => Promise<string>;
|
getVersion: () => Promise<string>;
|
||||||
isVisible: () => Promise<string>;
|
isVisible: () => Promise<string>;
|
||||||
setRegistry: (uuid: string) => any;
|
setRegistry: (uuid: string) => any;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue