diff --git a/src/assets/css/chat.scss b/src/assets/css/chat.scss
index f8a702d..f32689f 100644
--- a/src/assets/css/chat.scss
+++ b/src/assets/css/chat.scss
@@ -128,7 +128,7 @@ $chat-text-size: 0.7pt;
}
}
-.sender {
+.sender, .status {
font-family: 'Titillium Web', sans-serif;
font-weight: 300;
font-size: 15 * $chat-text-size;
@@ -151,3 +151,12 @@ $chat-text-size: 0.7pt;
text-align: center;
color: #1c242a;
}
+
+.statusEvent {
+ font-family: 'Titillium Web', sans-serif;
+ font-weight: 300;
+ font-size: 15 * $chat-text-size;
+ color: #1c242a;
+ text-align: center;
+ margin: 20px;
+}
\ No newline at end of file
diff --git a/src/components/Chat.vue b/src/components/Chat.vue
index ea2f53a..c3c5337 100644
--- a/src/components/Chat.vue
+++ b/src/components/Chat.vue
@@ -4,8 +4,9 @@
class="chat-content flex-grow-1 flex-shrink-1"
ref="chatContainer"
style="overflow-x: hidden; overflow-y: auto"
+ v-on:scroll="onScroll"
>
-
+
-
{{ event.getSender() }}
+
{{ messageEventDisplayName(event) }}
{{ event.getContent().body }}
@@ -64,11 +64,30 @@
{{ event.getContent().body }}
+
{{ event.status }}
{{ formatTime(event.event.origin_server_ts) }}
+
+
+
+ {{ stateEventDisplayName(event) }} changed room name to {{ event.getContent().name }}
+
+
+
+
+ {{ stateEventDisplayName(event) }} changed topic to {{ event.getContent().topic }}
+
+
+
+
+ {{ stateEventDisplayName(event) }} changed the room avatar
+
+
+
Event: {{ event.getType() }}
+
Someone is typing...
@@ -98,15 +117,59 @@
diff --git a/src/components/RoomList.vue b/src/components/RoomList.vue
index 2685bfc..1443959 100644
--- a/src/components/RoomList.vue
+++ b/src/components/RoomList.vue
@@ -1,11 +1,11 @@
-
+
ROOMS
-
-
-
+
+
+
{{ room.summary.info.title }}
{{ room.topic }}
diff --git a/src/services/matrix.service.js b/src/services/matrix.service.js
index ad2b98d..2945c32 100644
--- a/src/services/matrix.service.js
+++ b/src/services/matrix.service.js
@@ -99,7 +99,8 @@ export default {
store: matrixStore,
sessionStore: webStorageSessionStore,
deviceId: user.device_id,
- accessToken: user.access_token
+ accessToken: user.access_token,
+ timelineSupport: true
}
this.matrixClient = sdk.createClient(opts);
return this.matrixClient
@@ -147,17 +148,30 @@ export default {
},
onEvent(event) {
- if (event.getType() == "m.room.topic") {
- const room = this.matrixClient.getRoom(event.getRoomId());
- if (room) {
- Vue.set(room, "topic", event.getContent().topic);
+ switch (event.getType()) {
+ case "m.room.topic": {
+ const room = this.matrixClient.getRoom(event.getRoomId());
+ if (room) {
+ Vue.set(room, "topic", event.getContent().topic);
+ }
}
- return;
- }
+ break;
+
+ case "m.room.avatar": {
+ const room = this.matrixClient.getRoom(event.getRoomId());
+ if (room) {
+ Vue.set(room, "avatar", room.getAvatarUrl(this.matrixClient.getHomeserverUrl(), 80, 80, "scale", true));
+ }
+ }
+ break;
+ }
},
reloadRooms() {
this.rooms = this.matrixClient.getVisibleRooms();
+ this.rooms.forEach(room => {
+ Vue.set(room, "avatar", room.getAvatarUrl(this.matrixClient.getHomeserverUrl(), 80, 80, "scale", true));
+ });
},
setCurrentRoomId(roomId) {