Hide sender and time for back to back messages

This commit is contained in:
N-Pex 2020-12-16 11:21:29 +01:00
parent 7183681e71
commit 2ebe4d982c
5 changed files with 35 additions and 10 deletions

View file

@ -27,7 +27,7 @@
@notify="handleChatContainerResize" @notify="handleChatContainerResize"
/> />
<div v-for="event in events" :key="event.getId()"> <div v-for="(event,index) in events" :key="event.getId()">
<div <div
v-if=" v-if="
!event.isRelation() && !event.isRedacted() && !event.isRedaction() !event.isRelation() && !event.isRedacted() && !event.isRedaction()
@ -49,6 +49,7 @@
:is="componentForEvent(event)" :is="componentForEvent(event)"
:room="room" :room="room"
:event="event" :event="event"
:nextEvent="events[index + 1]"
:reactions=" :reactions="
timelineWindow._timelineSet.getRelationsForEvent( timelineWindow._timelineSet.getRelationsForEvent(
event.getId(), event.getId(),

View file

@ -13,9 +13,11 @@
messageEventDisplayName(event).substring(0, 1).toUpperCase() messageEventDisplayName(event).substring(0, 1).toUpperCase()
}}</span> }}</span>
</v-avatar> </v-avatar>
<div class="sender">{{ messageEventDisplayName(event) }}</div> <div v-if="showSenderAndTime">
<div class="time"> <div class="sender">{{ messageEventDisplayName(event) }}</div>
{{ formatTime(event.event.origin_server_ts) }} <div class="time">
{{ formatTime(event.event.origin_server_ts) }}
</div>
</div> </div>
</div> </div>
</template> </template>

View file

@ -13,9 +13,11 @@
messageEventDisplayName(event).substring(0, 1).toUpperCase() messageEventDisplayName(event).substring(0, 1).toUpperCase()
}}</span> }}</span>
</v-avatar> </v-avatar>
<div class="sender">{{ messageEventDisplayName(event) }}</div> <div v-if="showSenderAndTime">
<div class="time"> <div class="sender">{{ messageEventDisplayName(event) }}</div>
{{ formatTime(event.event.origin_server_ts) }} <div class="time">
{{ formatTime(event.event.origin_server_ts) }}
</div>
</div> </div>
</div> </div>
</template> </template>

View file

@ -24,9 +24,11 @@
<v-btn icon class="op-button" @click.stop="showContextMenu" <v-btn icon class="op-button" @click.stop="showContextMenu"
><v-icon>more_vert</v-icon></v-btn ><v-icon>more_vert</v-icon></v-btn
> >
<div class="sender">{{ messageEventDisplayName(event) }}</div> <div v-if="showSenderAndTime">
<div class="time"> <div class="sender">{{ messageEventDisplayName(event) }}</div>
{{ formatTime(event.event.origin_server_ts) }} <div class="time">
{{ formatTime(event.event.origin_server_ts) }}
</div>
</div> </div>
</div> </div>
</template> </template>

View file

@ -17,6 +17,12 @@ export default {
return {} return {}
} }
}, },
nextEvent: {
type: Object,
default: function () {
return null
}
},
reactions: { reactions: {
type: Object, type: Object,
default: function () { default: function () {
@ -50,6 +56,18 @@ export default {
} }
}, },
computed: { computed: {
/**
* Don't show sender and time if the next event is within 2 minutes and also from us (= back to back messages)
*/
showSenderAndTime() {
if (this.nextEvent && this.nextEvent.getSender() == this.event.getSender()) {
const ts1 = this.nextEvent.event.origin_server_ts;
const ts2 = this.event.event.origin_server_ts;
return (ts1 - ts2) < (2 * 60 * 1000); // less than 2 minutes
}
return true;
},
inReplyToText() { inReplyToText() {
const relatesTo = this.event.getWireContent()['m.relates_to']; const relatesTo = this.event.getWireContent()['m.relates_to'];
if (relatesTo && relatesTo['m.in_reply_to']) if (relatesTo && relatesTo['m.in_reply_to'])