diff --git a/src/components/MessagesList/MessagesGroup/Message/Message.vue b/src/components/MessagesList/MessagesGroup/Message/Message.vue index c98ebe32d1b..13a2c2a3e2b 100644 --- a/src/components/MessagesList/MessagesGroup/Message/Message.vue +++ b/src/components/MessagesList/MessagesGroup/Message/Message.vue @@ -276,6 +276,8 @@ export default { component: FilePreview, props: { token: this.message.token, + messageId: this.message.id, + nextMessageId: this.nextMessageId, itemType, referenceId: this.message.referenceId, file: this.message.messageParameters[p], diff --git a/src/components/MessagesList/MessagesGroup/Message/MessagePart/AudioPlayer.vue b/src/components/MessagesList/MessagesGroup/Message/MessagePart/AudioPlayer.vue index 9f286e9cd58..2591fc2d834 100644 --- a/src/components/MessagesList/MessagesGroup/Message/MessagePart/AudioPlayer.vue +++ b/src/components/MessagesList/MessagesGroup/Message/MessagePart/AudioPlayer.vue @@ -4,9 +4,11 @@ --> @@ -16,6 +18,8 @@ import { t } from '@nextcloud/l10n' import { encodePath } from '@nextcloud/paths' import { generateRemoteUrl } from '@nextcloud/router' +import { EventBus } from '../../../../../services/EventBus.js' + export default { name: 'AudioPlayer', @@ -47,6 +51,17 @@ export default { type: String, default: '', }, + /** + * Message ID. + */ + messageId: { + type: Number, + default: 0, + }, + nextMessageId: { + type: Number, + default: 0, + }, }, computed: { @@ -72,8 +87,37 @@ export default { }, }, + mounted() { + EventBus.on('audio-player-ended', this.autoPlay) + }, + + beforeDestroy() { + EventBus.off('audio-player-ended', this.autoPlay) + }, + methods: { t, + + handleEnded() { + if (!this.nextMessageId) { + return + } + + EventBus.emit('audio-player-ended', this.nextMessageId) + }, + + /** + * Autoplay the audio message as soon as previous one was played + * + * @param {number} messageId Message ID to play. + */ + autoPlay(messageId) { + if (messageId !== this.messageId) { + return + } + + this.$refs.audioPlayer?.play() + }, }, } diff --git a/src/components/MessagesList/MessagesGroup/Message/MessagePart/FilePreview.vue b/src/components/MessagesList/MessagesGroup/Message/MessagePart/FilePreview.vue index 63755e34282..bda35a4c5f8 100644 --- a/src/components/MessagesList/MessagesGroup/Message/MessagePart/FilePreview.vue +++ b/src/components/MessagesList/MessagesGroup/Message/MessagePart/FilePreview.vue @@ -115,6 +115,16 @@ export default { required: true, }, + messageId: { + type: [String, Number], + default: 0, + }, + + nextMessageId: { + type: [String, Number], + default: 0, + }, + /** * File object */ @@ -245,6 +255,8 @@ export default { name: this.file.name, path: this.file.path, link: this.file.link, + messageId: Number(this.messageId), + nextMessageId: Number(this.nextMessageId), } } return {