diff --git a/src/components/Chat.vue b/src/components/Chat.vue
index 0fa3de7..80f8d8a 100644
--- a/src/components/Chat.vue
+++ b/src/components/Chat.vue
@@ -54,7 +54,7 @@
-
+
@@ -478,6 +478,7 @@ export default {
/** If we just created this room, show a small welcome header with info */
hideRoomWelcomeHeader: false,
+ newlyJoinedRoom: false,
/** An array of recent emojis. Used in the "message operations" popup. */
recentEmojis: [],
@@ -830,6 +831,7 @@ export default {
this.typingMembers = [];
this.initialLoadDone = false;
this.hideRoomWelcomeHeader = false;
+ this.newlyJoinedRoom = false;
// Stop RR timer
this.stopRRTimer();
@@ -957,6 +959,16 @@ export default {
},
onRoomJoined(initialEventId) {
+ // If our own join event is less than a minute old, consider this a "newly joined" room.
+ //
+ // Previously tried to look at initialEventId, but it seems like "this.room.getEventReadUpTo(this.$matrix.currentUserId, false)"
+ // always returns an event id? Strange. I would expect it to be null on a fresh room.
+ //
+ const joinEvent = this.room && this.room.currentState.getStateEvents("m.room.member", this.$matrix.currentUserId);
+ if (joinEvent) {
+ this.newlyJoinedRoom = joinEvent.getLocalAge() < 1 * 60000 /* 1 minute */;
+ }
+
// Listen to events
this.$matrix.on("Room.timeline", this.onEvent);
this.$matrix.on("RoomMember.typing", this.onUserTyping);
diff --git a/src/components/welcome_headers/WelcomeHeaderChannel.vue b/src/components/welcome_headers/WelcomeHeaderChannel.vue
index ae913ad..6d6c163 100644
--- a/src/components/welcome_headers/WelcomeHeaderChannel.vue
+++ b/src/components/welcome_headers/WelcomeHeaderChannel.vue
@@ -20,12 +20,8 @@
{{ messageRetentionDisplay }}
-
-
-
diff --git a/src/components/welcome_headers/WelcomeHeaderChannelUser.vue b/src/components/welcome_headers/WelcomeHeaderChannelUser.vue
index 30af81a..943f0e0 100644
--- a/src/components/welcome_headers/WelcomeHeaderChannelUser.vue
+++ b/src/components/welcome_headers/WelcomeHeaderChannelUser.vue
@@ -1,5 +1,11 @@