发言人5分钟未推音视频流自动下麦

This commit is contained in:
yj 2025-02-17 11:21:00 +08:00
parent 739b6161ec
commit b42a5ae6ab
2 changed files with 61 additions and 2 deletions

View File

@ -10,6 +10,7 @@ const computedBehavior = require('miniprogram-computed').behavior;
let reconnectTime = "" as any;
let refreshTime = "" as any;
let isReconnecTimeSetTimeout = "" as any;
let isAutoApplySpeakTime = "" as any;
Page({
behaviors: [computedBehavior],
data: {
@ -102,6 +103,7 @@ Page({
isCurrePage: true,
isReconnec: false,
isReconnecTime: false,
isAutoApplySpeakDialog: false,
},
watch: {
'roomUserList.**': function (roomUserList) {
@ -128,6 +130,32 @@ Page({
'footerList.**': function (footerList) {
const footerListTemplate = [...footerList];
footerListTemplate[3].show = footerListTemplate[2].active
if (!footerListTemplate[1].active && !footerListTemplate[2].active) {
if (isAutoApplySpeakTime) {
clearTimeout(isAutoApplySpeakTime)
isAutoApplySpeakTime = ''
}
isAutoApplySpeakTime = setTimeout(() => {
let userItem = this.data.roomUserList.find((item: any) => item.uid === this.data.user.uid)
if (!role.ID.includes(this.data.user.roleId) && userItem && userItem.isRoomManager) {
DeleteRoomManager({
roomId: this.data.roomInfo.id,
roomNum: this.data.channelId,
userId: userItem.uid
})
this.setData({
isAutoApplySpeakDialog: true
})
}
clearTimeout(isAutoApplySpeakTime)
isAutoApplySpeakTime = ''
}, 1000 * 60 * 5);
} else {
if (isAutoApplySpeakTime) {
clearTimeout(isAutoApplySpeakTime)
isAutoApplySpeakTime = ''
}
}
this.setData({
footerList: footerListTemplate
})
@ -316,6 +344,36 @@ Page({
clearInterval(refreshTime)
refreshTime = ''
}
if (isAutoApplySpeakTime) {
clearTimeout(isAutoApplySpeakTime)
isAutoApplySpeakTime = ''
}
},
confirmIsAutoApplySpeakDialog() {
if (!this.data.isClicked) {
GetApplySpeak(this.data.channelId).then(res => {
if (res.code === 200) {
this.setData({
isClicked: true,
})
this.message('申请发言成功').success()
}
this.setData({
isAutoApplySpeakDialog: false
})
}).catch(() => {
this.setData({
isAutoApplySpeakDialog: false
})
})
} else {
this.message('申请太频繁了,请稍后重试!').error();
}
},
cancelIsAutoApplySpeakDialog() {
this.setData({
isAutoApplySpeakDialog: false
})
},
async reconnecFun() {
offSignalr()

View File

@ -16,7 +16,7 @@
<t-icon name="fullscreen-2" size="24rpx" data-name="fullscreen-2" wx:else />
</view>
<view class="meeting-content-video-canvas" wx:if="{{currentUser.shareSrc}}">
<live-player id="player" src="{{currentUser.shareSrc}}" mode="RTC" autoplay="true" bindstatechange="playerStateChange" object-fit="contain"/>
<live-player id="player" src="{{currentUser.shareSrc}}" mode="RTC" autoplay="true" bindstatechange="playerStateChange" object-fit="contain" />
</view>
<view class="meeting-content-video-canvas" wx:elif="{{currentUser.src && currentUser.enableCamera}}">
<live-player id="player" src="{{currentUser.src}}" mode="RTC" autoplay="true" bindstatechange="playerStateChange" object-fit="contain" muted="{{currentUser.uid === user.uid}}" />
@ -135,4 +135,5 @@
</view>
</view>
</t-popup>
<t-dialog visible="{{isReconnec}}" content="重连失败,请退出重试!" confirm-btn="{{ { content: '确定', variant: 'base', theme: 'primary' } }}" data-type="isReconnec" cancel-btn="{{null}}" bind:confirm="closeRoom" style="transform: scale(0.5) translate3d(-50%, -50%, 0);" close-btn="{{false}}" />
<t-dialog visible="{{isReconnec}}" content="重连失败,请退出重试!" confirm-btn="{{ { content: '确定', variant: 'base', theme: 'primary' } }}" data-type="isReconnec" cancel-btn="{{null}}" bind:confirm="closeRoom" style="transform: scale(0.5) translate3d(-50%, -50%, 0);" close-btn="{{false}}" />
<t-dialog visible="{{isAutoApplySpeakDialog}}" content="由于您长时间未发言,已自动取消发言权限,是否重新申请发言?" cancel-btn="取消" confirm-btn="{{ { content: '确定', variant: 'base', theme: 'primary' } }}" data-type="isAutoApplySpeakDialog" bind:cancel="cancelIsAutoApplySpeakDialog" bind:confirm="confirmIsAutoApplySpeakDialog" style="transform: scale(0.5) translate3d(-50%, -50%, 0);" close-btn="{{false}}" />