diff --git a/lib/Chat/Parser/SystemMessage.php b/lib/Chat/Parser/SystemMessage.php index 673d7121f35..4c4d1ae192f 100644 --- a/lib/Chat/Parser/SystemMessage.php +++ b/lib/Chat/Parser/SystemMessage.php @@ -411,8 +411,14 @@ public function parseMessage(Message $chatMessage): void { $parsedParameters['file'] = $this->getFileFromShare($participant, $parameters['share']); $parsedMessage = '{file}'; $metaData = $parameters['metaData'] ?? []; - if (isset($metaData['messageType']) && $metaData['messageType'] === 'voice-message') { - $chatMessage->setMessageType('voice-message'); + if (isset($metaData['messageType'])) { + if ($metaData['messageType'] === 'voice-message') { + $chatMessage->setMessageType('voice-message'); + } elseif ($metaData['messageType'] === 'record-audio') { + $chatMessage->setMessageType('record-audio'); + } elseif ($metaData['messageType'] === 'record-video') { + $chatMessage->setMessageType('record-video'); + } } else { $chatMessage->setMessageType(ChatManager::VERB_MESSAGE); } diff --git a/lib/Controller/ChatController.php b/lib/Controller/ChatController.php index 68bbb6e8e9c..c9f8f2b4ae5 100644 --- a/lib/Controller/ChatController.php +++ b/lib/Controller/ChatController.php @@ -819,6 +819,8 @@ public function getObjectsSharedInRoomOverview(int $limit = 7): DataResponse { Attachment::TYPE_MEDIA, Attachment::TYPE_OTHER, Attachment::TYPE_POLL, + Attachment::TYPE_RECORD_AUDIO, + Attachment::TYPE_RECORD_VIDEO, Attachment::TYPE_VOICE, ]; diff --git a/lib/Model/Attachment.php b/lib/Model/Attachment.php index a896ef1b8cb..32b7da856a3 100644 --- a/lib/Model/Attachment.php +++ b/lib/Model/Attachment.php @@ -47,6 +47,8 @@ class Attachment extends Entity { public const TYPE_MEDIA = 'media'; public const TYPE_OTHER = 'other'; public const TYPE_POLL = 'poll'; + public const TYPE_RECORD_AUDIO = 'record-audio'; + public const TYPE_RECORD_VIDEO = 'record-video'; public const TYPE_VOICE = 'voice'; /** @var int */ diff --git a/lib/Service/AttachmentService.php b/lib/Service/AttachmentService.php index 52a5006b94f..ea1bb670c8e 100644 --- a/lib/Service/AttachmentService.php +++ b/lib/Service/AttachmentService.php @@ -61,7 +61,11 @@ public function createAttachmentEntry(Room $room, IComment $comment, string $mes $messageType = $parameters['metaData']['messageType'] ?? ''; $mimetype = $parameters['metaData']['mimeType'] ?? ''; - if ($messageType === 'voice-message') { + if ($messageType === 'record-audio') { + $attachment->setObjectType(Attachment::TYPE_RECORD_AUDIO); + } elseif ($messageType === 'record-video') { + $attachment->setObjectType(Attachment::TYPE_RECORD_VIDEO); + } elseif ($messageType === 'voice-message') { $attachment->setObjectType(Attachment::TYPE_VOICE); } elseif (str_starts_with($mimetype, 'audio/')) { $attachment->setObjectType(Attachment::TYPE_AUDIO); diff --git a/src/components/RightSidebar/SharedItems/SharedItemsTab.vue b/src/components/RightSidebar/SharedItems/SharedItemsTab.vue index 79e3fe9fd09..aab72ad9737 100644 --- a/src/components/RightSidebar/SharedItems/SharedItemsTab.vue +++ b/src/components/RightSidebar/SharedItems/SharedItemsTab.vue @@ -186,6 +186,9 @@ export default { return t('spreed', 'Show all locations') case SHARED_ITEM.TYPES.AUDIO: return t('spreed', 'Show all audio') + case SHARED_ITEM.TYPES.RECORD_AUDIO: + case SHARED_ITEM.TYPES.RECORD_VIDEO: + return t('spreed', 'Show all call recordings') case SHARED_ITEM.TYPES.OTHER: default: return t('spreed', 'Show all other') diff --git a/src/constants.js b/src/constants.js index ca6c90f9029..895b89e1033 100644 --- a/src/constants.js +++ b/src/constants.js @@ -155,6 +155,8 @@ export const SHARED_ITEM = { MEDIA: 'media', OTHER: 'other', POLL: 'poll', + RECORD_AUDIO: 'record-audio', + RECORD_VIDEO: 'record-video', VOICE: 'voice', }, } diff --git a/src/mixins/sharedItems.js b/src/mixins/sharedItems.js index 93db849eddf..3ffd461e123 100644 --- a/src/mixins/sharedItems.js +++ b/src/mixins/sharedItems.js @@ -26,7 +26,7 @@ const sharedItems = { computed: { // Defines the order of the sections sharedItemsOrder() { - return [SHARED_ITEM.TYPES.MEDIA, SHARED_ITEM.TYPES.FILE, SHARED_ITEM.TYPES.POLL, SHARED_ITEM.TYPES.VOICE, SHARED_ITEM.TYPES.AUDIO, SHARED_ITEM.TYPES.LOCATION, SHARED_ITEM.TYPES.DECK_CARD, SHARED_ITEM.TYPES.OTHER] + return [SHARED_ITEM.TYPES.MEDIA, SHARED_ITEM.TYPES.FILE, SHARED_ITEM.TYPES.RECORD_AUDIO, SHARED_ITEM.TYPES.RECORD_VIDEO, SHARED_ITEM.TYPES.POLL, SHARED_ITEM.TYPES.VOICE, SHARED_ITEM.TYPES.AUDIO, SHARED_ITEM.TYPES.LOCATION, SHARED_ITEM.TYPES.DECK_CARD, SHARED_ITEM.TYPES.OTHER] }, }, @@ -45,6 +45,9 @@ const sharedItems = { return t('spreed', 'Voice messages') case SHARED_ITEM.TYPES.LOCATION: return t('spreed', 'Locations') + case SHARED_ITEM.TYPES.RECORD_AUDIO: + case SHARED_ITEM.TYPES.RECORD_VIDEO: + return t('spreed', 'Call record') case SHARED_ITEM.TYPES.AUDIO: return t('spreed', 'Audio') default: diff --git a/src/store/sharedItemsStore.js b/src/store/sharedItemsStore.js index 8e1d1c6b7ea..7d917536379 100644 --- a/src/store/sharedItemsStore.js +++ b/src/store/sharedItemsStore.js @@ -38,8 +38,9 @@ const getItemTypeFromMessage = function(message) { } else { const messageType = message.messageType || '' const mimetype = message.messageParameters.file?.mimetype || '' - - if (messageType === 'voice-message') { + if (messageType === 'record-audio' || messageType === 'record-video') { + return SHARED_ITEM.TYPES.RECORD_VIDEO + } else if (messageType === 'voice-message') { return SHARED_ITEM.TYPES.VOICE } else if (mimetype.startsWith('audio/')) { return SHARED_ITEM.TYPES.AUDIO