From 85807004b21dacf0483cdcbd67c11cc5c3964c82 Mon Sep 17 00:00:00 2001 From: Miroslav Pejic Date: Fri, 1 Dec 2023 14:46:28 +0100 Subject: [PATCH] [mirotalksfu] - add moderator rule - cant chat with CahtGPT --- app/src/Room.js | 4 ++++ app/src/Server.js | 1 + public/js/LocalStorage.js | 1 + public/js/Room.js | 8 ++++++++ public/js/RoomClient.js | 16 ++++++++++++++++ public/js/Rules.js | 3 +++ public/views/Room.html | 18 ++++++++++++++++++ 7 files changed, 51 insertions(+) diff --git a/app/src/Room.js b/app/src/Room.js index 8ec5fe62..6a271abe 100644 --- a/app/src/Room.js +++ b/app/src/Room.js @@ -26,6 +26,7 @@ module.exports = class Room { video_cant_unhide: false, screen_cant_share: false, chat_cant_privately: false, + chat_cant_chatgpt: false, }; this.survey = config.survey; this.redirect = config.redirect; @@ -137,6 +138,9 @@ module.exports = class Room { case 'chat_cant_privately': this._moderator.chat_cant_privately = data.status; break; + case 'chat_cant_chatgpt': + this._moderator.chat_cant_chatgpt = data.status; + break; default: break; } diff --git a/app/src/Server.js b/app/src/Server.js index 3b77d6a2..f801d398 100644 --- a/app/src/Server.js +++ b/app/src/Server.js @@ -815,6 +815,7 @@ function startServer() { case 'video_cant_unhide': case 'screen_cant_share': case 'chat_cant_privately': + case 'chat_cant_chatgpt': room.broadCast(socket.id, 'updateRoomModerator', moderator); break; default: diff --git a/public/js/LocalStorage.js b/public/js/LocalStorage.js index 6e9d5b7c..9ad87de4 100644 --- a/public/js/LocalStorage.js +++ b/public/js/LocalStorage.js @@ -26,6 +26,7 @@ class LocalStorage { moderator_video_cant_unhide: false, // Everyone can't unhide themselves moderator_screen_cant_share: false, // Everyone can't share screen moderator_chat_cant_privately: false, // Everyone can't chat privately, only Public chat allowed + moderator_chat_cant_chatgpt: false, // Everyone can't chat with ChatGPT mic_auto_gain_control: false, mic_echo_cancellations: true, mic_noise_suppression: true, diff --git a/public/js/Room.js b/public/js/Room.js index 492e8f1d..58293d73 100644 --- a/public/js/Room.js +++ b/public/js/Room.js @@ -1913,6 +1913,14 @@ function handleSelects() { lS.setSettings(lsSettings); e.target.blur(); }; + switchEveryoneCantChatChatGPT.onchange = (e) => { + const chatCantChatGPT = e.currentTarget.checked; + rc.updateRoomModerator({ type: 'chat_cant_chatgpt', status: chatCantChatGPT }); + rc.roomMessage('chat_cant_chatgpt', chatCantChatGPT); + lsSettings.moderator_chat_cant_chatgpt = chatCantChatGPT; + lS.setSettings(lsSettings); + e.target.blur(); + }; } // #################################################### diff --git a/public/js/RoomClient.js b/public/js/RoomClient.js index 84da260f..c84b5eb1 100644 --- a/public/js/RoomClient.js +++ b/public/js/RoomClient.js @@ -169,6 +169,7 @@ class RoomClient { video_cant_unhide: false, screen_cant_share: false, chat_cant_privately: false, + chat_cant_chatgpt: false, }; this.isAudioAllowed = isAudioAllowed; @@ -402,6 +403,7 @@ class RoomClient { this._moderator.video_cant_unhide = room.moderator.video_cant_unhide; this._moderator.screen_cant_share = room.moderator.screen_cant_share; this._moderator.chat_cant_privately = room.moderator.chat_cant_privately; + this._moderator.chat_cant_chatgpt = room.moderator.chat_cant_chatgpt; // if (this._moderator.audio_start_muted && this._moderator.video_start_hidden) { this.userLog('warning', 'The Moderator disabled your audio and video', 'top-end'); @@ -4755,6 +4757,13 @@ class RoomClient { 'top-end', ); break; + case 'chat_cant_chatgpt': + this.userLog( + 'info', + `${icons.moderator} Moderator: everyone can't chat with ChatGPT ${status}`, + 'top-end', + ); + break; default: break; } @@ -5532,6 +5541,9 @@ class RoomClient { switch (peer_id) { case 'ChatGPT': + if (this._moderator.chat_cant_chatgpt) { + return userLog('warning', 'The moderator does not allow you to chat with ChatGPT', 'top-end', 6000); + } isChatGPTOn = true; chatAbout.innerHTML = generateChatAboutHTML(image.chatgpt, 'ChatGPT'); this.getId('chatGPTMessages').style.display = 'block'; @@ -5617,6 +5629,10 @@ class RoomClient { this._moderator.chat_cant_privately = data.status; rc.roomMessage('chat_cant_privately', data.status); break; + case 'chat_cant_chatgpt': + this._moderator.chat_cant_chatgpt = data.status; + rc.roomMessage('chat_cant_chatgpt', data.status); + break; default: break; } diff --git a/public/js/Rules.js b/public/js/Rules.js index 76bffa3d..cf45e6c2 100644 --- a/public/js/Rules.js +++ b/public/js/Rules.js @@ -143,6 +143,8 @@ function handleRules(isPresenter) { switchEveryoneCantUnhide.checked = lsSettings.moderator_video_cant_unhide; switchEveryoneCantShareScreen.checked = lsSettings.moderator_screen_cant_share; switchEveryoneCantChatPrivately.checked = lsSettings.moderator_chat_cant_privately; + switchEveryoneCantChatChatGPT.checked = lsSettings.moderator_chat_cant_chatgpt; + // Update moderator settings... const moderatorData = { audio_start_muted: switchEveryoneMute.checked, @@ -151,6 +153,7 @@ function handleRules(isPresenter) { video_cant_unhide: switchEveryoneCantUnhide.checked, screen_cant_share: switchEveryoneCantShareScreen.checked, chat_cant_privately: switchEveryoneCantChatPrivately.checked, + chat_cant_chatgpt: switchEveryoneCantChatChatGPT.checked, }; rc.updateRoomModeratorALL(moderatorData); } diff --git a/public/views/Room.html b/public/views/Room.html index 232d0198..44501d34 100644 --- a/public/views/Room.html +++ b/public/views/Room.html @@ -716,6 +716,24 @@ access to use this app. + + +
+ +

Everyone can't use ChatGPT

+
+ + +
+ +
+ +