From 63d3f6fb47970dab0a0f4dd9799e4a81333e2a91 Mon Sep 17 00:00:00 2001 From: adb Date: Mon, 22 Mar 2021 22:41:12 +0100 Subject: [PATCH] refactor/split to roomListElement/userListElement --- .../{userThumbnail.vue => avatar.vue} | 0 src/components/chatInformation.vue | 98 +++++++------------ src/components/roomListElement.vue | 92 +++++++++++++++++ src/components/timeline.vue | 20 +--- src/components/topBanner.vue | 76 +++++--------- src/components/userListElement.vue | 84 ++++++++++++++++ src/lib/getMxc.js | 19 ++++ src/lib/matrixHandler.js | 4 +- src/views/rooms.vue | 54 ++-------- 9 files changed, 272 insertions(+), 175 deletions(-) rename src/components/{userThumbnail.vue => avatar.vue} (100%) create mode 100644 src/components/roomListElement.vue create mode 100644 src/components/userListElement.vue create mode 100644 src/lib/getMxc.js diff --git a/src/components/userThumbnail.vue b/src/components/avatar.vue similarity index 100% rename from src/components/userThumbnail.vue rename to src/components/avatar.vue diff --git a/src/components/chatInformation.vue b/src/components/chatInformation.vue index 132a7d5..b2b70f3 100644 --- a/src/components/chatInformation.vue +++ b/src/components/chatInformation.vue @@ -1,26 +1,21 @@ \ No newline at end of file diff --git a/src/components/roomListElement.vue b/src/components/roomListElement.vue new file mode 100644 index 0000000..b272edc --- /dev/null +++ b/src/components/roomListElement.vue @@ -0,0 +1,92 @@ + + + + + \ No newline at end of file diff --git a/src/components/timeline.vue b/src/components/timeline.vue index 1325daf..229e273 100644 --- a/src/components/timeline.vue +++ b/src/components/timeline.vue @@ -9,7 +9,7 @@
- import message from "@/components/message"; -import userThumbnail from "@/components/userThumbnail"; +import avatar from "@/components/avatar"; import {matrix} from "@/main"; import splitArray from "@/lib/splitArray"; import {getDate, getTime} from "@/lib/getTimeStrings"; -import sdk from "matrix-js-sdk" - export default { name: 'eventGroup', components: { message, - userThumbnail + avatar }, props: { timeline: Array, @@ -73,18 +71,6 @@ export default { getUser(userId) { return matrix.client.getUser(userId); }, - getReplyId(event){ - if(!event.content['m.relates_to']) return undefined; - if(!event.content['m.relates_to']['m.in_reply_to']) return undefined; - return event.content['m.relates_to']['m.in_reply_to'].event_id || undefined; - }, - async getReplyEvent(event, callback){ - let replyId = this.getReplyId(event); - if (replyId === undefined) return undefined; - await matrix.client.fetchRoomEvent(this.roomId, replyId).then((res) => { - callback(new sdk.MatrixEvent(res)); - }); - }, splitArray, getDate, getTime diff --git a/src/components/topBanner.vue b/src/components/topBanner.vue index a2e0a26..802c506 100644 --- a/src/components/topBanner.vue +++ b/src/components/topBanner.vue @@ -1,45 +1,34 @@ @@ -52,43 +41,30 @@ export default { height: 3.5rem; background-color: #1d1d1d; } -.smallIcon{ - top: 0.25rem; - background-color: #2d2d2d; - padding-top: 0.75rem; - height: 1.75rem; - width: 2.5rem; - box-shadow: none; - border-radius: 1.25rem; - text-align: center; - user-select: none; - cursor: pointer; -} -#icon-arrow{ - height: 2.5rem; +.topIcon{ position: absolute; + width: 3rem; + height: 3rem; left: 0.5rem; + top: 0.25rem; background-color: unset; box-shadow: none; } -.userThumbnail{ +.container{ position: absolute; - top: 0.25rem; - left: 3.5rem; - width: 3rem; - height: 3rem; + height: 100%; + width: calc(100% - 3.5rem); + right: 0; } -#container{ +.chatName{ position: absolute; - top: 0.55rem; - left: 7rem; -} -#chatName{ - font-size: 1rem; - color: #ededed; + top: 1rem; + left: 4rem; } -#users{ - font-size: 0.75rem; - color: #9c9c9c; +.info{ + position: absolute; + top: 2rem; + left: 4rem; + font-size: 0.8rem; } \ No newline at end of file diff --git a/src/components/userListElement.vue b/src/components/userListElement.vue new file mode 100644 index 0000000..0ebaa3c --- /dev/null +++ b/src/components/userListElement.vue @@ -0,0 +1,84 @@ + + + + + \ No newline at end of file diff --git a/src/lib/getMxc.js b/src/lib/getMxc.js new file mode 100644 index 0000000..79ddf7b --- /dev/null +++ b/src/lib/getMxc.js @@ -0,0 +1,19 @@ +import sdk from 'matrix-js-sdk' +import {matrix} from "@/main"; + +export function getMxcFromUser(user){ + return user.avatarUrl; +} + +export function getMxcFromUserId(userId){ + return matrix.client.getUser(userId).avatarUrl; +} + +export function getMxcFromRoom(room){ + let avatarState = room.getLiveTimeline().getState(sdk.EventTimeline.FORWARDS).getStateEvents("m.room.avatar"); + return avatarState.length>0?avatarState[avatarState.length-1].getContent().url:undefined; +} + +export function getMxcFromRoomId(roomId){ + return getMxcFromRoom(matrix.client.getRoom(roomId)); +} \ No newline at end of file diff --git a/src/lib/matrixHandler.js b/src/lib/matrixHandler.js index fac9bf5..c7ec4f9 100644 --- a/src/lib/matrixHandler.js +++ b/src/lib/matrixHandler.js @@ -14,7 +14,7 @@ export class MatrixHandler { if (this.client){ console.log('there is already an active session'); return; } this.client = new matrix.createClient({ baseUrl: baseUrl, - sessionStore: new matrix.WebStorageSessionStore(localStorage) + store: new matrix.MemoryStore(window.localStorage) }); this.client.login('m.login.password', { user: user, @@ -45,7 +45,7 @@ export class MatrixHandler { baseUrl, accessToken, userId, - sessionStore: new matrix.WebStorageSessionStore(localStorage) + store: new matrix.MemoryStore(window.localStorage) }); this.user = userId; this.baseUrl = baseUrl; diff --git a/src/views/rooms.vue b/src/views/rooms.vue index 068c4d8..b834472 100644 --- a/src/views/rooms.vue +++ b/src/views/rooms.vue @@ -7,16 +7,11 @@

[chat]


-
- -
{{room.name}}
-
{{getPreviewString(room)}}
-
+
Please select a room to be displayed.
-
-

[c]

-
- -
{{room.name}}
-
-
@@ -47,11 +30,10 @@