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 = () => {