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