summaryrefslogtreecommitdiffstats
path: root/src/components
diff options
context:
space:
mode:
authorMaksim Sukharev <antreesy.web@gmail.com>2023-07-03 17:45:04 +0200
committerbackportbot-nextcloud[bot] <backportbot-nextcloud[bot]@users.noreply.github.com>2023-08-08 07:46:18 +0000
commit213232ba948d704136248fe01ee401d081740830 (patch)
tree6c33fe40fa84e2ff9a8a5f9a7ad9b11bb5a1e6fc /src/components
parentdeb36aa846a9e00062b77be1ea28e595bc82e087 (diff)
sort messages within one group
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
Diffstat (limited to 'src/components')
-rw-r--r--src/components/MessagesList/MessagesGroup/MessagesSystemGroup.vue31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/components/MessagesList/MessagesGroup/MessagesSystemGroup.vue b/src/components/MessagesList/MessagesGroup/MessagesSystemGroup.vue
index 32fde8207..50b71f301 100644
--- a/src/components/MessagesList/MessagesGroup/MessagesSystemGroup.vue
+++ b/src/components/MessagesList/MessagesGroup/MessagesSystemGroup.vue
@@ -70,6 +70,22 @@ import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
import Message from './Message/Message.vue'
+// List only sortable messages with order, in which they should be sorted
+const MESSAGES = {
+ user_added: 1,
+ user_removed: 1,
+ moderator_promoted: 11,
+ guest_moderator_promoted: 11,
+ moderator_demoted: 11,
+ guest_moderator_demoted: 11,
+ call_started: 20,
+ recording_started: 21,
+ call_joined: 22,
+ call_left: 22,
+ call_ended: 23,
+ call_ended_everyone: 23,
+}
+
export default {
name: 'MessagesSystemGroup',
@@ -126,9 +142,10 @@ export default {
watch: {
messages: {
+ deep: true,
immediate: true,
handler(value) {
- this.messagesGroupedBySystemMessage = this.groupMessages(value)
+ this.messagesGroupedBySystemMessage = this.groupMessages(this.sortMessages(value))
},
},
},
@@ -200,6 +217,18 @@ export default {
return ''
},
+ sortMessages(messages) {
+ return messages.slice().sort((message1, message2) => {
+ // Don't sort messages if they're not intended to be sorted
+ if (!MESSAGES[message1.systemMessage] || !MESSAGES[message2.systemMessage]) {
+ return 0
+ }
+
+ // Don't sort related system messages (call join - call left) between each other
+ return MESSAGES[message1.systemMessage] - MESSAGES[message2.systemMessage]
+ })
+ },
+
groupMessages(messages) {
const groups = []
let lastMessage = null