diff options
-rw-r--r-- | l10n/sk.js | 3 | ||||
-rw-r--r-- | l10n/sk.json | 3 | ||||
-rw-r--r-- | l10n/zh_HK.js | 3 | ||||
-rw-r--r-- | l10n/zh_HK.json | 3 | ||||
-rw-r--r-- | lib/Signaling/Listener.php | 35 | ||||
-rw-r--r-- | src/mixins/getParticipants.js | 5 | ||||
-rw-r--r-- | src/store/conversationsStore.js | 5 |
7 files changed, 47 insertions, 10 deletions
diff --git a/l10n/sk.js b/l10n/sk.js index df3fa8ad5..9e072445c 100644 --- a/l10n/sk.js +++ b/l10n/sk.js @@ -47,6 +47,7 @@ OC.L10N.register( "The command does not exist" : "Príkaz neexistuje", "An error occurred while running the command. Please ask an administrator to check the logs." : "Pri spustení príkazu sa vyskytla chyba. Požiadajte správcu o kontrolu protokolov.", "Talk updates ✅" : "Aktualizácie Talk-u ✅", + "Reaction deleted by author" : "Reakcia bola vymazaná autorom", "{actor} created the conversation" : "Používateľ {actor} vytvoril rozhovor", "You created the conversation" : "Vytvorili ste rozhovor", "An administrator created the conversation" : "Administrátor vytvoril rozhovor.", @@ -148,6 +149,8 @@ OC.L10N.register( "You stopped Matterbridge" : "Zastavili ste Matterbridge", "{actor} deleted a message" : "{actor} zmazal správu", "You deleted a message" : "Zmazali ste správu", + "{actor} deleted a reaction" : "{actor} vymazal reakciu", + "You deleted a reaction" : "Vymazali ste reakciu", "{actor} cleared the history of the conversation" : "{actor} vyčistil históriu konverzácie", "You cleared the history of the conversation" : "Vyčistili ste históriu konverzácie", "Message deleted by author" : "Správa vymazaná autorom", diff --git a/l10n/sk.json b/l10n/sk.json index 70fe4e804..c6966f67a 100644 --- a/l10n/sk.json +++ b/l10n/sk.json @@ -45,6 +45,7 @@ "The command does not exist" : "Príkaz neexistuje", "An error occurred while running the command. Please ask an administrator to check the logs." : "Pri spustení príkazu sa vyskytla chyba. Požiadajte správcu o kontrolu protokolov.", "Talk updates ✅" : "Aktualizácie Talk-u ✅", + "Reaction deleted by author" : "Reakcia bola vymazaná autorom", "{actor} created the conversation" : "Používateľ {actor} vytvoril rozhovor", "You created the conversation" : "Vytvorili ste rozhovor", "An administrator created the conversation" : "Administrátor vytvoril rozhovor.", @@ -146,6 +147,8 @@ "You stopped Matterbridge" : "Zastavili ste Matterbridge", "{actor} deleted a message" : "{actor} zmazal správu", "You deleted a message" : "Zmazali ste správu", + "{actor} deleted a reaction" : "{actor} vymazal reakciu", + "You deleted a reaction" : "Vymazali ste reakciu", "{actor} cleared the history of the conversation" : "{actor} vyčistil históriu konverzácie", "You cleared the history of the conversation" : "Vyčistili ste históriu konverzácie", "Message deleted by author" : "Správa vymazaná autorom", diff --git a/l10n/zh_HK.js b/l10n/zh_HK.js index 8c784612e..bf8cc4fa7 100644 --- a/l10n/zh_HK.js +++ b/l10n/zh_HK.js @@ -47,6 +47,7 @@ OC.L10N.register( "The command does not exist" : "該指令不存在", "An error occurred while running the command. Please ask an administrator to check the logs." : "運行指令時發生錯誤。請要求管理員檢查日誌。", "Talk updates ✅" : "Talk 更新 ✅", + "Reaction deleted by author" : "反應被作者刪除", "{actor} created the conversation" : "{actor} 建立了對話", "You created the conversation" : "你建立了對話", "An administrator created the conversation" : "管理員建立了對話", @@ -148,6 +149,8 @@ OC.L10N.register( "You stopped Matterbridge" : "您停止了 Matterbridge", "{actor} deleted a message" : "{actor} 刪除了訊息", "You deleted a message" : "您刪除了訊息", + "{actor} deleted a reaction" : "{actor} 刪除了反應", + "You deleted a reaction" : "您刪除了反應", "{actor} cleared the history of the conversation" : "{actor} 清除了對話的歷史記錄", "You cleared the history of the conversation" : "你清除了對話的歷史記錄", "Message deleted by author" : "訊息被作者刪除", diff --git a/l10n/zh_HK.json b/l10n/zh_HK.json index 92f22b843..c75b4992d 100644 --- a/l10n/zh_HK.json +++ b/l10n/zh_HK.json @@ -45,6 +45,7 @@ "The command does not exist" : "該指令不存在", "An error occurred while running the command. Please ask an administrator to check the logs." : "運行指令時發生錯誤。請要求管理員檢查日誌。", "Talk updates ✅" : "Talk 更新 ✅", + "Reaction deleted by author" : "反應被作者刪除", "{actor} created the conversation" : "{actor} 建立了對話", "You created the conversation" : "你建立了對話", "An administrator created the conversation" : "管理員建立了對話", @@ -146,6 +147,8 @@ "You stopped Matterbridge" : "您停止了 Matterbridge", "{actor} deleted a message" : "{actor} 刪除了訊息", "You deleted a message" : "您刪除了訊息", + "{actor} deleted a reaction" : "{actor} 刪除了反應", + "You deleted a reaction" : "您刪除了反應", "{actor} cleared the history of the conversation" : "{actor} 清除了對話的歷史記錄", "You cleared the history of the conversation" : "你清除了對話的歷史記錄", "Message deleted by author" : "訊息被作者刪除", diff --git a/lib/Signaling/Listener.php b/lib/Signaling/Listener.php index 9a62be582..dc47a3829 100644 --- a/lib/Signaling/Listener.php +++ b/lib/Signaling/Listener.php @@ -70,6 +70,7 @@ class Listener { $dispatcher->addListener(Room::EVENT_AFTER_SESSION_JOIN_CALL, $listener); $dispatcher->addListener(Room::EVENT_AFTER_SESSION_UPDATE_CALL_FLAGS, $listener); $dispatcher->addListener(Room::EVENT_AFTER_SESSION_LEAVE_CALL, $listener); + $dispatcher->addListener(Room::EVENT_AFTER_PERMISSIONS_SET, $listener); $dispatcher->addListener(GuestManager::EVENT_AFTER_NAME_UPDATE, $listener); $listener = static function (ParticipantEvent $event): void { @@ -160,6 +161,40 @@ class Listener { $dispatcher->addListener(Room::EVENT_AFTER_PARTICIPANT_TYPE_SET, $listener); $dispatcher->addListener(Room::EVENT_AFTER_PARTICIPANT_PERMISSIONS_SET, $listener); + $dispatcher->addListener(Room::EVENT_AFTER_PERMISSIONS_SET, static function (RoomEvent $event) { + if (self::isUsingInternalSignaling()) { + return; + } + + /** @var BackendNotifier $notifier */ + $notifier = \OC::$server->get(BackendNotifier::class); + + $sessionIds = []; + + // Setting the room permissions resets the permissions of all + // participants, even those with custom attendee permissions. + + // FIXME This approach does not scale, as the update message for all + // the sessions in a conversation can exceed the allowed size of the + // request in conversations with a large number of participants. + // However, note that a single message with the general permissions + // to be set on all participants can not be sent either, as the + // general permissions could be overriden by custom attendee + // permissions in specific participants. + + /** @var ParticipantService $participantService */ + $participantService = \OC::$server->get(ParticipantService::class); + $participants = $participantService->getSessionsAndParticipantsForRoom($event->getRoom()); + foreach ($participants as $participant) { + $session = $participant->getSession(); + if ($session) { + $sessionIds[] = $session->getSessionId(); + } + } + + $notifier->participantsModified($event->getRoom(), $sessionIds); + }); + $dispatcher->addListener(Room::EVENT_BEFORE_ROOM_DELETE, static function (RoomEvent $event) { if (self::isUsingInternalSignaling()) { return; diff --git a/src/mixins/getParticipants.js b/src/mixins/getParticipants.js index fc9352d15..25070b962 100644 --- a/src/mixins/getParticipants.js +++ b/src/mixins/getParticipants.js @@ -59,9 +59,6 @@ const getParticipants = { EventBus.$on('route-change', this.onRouteChange) EventBus.$on('joined-conversation', this.onJoinedConversation) - EventBus.$on('conversation-permissions-changed', this.debounceUpdateParticipants) - EventBus.$on('call-permissions-changed', this.debounceUpdateParticipants) - // FIXME this works only temporary until signaling is fixed to be only on the calls // Then we have to search for another solution. Maybe the room list which we update // periodically gets a hash of all online sessions? @@ -71,8 +68,6 @@ const getParticipants = { stopGetParticipantsMixin() { EventBus.$off('route-change', this.onRouteChange) EventBus.$off('joined-conversation', this.onJoinedConversation) - EventBus.$off('conversation-permissions-changed', this.debounceUpdateParticipants) - EventBus.$off('call-permissions-changed', this.debounceUpdateParticipants) EventBus.$off('signaling-participant-list-changed', this.debounceUpdateParticipants) }, diff --git a/src/store/conversationsStore.js b/src/store/conversationsStore.js index 5686a5db9..27dd0ecbd 100644 --- a/src/store/conversationsStore.js +++ b/src/store/conversationsStore.js @@ -43,7 +43,6 @@ import { } from '../services/conversationsService' import { getCurrentUser } from '@nextcloud/auth' import { CONVERSATION, WEBINAR, PARTICIPANT } from '../constants' -import { EventBus } from '../services/EventBus' const DUMMY_CONVERSATION = { token: '', @@ -492,15 +491,11 @@ const actions = { async setConversationPermissions(context, { token, permissions }) { await setConversationPermissions(token, permissions) context.commit('setConversationPermissions', { token, permissions }) - - EventBus.$emit('conversation-permissions-changed') }, async setCallPermissions(context, { token, permissions }) { await setCallPermissions(token, permissions) context.commit('setCallPermissions', { token, permissions }) - - EventBus.$emit('call-permissions-changed') }, } |