diff --git a/pages/meeting/index.ts b/pages/meeting/index.ts index 1862285..990cf91 100644 --- a/pages/meeting/index.ts +++ b/pages/meeting/index.ts @@ -113,7 +113,9 @@ Page({ setting: { voiceStimulation: true, //语音激励 }, - network: 0 + network: 0, + meSrc: '', + watchUids: [] }, watch: { 'roomUserList.**': function (roomUserList) { @@ -665,13 +667,22 @@ Page({ this.setAllUserListData('ManagerRefresh', item, async () => { if (item.user.uid === item.uid) { if (item.user.uid === userInfo.uid) { - // await agora.allLeaveChannelEx() + await agora.allJoinChannelEx(item.user, false, (url: string) => { + const roomUserListTemp = [...this.data.roomUserList] + const itemUser = roomUserListTemp.find(row => row.uid == userInfo.uid) + itemUser.src = url + this.setData({ + meSrc: url, + roomUserList: roomUserListTemp, + }) + }) this.message(`操作成功`).success() await agora.setRole(item.user.isRoomManager, (url: string) => { const roomUserListTemp = [...this.data.roomUserList] const itemUser = roomUserListTemp.find(row => row.uid == userInfo.uid) itemUser.src = url this.setData({ + meSrc: url, roomUserList: roomUserListTemp, }) }) @@ -682,15 +693,22 @@ Page({ } } else { if (item.user.uid === userInfo.uid) { - if (item.user.isRoomManager) { - // await agora.allLeaveChannelEx() - } + await agora.allJoinChannelEx(item.user, false, (url: string) => { + const roomUserListTemp = [...this.data.roomUserList] + const itemUser = roomUserListTemp.find(row => row.uid == userInfo.uid) + itemUser.src = url + this.setData({ + meSrc: url, + roomUserList: roomUserListTemp, + }) + }) this.message(`管理员${item.user.isRoomManager ? '设置' : '取消'}您为发言人`).success() await agora.setRole(item.user.isRoomManager, (url: string) => { const roomUserListTemp = [...this.data.roomUserList] const itemUser = roomUserListTemp.find(row => row.uid == userInfo.uid) itemUser.src = url this.setData({ + meSrc: url, roomUserList: roomUserListTemp, }) }) @@ -719,10 +737,30 @@ Page({ case 'Watch': if (!role.ID.includes(userInfo.roleId)) { let userId = item.watchUids.find((uid: any) => uid === userInfo.uid) + this.setData({ + watchUids: item.watchUids + }) + let userRow = this.data.roomUserList.find((row: any) => row.uid === userId) if (userId) { - // await agora.allJoinChannelEx() + await agora.allJoinChannelEx(userRow, true, (url: string) => { + const roomUserListTemp = [...this.data.roomUserList] + const itemUser = roomUserListTemp.find(row => row.uid == userInfo.uid) + itemUser.src = url + this.setData({ + roomUserList: roomUserListTemp, + meSrc: url, + }) + }) } else { - // await agora.allLeaveChannelEx() + await agora.allJoinChannelEx(userRow, false, (url: string) => { + const roomUserListTemp = [...this.data.roomUserList] + const itemUser = roomUserListTemp.find(row => row.uid == userInfo.uid) + itemUser.src = url + this.setData({ + roomUserList: roomUserListTemp, + meSrc: url, + }) + }) } } break; @@ -1246,7 +1284,10 @@ Page({ footerListTemplate[1].active = item.enableMicr footerListTemplate[2].active = item.enableCamera item.enableMicr ? await agora.unmuteLocal('audio') : await agora.muteLocal('audio') - item.enableCamera ? await agora.unmuteLocal('video') : await agora.muteLocal('video') + let userId = this.data.watchUids.find((uid: any) => uid === userInfo.uid) + if (!userId) { + item.enableCamera ? await agora.unmuteLocal('video') : await agora.muteLocal('video') + } if (!role.ID.includes(userInfo.roleId)) { footerListTemplate[6].active = !item.isRoomManager; } diff --git a/pages/meeting/index.wxml b/pages/meeting/index.wxml index edb008b..b29996d 100644 --- a/pages/meeting/index.wxml +++ b/pages/meeting/index.wxml @@ -42,8 +42,7 @@ - - + @@ -71,6 +70,9 @@ + + + ` diff --git a/utils/agora.ts b/utils/agora.ts index 7cb73f9..7bc090c 100644 --- a/utils/agora.ts +++ b/utils/agora.ts @@ -1,3 +1,4 @@ +import { role } from "./utils"; const AgoraMiniappSDK = require("../lib/agora-miniapp-sdk.js"); const option = { appId: '', @@ -58,6 +59,15 @@ export const agora = { }) }) }, + // 监控 + allJoinChannelEx: async (user: any, bool: boolean, callBack: Function) => { + if (!role.ID.includes(user.roleId) || !user.isRoomManager) { + await agora.setRole(bool, (url: string) => { + callBack(url); + }) + } + bool ? await agora.unmuteLocal('video') : await agora.muteLocal('video') + }, // 刷新token renewToken: (token) => { client.renewToken(token) diff --git a/utils/request.js b/utils/request.js index a9d61bf..338bf47 100644 --- a/utils/request.js +++ b/utils/request.js @@ -1,6 +1,6 @@ // const apiBase = "http://192.168.2.9:5192" -const apiBase = "https://meeting-api.23544.com/pc" -// const apiBase = "https://meeting-api.23544.com/test29" +// const apiBase = "https://meeting-api.23544.com/pc" +const apiBase = "https://meeting-api.23544.com/test29" export const Request = (params) => { return new Promise((resolve, reject) => { wx.getStorage({ diff --git a/utils/singlr.ts b/utils/singlr.ts index 3519d20..99cdc6a 100644 --- a/utils/singlr.ts +++ b/utils/singlr.ts @@ -1,7 +1,7 @@ let connection = '' as any; // let url = 'http://192.168.2.9:5192' -let url = 'https://meeting-api.23544.com/pc' -// let url = 'https://meeting-api.23544.com/test29' +// let url = 'https://meeting-api.23544.com/pc' +let url = 'https://meeting-api.23544.com/test29' import * as signalR from "signalr-for-wx"; import { agora } from "./agora"; export const startSignalr = async (callBack: Function) => {