From 457a91e362ec9ad0808214bb0bac8c4a01c8cc07 Mon Sep 17 00:00:00 2001 From: Sanskar Soni Date: Sun, 14 Jul 2024 18:54:35 +0530 Subject: [PATCH] feat(ConversationSettings): Add mention permission settings Signed-off-by: Sanskar Soni --- .../ConversationSettingsDialog.vue | 3 + .../ConversationSettings/MentionsSettings.vue | 141 ++++++++++++++++++ src/constants.js | 5 + src/services/conversationsService.js | 7 + src/store/conversationsStore.js | 15 ++ 5 files changed, 171 insertions(+) create mode 100644 src/components/ConversationSettings/MentionsSettings.vue diff --git a/src/components/ConversationSettings/ConversationSettingsDialog.vue b/src/components/ConversationSettings/ConversationSettingsDialog.vue index 782e9b86917..ef9bc0fa792 100644 --- a/src/components/ConversationSettings/ConversationSettingsDialog.vue +++ b/src/components/ConversationSettings/ConversationSettingsDialog.vue @@ -37,6 +37,7 @@ + @@ -113,6 +114,7 @@ import ListableSettings from './ListableSettings.vue' import LobbySettings from './LobbySettings.vue' import LockingSettings from './LockingSettings.vue' import MatterbridgeSettings from './Matterbridge/MatterbridgeSettings.vue' +import MentionsSettings from './MentionsSettings.vue' import NotificationsSettings from './NotificationsSettings.vue' import RecordingConsentSettings from './RecordingConsentSettings.vue' import SipSettings from './SipSettings.vue' @@ -137,6 +139,7 @@ export default { LobbySettings, LockingSettings, MatterbridgeSettings, + MentionsSettings, NcAppSettingsDialog, NcAppSettingsSection, NcCheckboxRadioSwitch, diff --git a/src/components/ConversationSettings/MentionsSettings.vue b/src/components/ConversationSettings/MentionsSettings.vue new file mode 100644 index 00000000000..744b605455e --- /dev/null +++ b/src/components/ConversationSettings/MentionsSettings.vue @@ -0,0 +1,141 @@ + + + + + + + diff --git a/src/constants.js b/src/constants.js index 6d617d5736b..992c77bc3bb 100644 --- a/src/constants.js +++ b/src/constants.js @@ -56,6 +56,11 @@ export const CONVERSATION = { ALL: 2, }, + MENTION_PERMISSIONS: { + EVERYONE: 0, + MODERATORS: 1, + }, + TYPE: { ONE_TO_ONE: 1, GROUP: 2, diff --git a/src/services/conversationsService.js b/src/services/conversationsService.js index c2fc37cf0a8..b565f942566 100644 --- a/src/services/conversationsService.js +++ b/src/services/conversationsService.js @@ -306,6 +306,12 @@ const changeListable = async function(token, listable) { }) } +const setMentionPermissions = async function(token, mentionPermissions) { + return axios.put(generateOcsUrl('apps/spreed/api/v4/room/{token}/mention-permissions', { token }), { + mentionPermissions, + }) +} + /** * Set the default permissions for participants in a conversation. * @@ -375,4 +381,5 @@ export { setConversationPermissions, setCallPermissions, setMessageExpiration, + setMentionPermissions, } diff --git a/src/store/conversationsStore.js b/src/store/conversationsStore.js index febdd3db5c9..295ec7d94cf 100644 --- a/src/store/conversationsStore.js +++ b/src/store/conversationsStore.js @@ -46,6 +46,7 @@ import { setConversationPassword, createPublicConversation, createPrivateConversation, + setMentionPermissions, } from '../services/conversationsService.js' import { clearConversationHistory, @@ -75,6 +76,7 @@ const DUMMY_CONVERSATION = { participantType: PARTICIPANT.TYPE.USER, readOnly: CONVERSATION.STATE.READ_ONLY, listable: CONVERSATION.LISTABLE.NONE, + mentions: CONVERSATION.MENTION_PERMISSIONS.EVERYONE, hasCall: false, canStartCall: false, lobbyState: WEBINAR.LOBBY.NONE, @@ -228,6 +230,10 @@ const mutations = { Vue.set(state.conversations[token], 'callPermissions', permissions) }, + setMentionPermissions(state, { token, mentionPermissions }) { + Vue.set(state.conversations[token], 'mentionPermissions', mentionPermissions) + }, + setCallRecording(state, { token, callRecording }) { Vue.set(state.conversations[token], 'callRecording', callRecording) }, @@ -975,6 +981,15 @@ const actions = { } }, + async setMentionPermissions(context, { token, mentionPermissions }) { + try { + await setMentionPermissions(token, mentionPermissions) + context.commit('setMentionPermissions', { token, mentionPermissions }) + } catch (error) { + console.error('Error while updating mention permissions: ', error) + } + }, + async startCallRecording(context, { token, callRecording }) { try { await startCallRecording(token, callRecording)