mirror of
https://github.com/danbulant/Nertivia-Client
synced 2026-06-18 22:11:03 +00:00
group messages when by same user
This commit is contained in:
parent
ed303363f0
commit
074ff1b090
3 changed files with 63 additions and 22 deletions
|
|
@ -15,7 +15,6 @@
|
|||
</div>
|
||||
</div>
|
||||
<message
|
||||
class="message-container"
|
||||
v-for="(msg, index) in selectedChannelMessages"
|
||||
:class="{
|
||||
'show-message-animation': index === selectedChannelMessages.length - 1
|
||||
|
|
@ -24,8 +23,9 @@
|
|||
:creator="msg.creator"
|
||||
:message="msg"
|
||||
:isServer="isServer"
|
||||
:hideAditional="groupedMessages.includes(msg.messageID)"
|
||||
/>
|
||||
|
||||
<!-- {{ groupedMessages }} -->
|
||||
<uploadsQueue v-if="uploadQueue !== undefined" :queue="uploadQueue" />
|
||||
<div
|
||||
class="load-more-button"
|
||||
|
|
@ -321,6 +321,32 @@ export default {
|
|||
return (
|
||||
this.$store.getters.bottomUnloaded[this.selectedChannelID] || false
|
||||
);
|
||||
},
|
||||
groupedMessages() {
|
||||
const messages = this.selectedChannelMessages;
|
||||
const grouped = [];
|
||||
let groupLength = 0;
|
||||
let prevMessageCreator = null;
|
||||
for (let index = 0; index < messages.length; index++) {
|
||||
const message = messages[index];
|
||||
if (message.type !== 0 && message.type !== undefined) {
|
||||
groupLength = 0;
|
||||
prevMessageCreator = null;
|
||||
continue;
|
||||
}
|
||||
if (message.creator.uniqueID !== prevMessageCreator) {
|
||||
groupLength = 0;
|
||||
prevMessageCreator = message.creator.uniqueID;
|
||||
} else {
|
||||
if (groupLength > 3) {
|
||||
groupLength = 0;
|
||||
continue;
|
||||
}
|
||||
grouped.push(message.messageID);
|
||||
groupLength += 1;
|
||||
}
|
||||
}
|
||||
return grouped;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div
|
||||
class="container"
|
||||
:class="{ 'mentioned-message': mentioned }"
|
||||
class="message-container container"
|
||||
:class="{ 'mentioned-message': mentioned, hideAditional }"
|
||||
@mouseover="mouseOverEvent"
|
||||
@mouseleave="hover = false"
|
||||
>
|
||||
|
|
@ -18,6 +18,7 @@
|
|||
>
|
||||
<div class="avatar">
|
||||
<profile-picture
|
||||
v-if="!hideAditional"
|
||||
:admin="creator.admin"
|
||||
:url="`${userAvatar}${hover || !isGif ? '' : '?type=webp'}`"
|
||||
size="50px"
|
||||
|
|
@ -26,10 +27,10 @@
|
|||
/>
|
||||
</div>
|
||||
<div class="triangle">
|
||||
<div class="triangle-inner" />
|
||||
<div class="triangle-inner" v-if="!hideAditional" />
|
||||
</div>
|
||||
<div class="content" @dblclick="contentDoubleClickEvent">
|
||||
<div class="user-info">
|
||||
<div class="user-info" v-if="!hideAditional">
|
||||
<div
|
||||
class="username"
|
||||
:style="{ color: roleColor }"
|
||||
|
|
@ -150,7 +151,7 @@ import windowProperties from "@/utils/windowProperties";
|
|||
import { mapState } from "vuex";
|
||||
|
||||
export default {
|
||||
props: ["creator", "message", "isServer"],
|
||||
props: ["creator", "message", "isServer", "hideAditional"],
|
||||
components: {
|
||||
ProfilePicture,
|
||||
messageEmbedTemplate,
|
||||
|
|
@ -385,7 +386,19 @@ $message-color: rgba(0, 0, 0, 0.3);
|
|||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.hideAditional {
|
||||
.content {
|
||||
border-radius: 4px;
|
||||
}
|
||||
.avatar {
|
||||
height: 46px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.triangle {
|
||||
width: 8px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
.drop-down-button {
|
||||
opacity: 0;
|
||||
transition: 0.2s;
|
||||
|
|
@ -513,6 +526,8 @@ $message-color: rgba(0, 0, 0, 0.3);
|
|||
|
||||
.avatar {
|
||||
margin: auto 0 0 0;
|
||||
height: 56px;
|
||||
width: 56px;
|
||||
}
|
||||
|
||||
.triangle {
|
||||
|
|
|
|||
|
|
@ -2,30 +2,25 @@
|
|||
<div class="my-profile-panel message-design">
|
||||
<div class="message-example">
|
||||
<message-template
|
||||
message="Hi"
|
||||
:username="user.username"
|
||||
:message="{ message: 'Hi', created: Date.now() }"
|
||||
:creator="user"
|
||||
:date="Date.now()"
|
||||
:unique-i-d="user.uniqueID"
|
||||
:admin="user.admin"
|
||||
:avatar="user.avatar"
|
||||
/>
|
||||
<message-template
|
||||
message="Hello."
|
||||
username="Cool Dude"
|
||||
:message="{ message: 'Hello.', created: Date.now() }"
|
||||
:creator="dummyUser"
|
||||
:date="Date.now()"
|
||||
/>
|
||||
<message-template
|
||||
message="Whaddup"
|
||||
:username="user.username"
|
||||
:message="{ message: 'Whaddup', created: Date.now() }"
|
||||
:creator="user"
|
||||
:date="Date.now()"
|
||||
:unique-i-d="user.uniqueID"
|
||||
:admin="user.admin"
|
||||
:avatar="user.avatar"
|
||||
/>
|
||||
<message-template
|
||||
message="Nothing, bye."
|
||||
username="Cool Dude"
|
||||
:date="Date.now()"
|
||||
:message="{ message: 'Nothing, bye.', created: Date.now() }"
|
||||
:creator="dummyUser"
|
||||
/>
|
||||
</div>
|
||||
<div class="options">
|
||||
|
|
@ -82,7 +77,12 @@ export default {
|
|||
MessageTemplate
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
return {
|
||||
dummyUser: {
|
||||
username: "Cool Dude",
|
||||
uniqueID: "dummy"
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
apperance() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue