From 2d9db898f8c42d24bd5338d056646eea6682b79c Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Thu, 18 Jul 2024 17:53:38 +0800 Subject: [PATCH] =?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/api/Meeting/index.ts | 6 ++++++ src/components/SpeakerModeModal/index.tsx | 14 ++++++++++++-- src/page/Meeting/index.tsx | 3 +++ src/utils/package/signalr.ts | 6 ++++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/api/Meeting/index.ts b/src/api/Meeting/index.ts index 842cded..8fe0e15 100644 --- a/src/api/Meeting/index.ts +++ b/src/api/Meeting/index.ts @@ -80,3 +80,9 @@ export const GetRoomKickout = (roomNum: string, kickUid: string) => url: `/room/kickout?roomNum=${roomNum}&kickUid=${kickUid}`, method: 'get' }) + +export const GetSyncView = (roomNum: string, type: string) => + request({ + url: `/room/sync-view?roomNum=${roomNum}&type=${type}`, + method: 'get' + }) diff --git a/src/components/SpeakerModeModal/index.tsx b/src/components/SpeakerModeModal/index.tsx index b5b1d0f..80f9779 100644 --- a/src/components/SpeakerModeModal/index.tsx +++ b/src/components/SpeakerModeModal/index.tsx @@ -1,7 +1,9 @@ import styles from '@/components/SpeakerModeModal/index.module.scss' -import { Button, message, Modal, Select, Slider } from 'antd'; +import { Checkbox, Modal } from 'antd'; import { useState, useImperativeHandle, forwardRef } from "react"; import { storage } from '@/utils'; +import { useLocation } from 'react-router-dom'; +import { GetSyncView } from '@/api/Meeting'; interface Props { onClick: () => void; } @@ -11,8 +13,13 @@ const SpeakerModeModal = forwardRef((props: any, ref: any) => { setIsSpeakerModeModal(true) } })) + const { state } = useLocation(); const [isSpeakerModeModal, setIsSpeakerModeModal] = useState(false); - const setMode = (mode: string): void => { + const [isView, setIsView] = useState(false); + const setMode = async (mode: string): Promise => { + if (isView) { + await GetSyncView(state.channelId, mode) + } storage.setItem('meetingMode', mode) setIsSpeakerModeModal(false) } @@ -34,6 +41,9 @@ const SpeakerModeModal = forwardRef((props: any, ref: any) => { setMode('DualScreenMode')} /> setMode('FourScreenMode')} /> + { + setIsView(e.target.checked) + }} value={isView}>同步所有视图 ) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index dd229c1..f442fd0 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -193,6 +193,9 @@ const Meeting: React.FC = () => { case 'ForceExitRoom': leaveChannel() break; + case 'RefreshView': + setMeetingMode(item.type) + break; } }) return () => { diff --git a/src/utils/package/signalr.ts b/src/utils/package/signalr.ts index 5136e03..083dab6 100644 --- a/src/utils/package/signalr.ts +++ b/src/utils/package/signalr.ts @@ -40,6 +40,12 @@ export const onSignalr = (callBack: Function) => { key: 'ForceExitRoom', }) }); + connection.on("RefreshView", (type: string) => { + callBack({ + key: 'RefreshView', + type + }) + }); } } export const offSignalr = () => {