From a29784bb265e6b5af09e4d46f86fda369e1e1db1 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Fri, 6 Dec 2024 17:25:28 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E9=98=B2=E6=AD=A2=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E5=A4=9A=E4=B8=AA=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index 4b316bc..5cec9f8 100644 --- a/main.js +++ b/main.js @@ -25,6 +25,7 @@ let env; let regKey; let connection = null; let envStr; +let startNumber = 0; class AppWindow extends BrowserWindow { constructor(config) { @@ -145,7 +146,10 @@ app.on('ready', () => { setInterval(() => { updateHandle() // 每一小时检查更新 }, 1000 * 60 * 60) - createTray() + if (startNumber === 0) { + createTray() + startNumber++ + } }); // socket ipcMain.handle('startSignalr', (event, user) => { From 844547d8534fffa1d8115caf9fb958138d60e895 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Fri, 6 Dec 2024 17:26:02 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/main.js b/main.js index 5cec9f8..b13d136 100644 --- a/main.js +++ b/main.js @@ -142,11 +142,11 @@ app.on('ready', () => { }); ipcMain.handle('setEnv', (event, str) => { envStr = str; - updateHandle() // 检查更新 - setInterval(() => { - updateHandle() // 每一小时检查更新 - }, 1000 * 60 * 60) if (startNumber === 0) { + updateHandle() // 检查更新 + setInterval(() => { + updateHandle() // 每一小时检查更新 + }, 1000 * 60 * 60) createTray() startNumber++ } From 9619230cf8cb4422d6f9ac79e940793e3f4bd848 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Fri, 6 Dec 2024 18:00:24 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/page/Meeting/index.tsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index bf368ba..9341e82 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -1628,6 +1628,14 @@ const Meeting: React.FC = () => { // 分享屏幕 const clickSharedScreen = async (): Promise => { let data = sharedScreenList.find((item: any) => item.sourceId === sharedScreenItem.sourceId) + const elements = document.querySelectorAll('.intersectionObserver-view'); + if (elements.length) { + elements.forEach(item => { + if (item.id !== userInfo.uid) { + agora.muteRemoteVideoStreamEx(Number(item.id), true) + } + }); + } if (data) { const footerListTemplate = [...footerList] footerListTemplate[footerListIndex.itemIndex][footerListIndex.rowIndex].title = '停止共享' From 4528696ec7febc70860c87dd897d881a1850d5dc Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Mon, 9 Dec 2024 11:01:13 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/package/agora.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index 041dab9..27577a4 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -27,6 +27,7 @@ import { GetRoomRtcToken, GetAgoraConf } from "@/api/Home/Index"; import { storage } from '@/utils'; import { role } from "@/config/role"; import path from "path"; +import os from "os"; const option: any = { appId: '', token: '', @@ -44,6 +45,7 @@ export const agora = { rtcEngine = createAgoraRtcEngine(); await rtcEngine.initialize({ appId: data, + logConfig: { filePath: path.resolve(os.homedir(), "./errorAgora.log") } }); if (bool) { await agora.setDeviceManager() From 234665d08d03de3e9de4af36e0e6117915130236 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Mon, 9 Dec 2024 11:09:27 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/package/agora.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index 27577a4..8815712 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -27,7 +27,7 @@ import { GetRoomRtcToken, GetAgoraConf } from "@/api/Home/Index"; import { storage } from '@/utils'; import { role } from "@/config/role"; import path from "path"; -import os from "os"; +const os = require("os"); const option: any = { appId: '', token: '', From a20c833de0b3908334cfa1691c40c8c5a6285b09 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Mon, 9 Dec 2024 11:20:47 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=90=8D=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/package/agora.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index 8815712..4295900 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -45,7 +45,7 @@ export const agora = { rtcEngine = createAgoraRtcEngine(); await rtcEngine.initialize({ appId: data, - logConfig: { filePath: path.resolve(os.homedir(), "./errorAgora.log") } + logConfig: { filePath: path.resolve(os.homedir(), "./agorasdk.log") } }); if (bool) { await agora.setDeviceManager() From 4fbcf0e3196f26dc04b51a8bf0ce4fd9f533ae3d Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Mon, 9 Dec 2024 11:51:41 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/main.js b/main.js index b13d136..48e23c6 100644 --- a/main.js +++ b/main.js @@ -8,6 +8,7 @@ const { ipcMain, clipboard, dialog, + crashReporter, desktopCapturer, } = require('electron'); const path = require('node:path') @@ -100,6 +101,11 @@ const additionalData = { myKey: 'myValue' } app.on('ready', () => { const gotTheLock = app.requestSingleInstanceLock(additionalData) if (gotTheLock) { + app.getPath('crashDumps') + crashReporter.start({ + uploadToServer: false, + ignoreSystemCrashHandler: false + }) env = process.argv.find((arg) => arg.startsWith('--env='))?.split('=')[1]; if (env === 'development') { Object.defineProperty(app, 'isPackaged', { From 5fb95d6a1538d73959198f7208c27a2f0ef6fb74 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Mon, 9 Dec 2024 13:58:11 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/page/Meeting/index.tsx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 9341e82..02396dd 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -914,12 +914,18 @@ const Meeting: React.FC = () => { observer?.unobserve(element); }); const observerObject = new IntersectionObserver(async (entries: IntersectionObserverEntry[], _observer: IntersectionObserver) => { - entries.forEach(async (entry) => { - if (entry.target.id !== user.uid) { - await agora.muteRemoteVideoStreamEx(Number(entry.target.id), !entry.isIntersecting) - } - }); - await agora.muteRemoteVideoStreamEx(Number(currentVideoId), false) + setIsScreenCapture((bool: boolean) => { + entries.forEach(async (entry) => { + if (entry.target.id !== user.uid) { + await agora.muteRemoteVideoStreamEx(Number(entry.target.id), bool ? true : !entry.isIntersecting) + } + }); + return bool + }) + setIsScreenCapture((bool: boolean) => { + agora.muteRemoteVideoStreamEx(Number(currentVideoId), bool) + return bool + }) }, { threshold: 0, root: document.getElementById('videoView') }); setObserver(observerObject) elements.forEach(element => { From b314a2c25fd34268384766dd53aa375e63548c0c Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Mon, 9 Dec 2024 14:50:15 +0800 Subject: [PATCH 09/18] =?UTF-8?q?=E6=81=A2=E5=A4=8D=E4=BC=9A=E8=AE=AE?= =?UTF-8?q?=E7=9B=91=E6=8E=A7=E5=B0=BA=E5=AF=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/page/Meeting/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 02396dd..6894e3a 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -2681,7 +2681,7 @@ const Meeting: React.FC = () => { : -
+
会议监控 { From 0b57e83e29bca8196f7784494f1926a25efa055b Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Tue, 10 Dec 2024 13:45:29 +0800 Subject: [PATCH 10/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BB=B6=E8=BF=9F?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/package/agora.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index 4295900..6926a55 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -21,7 +21,8 @@ import { BeautyOptions, ColorEnhanceOptions, LowlightEnhanceOptions, - VirtualBackgroundSource + VirtualBackgroundSource, + AudienceLatencyLevelType } from "agora-electron-sdk"; import { GetRoomRtcToken, GetAgoraConf } from "@/api/Home/Index"; import { storage } from '@/utils'; @@ -304,6 +305,7 @@ export const agora = { publishMicrophoneTrack: true,//设置是否发布麦克风采集到的音频 publishCameraTrack: true,//设置是否发布摄像头采集的视频 publishScreenTrack: false,//设置是否发布屏幕采集的视频 + audienceLatencyLevel: bool ? AudienceLatencyLevelType.AudienceLatencyLevelUltraLowLatency : AudienceLatencyLevelType.AudienceLatencyLevelLowLatency, }) }, // 设置接收大小流 @@ -344,6 +346,7 @@ export const agora = { publishMicrophoneTrack: false,//设置是否发布麦克风采集到的音频 publishCameraTrack: true,//设置是否发布摄像头采集的视频 publishScreenTrack: false,//设置是否发布屏幕采集的视频 + audienceLatencyLevel: bool ? AudienceLatencyLevelType.AudienceLatencyLevelLowLatency : AudienceLatencyLevelType.AudienceLatencyLevelUltraLowLatency, } ); await rtcEngine.setDualStreamModeEx( @@ -398,6 +401,7 @@ export const agora = { publishMicrophoneTrack: publishMicrophoneTrack,//设置是否发布麦克风采集到的音频 publishCameraTrack: publishCameraTrack,//设置是否发布摄像头采集的视频 publishScreenTrack: false,//设置是否发布屏幕采集的视频 + audienceLatencyLevel: data ? AudienceLatencyLevelType.AudienceLatencyLevelUltraLowLatency : AudienceLatencyLevelType.AudienceLatencyLevelLowLatency, }) }, // 取消或恢复发布本地视频流 @@ -410,6 +414,7 @@ export const agora = { publishMicrophoneTrack: publishMicrophoneTrack,//设置是否发布麦克风采集到的音频 publishCameraTrack: publishCameraTrack,//设置是否发布摄像头采集的视频 publishScreenTrack: false,//设置是否发布屏幕采集的视频 + audienceLatencyLevel: data ? AudienceLatencyLevelType.AudienceLatencyLevelUltraLowLatency : AudienceLatencyLevelType.AudienceLatencyLevelLowLatency, }) }, // 摄像头采集 From 79b1d8c5c277b2eeb2f53e10a0852ba865150169 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Tue, 10 Dec 2024 13:47:45 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vite.config.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/vite.config.ts b/vite.config.ts index f19a94c..e3110f4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -76,7 +76,8 @@ export default defineConfig({ BeautyOptions, ColorEnhanceOptions, LowlightEnhanceOptions, - VirtualBackgroundSource + VirtualBackgroundSource, + AudienceLatencyLevelType } = require("agora-electron-sdk") export { createAgoraRtcEngine, @@ -101,7 +102,8 @@ export default defineConfig({ BeautyOptions, ColorEnhanceOptions, LowlightEnhanceOptions, - VirtualBackgroundSource + VirtualBackgroundSource, + AudienceLatencyLevelType } `, }) From cb1593a76f2a013bb5193ad50e4a586d188c8adb Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Tue, 10 Dec 2024 14:49:43 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/page/Meeting/index.tsx | 59 +++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 6894e3a..e0f43d3 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -435,27 +435,31 @@ const Meeting: React.FC = () => { if (!data) { setIsScreenCapture(bool => { if (!bool) { - confirm({ - title: '提示', - icon: , - content: `是否录制本次会议?`, - centered: true, - okText: '确定', - cancelText: '取消', - async onOk() { - if (stateInfo) { - changeStatusList({ - title: '录制' - }, 1, 3) - } else { - message.error('当前不在会议室!') + if (role.ID.includes(userInfo.roleId)) { + confirm({ + title: '提示', + icon: , + content: `是否录制本次会议?`, + centered: true, + okText: '确定', + cancelText: '取消', + async onOk() { + if (stateInfo) { + changeStatusList({ + title: '录制' + }, 1, 3) + } else { + message.error('当前不在会议室!') + } + showSingIn() + }, + onCancel() { + showSingIn() } - showSingIn() - }, - onCancel() { - showSingIn() - } - }) + }) + } else { + showSingIn() + } } return bool }) @@ -2851,6 +2855,21 @@ const Meeting: React.FC = () => { {row.title}
+ case '录制': + case '录制中': + if (role.ID.includes(user.roleId)) { + return
changeStatusList(row, itemIndex, rowIndex)} + onMouseDown={() => changeFooterListSelect(row, itemIndex, rowIndex, true)} + onMouseUp={() => changeFooterListSelect(row, itemIndex, rowIndex, false)} + onMouseLeave={() => changeFooterListSelect(row, itemIndex, rowIndex, false)} + key={rowIndex}> + {row.select ? : } + {row.title} +
+ } + return null default: return
Date: Tue, 10 Dec 2024 15:04:54 +0800 Subject: [PATCH 13/18] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=99=A8=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 1 + src/components/JoinSetting/index.tsx | 1 + src/components/UserVideo/index.tsx | 1 + src/page/Home/Index/index.tsx | 1 + src/page/Home/index.tsx | 1 + src/page/Meeting/ShareScreenWindow/index.tsx | 1 + src/page/Meeting/index.tsx | 1 + 7 files changed, 7 insertions(+) diff --git a/main.js b/main.js index 48e23c6..345ce0f 100644 --- a/main.js +++ b/main.js @@ -17,6 +17,7 @@ const fs = require('fs'); const Registry = require('winreg'); const { autoUpdater, CancellationToken } = require('electron-updater'); const signalR = require('@microsoft/signalr'); +const { setTimeout, setInterval, clearTimeout, clearInterval } = require('timers'); const cancellationToken = new CancellationToken() app.allowRendererProcessReuse = false; let mainWindow = null; diff --git a/src/components/JoinSetting/index.tsx b/src/components/JoinSetting/index.tsx index af7fa60..3b902ec 100644 --- a/src/components/JoinSetting/index.tsx +++ b/src/components/JoinSetting/index.tsx @@ -9,6 +9,7 @@ import Avatar from '@/components/Avatar'; import { useNavigate } from 'react-router-dom'; import { agora } from '@/utils/package/agora'; import { role } from '@/config/role'; +const { setInterval, clearInterval } = require('timers'); let time = null as any; const JoinSetting = forwardRef((_props: any, ref: any) => { useImperativeHandle(ref, () => ({ diff --git a/src/components/UserVideo/index.tsx b/src/components/UserVideo/index.tsx index de403fe..c87e527 100644 --- a/src/components/UserVideo/index.tsx +++ b/src/components/UserVideo/index.tsx @@ -6,6 +6,7 @@ import { Button, Empty, Select, message } from 'antd'; import { useEffect, useState } from "react"; import { useLocation } from 'react-router'; import { VideoStreamType } from 'agora-electron-sdk'; +const { setInterval, clearInterval } = require('timers'); const UserVideo: React.FC = () => { const { state } = useLocation(); const [from, setFrom] = useState({ diff --git a/src/page/Home/Index/index.tsx b/src/page/Home/Index/index.tsx index 98a6734..e2a3462 100644 --- a/src/page/Home/Index/index.tsx +++ b/src/page/Home/Index/index.tsx @@ -13,6 +13,7 @@ import { role } from '@/config/role'; import dayjs from 'dayjs'; import StupWizard from '@/components/StupWizard'; import { GetSubDpList } from '@/api/Home/User'; +const { setInterval, clearInterval } = require('timers'); const fs = require('fs').promises; const { exec } = require('child_process'); const { RangePicker } = DatePicker; diff --git a/src/page/Home/index.tsx b/src/page/Home/index.tsx index 1e202d1..04f99fb 100644 --- a/src/page/Home/index.tsx +++ b/src/page/Home/index.tsx @@ -8,6 +8,7 @@ import { storage } from '@/utils'; import ImageUrl from '@/utils/package/imageUrl' import Avatar from '@/components/Avatar'; import StupWizard from '@/components/StupWizard'; +const { setInterval, clearInterval } = require('timers'); dayjs.locale('zh-cn'); type navListType = { title: string; diff --git a/src/page/Meeting/ShareScreenWindow/index.tsx b/src/page/Meeting/ShareScreenWindow/index.tsx index 5a29c8a..929aeda 100644 --- a/src/page/Meeting/ShareScreenWindow/index.tsx +++ b/src/page/Meeting/ShareScreenWindow/index.tsx @@ -7,6 +7,7 @@ import { CaretDownOutlined, CaretUpOutlined } from '@ant-design/icons'; import { Button } from 'antd'; import dayjs from 'dayjs'; import { useEffect, useState } from "react"; +const { setInterval, clearInterval } = require('timers'); const ShareScreenWindow: React.FC = () => { const [footerLists, setFooterLists] = useState([ { diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index e0f43d3..619b731 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -24,6 +24,7 @@ import { fixWebmDuration } from "webm-duration-fix-buffer"; import { getKeyOpenChildWindow, setKeyOpenChildWindow } from '@/utils/package/public'; import MeetingDisconnected from '@/components/MeetingDisconnected'; import SingIn from '@/components/SingIn'; +const { setTimeout, setInterval, clearTimeout, clearInterval } = require('timers'); const { confirm } = Modal; const { exec } = require('child_process'); const fs = require('fs').promises; From 9a5ef75322e32f2b33f9154829820a5bb2942c36 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Tue, 10 Dec 2024 17:04:28 +0800 Subject: [PATCH 14/18] =?UTF-8?q?=E6=A0=B7=E5=BC=8F&=E5=85=A8=E5=91=98?= =?UTF-8?q?=E9=80=80=E5=87=BA=E5=88=86=E4=BA=AB=E4=BA=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/UserVideo/index.module.scss | 4 ++-- src/page/Meeting/index.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/UserVideo/index.module.scss b/src/components/UserVideo/index.module.scss index 7d7f7ac..b1d7b15 100644 --- a/src/components/UserVideo/index.module.scss +++ b/src/components/UserVideo/index.module.scss @@ -65,8 +65,8 @@ height: 0; .userVideoContentListItem { - height: 32%; - width: calc(100% / 4 - 8px); + height: 13%; + width: calc(100% / 3 - 8px); padding: 4px; .userVideoContentListItemVideo { diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 619b731..ae20e82 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -1622,11 +1622,11 @@ const Meeting: React.FC = () => { } // 退出房间 const leaveChannel = async (bool: boolean = true): Promise => { + await stopScreenCapture() await stopRecorderMedia() if (bool) { await getLeave() } - await stopScreenCapture() await agora.leaveChannel() setTimeout(() => { if (userInfo.isAnonymous) { @@ -1634,7 +1634,7 @@ const Meeting: React.FC = () => { } else { navigate('/home/index') } - }, 0) + }, 1000) } // 分享屏幕 const clickSharedScreen = async (): Promise => { From c99ec3668c3fd63e655686a1015ade051140d90a Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Tue, 10 Dec 2024 17:15:32 +0800 Subject: [PATCH 15/18] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/package/agora.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index 6926a55..ab0ebc4 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -216,6 +216,9 @@ export const agora = { // 本地加入 setupLocalVideo: async (item: any) => { if (item.view?.childNodes.length === 1 || item.type) { + if (String(item.uid).length === 9) { + return + } await rtcEngine.setupLocalVideo({ renderMode: agora.getRrenderMode(item.uid), sourceType: item.sourceType, From 4f462e818bb64edea70efd005ae65fd5ee131988 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Tue, 10 Dec 2024 17:36:19 +0800 Subject: [PATCH 16/18] =?UTF-8?q?=E5=81=9C=E6=AD=A2=E6=8E=A5=E5=8F=96?= =?UTF-8?q?=E5=85=B1=E4=BA=AB=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/page/Meeting/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index ae20e82..ec5b953 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -1646,6 +1646,7 @@ const Meeting: React.FC = () => { agora.muteRemoteVideoStreamEx(Number(item.id), true) } }); + agora.muteRemoteVideoStreamEx(Number(user.screenShareId), true) } if (data) { const footerListTemplate = [...footerList] From bafa7e3a7035fbde97f4d3795873f84c2559ad08 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Tue, 10 Dec 2024 18:00:10 +0800 Subject: [PATCH 17/18] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=BB=91=E5=90=8D?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/page/Meeting/index.tsx | 2 +- src/utils/package/agora.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index ec5b953..07c2de6 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -1646,7 +1646,7 @@ const Meeting: React.FC = () => { agora.muteRemoteVideoStreamEx(Number(item.id), true) } }); - agora.muteRemoteVideoStreamEx(Number(user.screenShareId), true) + agora.setSubscribeVideoBlocklist([Number(user.screenShareId)], 1) } if (data) { const footerListTemplate = [...footerList] diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index ab0ebc4..c3ba703 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -373,6 +373,10 @@ export const agora = { muteRemoteVideoStreamEx: async (uid: number, mute: boolean) => { await rtcEngine.muteRemoteVideoStreamEx(uid, mute, { channelId: option.channelId, localUid: Number(option.uid) }) }, + // 设置视频订阅黑名单。 + setSubscribeVideoBlocklist: async (uidList: number[], uidNumber: number) => { + await rtcEngine.setSubscribeVideoBlocklist(uidList, uidNumber) + }, // 取消或恢复订阅指定远端用户的音频流 muteRemoteVideoStream: async (uid: number, mute: boolean) => { rtcEngine.muteRemoteVideoStream(uid, mute) From 7aa8bb4a8f89a348f558911455f035541ba86d65 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Wed, 11 Dec 2024 14:41:30 +0800 Subject: [PATCH 18/18] =?UTF-8?q?=E5=85=B1=E4=BA=AB=E6=97=B6=E5=BD=95?= =?UTF-8?q?=E5=B1=8F=E6=8C=89=E9=92=AE=E4=B8=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/page/Meeting/ShareScreenWindow/index.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/page/Meeting/ShareScreenWindow/index.tsx b/src/page/Meeting/ShareScreenWindow/index.tsx index 929aeda..772f6b2 100644 --- a/src/page/Meeting/ShareScreenWindow/index.tsx +++ b/src/page/Meeting/ShareScreenWindow/index.tsx @@ -55,6 +55,11 @@ const ShareScreenWindow: React.FC = () => { let timeout: NodeJS.Timeout; useEffect(() => { getRoomUser() + if (!role.ID.includes(userInfo.roleId)) { + setFooterLists((res: any) => { + return res.splice(4, 1) + }) + } channel.onmessage = function (event) { let { type, time } = event.data; switch (type) { @@ -83,8 +88,10 @@ const ShareScreenWindow: React.FC = () => { 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; + if (role.ID.includes(userInfo.roleId)) { + footerListTemplate[4].title = data.parmes.footerList[1][3].active ? '录制中' : '录制'; + footerListTemplate[4].active = data.parmes.footerList[1][3].active; + } setFooterLists(footerListTemplate) break; case 'roomUserList':