From 18bb86a7a9efdccaa50ad886faf1c0508fa3b1a7 Mon Sep 17 00:00:00 2001 From: adb Date: Tue, 8 Jun 2021 22:06:00 +0200 Subject: [PATCH] refactor Components, add newRoom.vue/userSearch.vue/popup.vue/overlay.vue/imageViewer.vue, some design changes --- package.json | 1 + src/App.vue | 2 +- src/{views => components/chat}/chat.vue | 12 +-- src/components/{ => chat}/chatInformation.vue | 52 +++++---- src/components/{ => chat}/event.vue | 4 +- src/components/{ => chat}/eventContent.vue | 30 +++--- src/components/{ => chat}/newMessage.vue | 10 +- src/components/{ => chat}/replyEvent.vue | 0 src/components/{ => chat}/timeline.vue | 4 +- src/components/{ => chat}/topBanner.vue | 14 +-- src/components/{ => layout}/error.vue | 0 src/components/{ => layout}/fileUpload.vue | 2 +- src/components/{ => layout}/icon.vue | 0 src/components/layout/imageViewer.vue | 41 +++++++ src/components/layout/overlay.vue | 24 +++++ src/components/layout/popup.vue | 91 ++++++++++++++++ src/components/layout/popupQuestion.vue | 33 ++++++ src/components/{ => layout}/soundRecorder.vue | 2 +- src/components/layout/textbtn.vue | 55 ++++++++++ src/components/{ => layout}/throbber.vue | 3 + src/components/{ => matrix}/avatar.vue | 0 src/components/matrix/newRoom.vue | 86 +++++++++++++++ .../{ => matrix}/roomListElement.vue | 24 +++-- .../{ => matrix}/userListElement.vue | 37 +++++-- src/components/matrix/userSearch.vue | 78 ++++++++++++++ src/components/popupQuestion.vue | 34 ------ src/components/textbtn.vue | 34 ------ src/components/throbberOverlay.vue | 36 ------- src/lib/getMxc.js | 6 ++ src/lib/matrixUtils.js | 12 +++ src/router/index.js | 6 -- src/views/admin.vue | 20 ++-- src/views/login.vue | 20 ++-- src/views/rooms.vue | 102 +++++++++++------- 34 files changed, 618 insertions(+), 257 deletions(-) rename src/{views => components/chat}/chat.vue (92%) rename src/components/{ => chat}/chatInformation.vue (60%) rename src/components/{ => chat}/event.vue (96%) rename src/components/{ => chat}/eventContent.vue (85%) rename src/components/{ => chat}/newMessage.vue (96%) rename src/components/{ => chat}/replyEvent.vue (100%) rename src/components/{ => chat}/timeline.vue (96%) rename src/components/{ => chat}/topBanner.vue (80%) rename src/components/{ => layout}/error.vue (100%) rename src/components/{ => layout}/fileUpload.vue (94%) rename src/components/{ => layout}/icon.vue (100%) create mode 100644 src/components/layout/imageViewer.vue create mode 100644 src/components/layout/overlay.vue create mode 100644 src/components/layout/popup.vue create mode 100644 src/components/layout/popupQuestion.vue rename src/components/{ => layout}/soundRecorder.vue (97%) create mode 100644 src/components/layout/textbtn.vue rename src/components/{ => layout}/throbber.vue (89%) rename src/components/{ => matrix}/avatar.vue (100%) create mode 100644 src/components/matrix/newRoom.vue rename src/components/{ => matrix}/roomListElement.vue (79%) rename src/components/{ => matrix}/userListElement.vue (61%) create mode 100644 src/components/matrix/userSearch.vue delete mode 100644 src/components/popupQuestion.vue delete mode 100644 src/components/textbtn.vue delete mode 100644 src/components/throbberOverlay.vue diff --git a/package.json b/package.json index 79d8baa..eac8b39 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "sass": "^1.29.0", "superagent": "^6.1.0", "v-emoji-picker": "^2.3.1", + "viewerjs": "*", "vue": "^2.6.11", "ws": "^7.3.1" }, diff --git a/src/App.vue b/src/App.vue index fdb670e..58d50b1 100644 --- a/src/App.vue +++ b/src/App.vue @@ -8,7 +8,7 @@ @@ -40,6 +39,7 @@ export default { width: 100%; height: 3.5rem; background-color: #1d1d1d; + cursor: pointer; } .topIcon{ position: absolute; diff --git a/src/components/error.vue b/src/components/layout/error.vue similarity index 100% rename from src/components/error.vue rename to src/components/layout/error.vue diff --git a/src/components/fileUpload.vue b/src/components/layout/fileUpload.vue similarity index 94% rename from src/components/fileUpload.vue rename to src/components/layout/fileUpload.vue index 5c32d3f..2569d00 100644 --- a/src/components/fileUpload.vue +++ b/src/components/layout/fileUpload.vue @@ -14,7 +14,7 @@ + + \ No newline at end of file diff --git a/src/components/layout/overlay.vue b/src/components/layout/overlay.vue new file mode 100644 index 0000000..95b82ff --- /dev/null +++ b/src/components/layout/overlay.vue @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/src/components/layout/popup.vue b/src/components/layout/popup.vue new file mode 100644 index 0000000..516705a --- /dev/null +++ b/src/components/layout/popup.vue @@ -0,0 +1,91 @@ + + + + + \ No newline at end of file diff --git a/src/components/layout/popupQuestion.vue b/src/components/layout/popupQuestion.vue new file mode 100644 index 0000000..7f88487 --- /dev/null +++ b/src/components/layout/popupQuestion.vue @@ -0,0 +1,33 @@ + + + + + \ No newline at end of file diff --git a/src/components/soundRecorder.vue b/src/components/layout/soundRecorder.vue similarity index 97% rename from src/components/soundRecorder.vue rename to src/components/layout/soundRecorder.vue index 52bef27..a3a9b16 100644 --- a/src/components/soundRecorder.vue +++ b/src/components/layout/soundRecorder.vue @@ -22,7 +22,7 @@ + + \ No newline at end of file diff --git a/src/components/throbber.vue b/src/components/layout/throbber.vue similarity index 89% rename from src/components/throbber.vue rename to src/components/layout/throbber.vue index 69f19e0..cb167f2 100644 --- a/src/components/throbber.vue +++ b/src/components/layout/throbber.vue @@ -17,6 +17,9 @@ export default { \ No newline at end of file diff --git a/src/components/roomListElement.vue b/src/components/matrix/roomListElement.vue similarity index 79% rename from src/components/roomListElement.vue rename to src/components/matrix/roomListElement.vue index d2ddd6a..4016b5b 100644 --- a/src/components/roomListElement.vue +++ b/src/components/matrix/roomListElement.vue @@ -2,20 +2,20 @@
{{room.name}}
-
{{getPreviewString(room)}}
+
{{previewString}}
diff --git a/src/components/userListElement.vue b/src/components/matrix/userListElement.vue similarity index 61% rename from src/components/userListElement.vue rename to src/components/matrix/userListElement.vue index 831662a..85bfc89 100644 --- a/src/components/userListElement.vue +++ b/src/components/matrix/userListElement.vue @@ -1,21 +1,21 @@ @@ -50,11 +54,11 @@ export default { position: absolute; bottom: 0; right: 0; - height: 0.6rem; - width: 0.6rem; + height: 0.5rem; + width: 0.5rem; background-color: #42b983; border-radius: 50%; - border: 0.2rem solid #222; + border: 2px solid #222; } } .userListName{ @@ -81,4 +85,15 @@ export default { .userListElement:hover{ background-color: #4444; } +.userListElement.compact{ + height: 1.5rem; +} +.imageContainer.compact{ + height: 1.5rem; + width: 1.5rem; +} +.userListName.compact{ + left: 2.5rem; + font-size: 1rem; +} \ No newline at end of file diff --git a/src/components/matrix/userSearch.vue b/src/components/matrix/userSearch.vue new file mode 100644 index 0000000..7bb841d --- /dev/null +++ b/src/components/matrix/userSearch.vue @@ -0,0 +1,78 @@ + + + + + \ No newline at end of file diff --git a/src/components/popupQuestion.vue b/src/components/popupQuestion.vue deleted file mode 100644 index a643d45..0000000 --- a/src/components/popupQuestion.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/textbtn.vue b/src/components/textbtn.vue deleted file mode 100644 index 1a3b97d..0000000 --- a/src/components/textbtn.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/throbberOverlay.vue b/src/components/throbberOverlay.vue deleted file mode 100644 index eeb511b..0000000 --- a/src/components/throbberOverlay.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/lib/getMxc.js b/src/lib/getMxc.js index 5d25704..c2e404a 100644 --- a/src/lib/getMxc.js +++ b/src/lib/getMxc.js @@ -18,6 +18,12 @@ export function getMxcFromRoomId(roomId){ return getMxcFromRoom(matrix.client.getRoom(roomId)); } +export function getMxcFromChat(room){ + return Object.keys(room.currentState.members).length===2 + ?getMxcFromUserId(Object.keys(room.currentState.members).filter(tmp=>tmp!==matrix.user)[0]) + :getMxcFromRoom(room); +} + export function getPreviewUrl(mxcUrl, size = 64, resizeMethod = 'crop'){ return matrix.client.mxcUrlToHttp(mxcUrl, size, size, resizeMethod); } diff --git a/src/lib/matrixUtils.js b/src/lib/matrixUtils.js index 070115b..46575d4 100644 --- a/src/lib/matrixUtils.js +++ b/src/lib/matrixUtils.js @@ -15,4 +15,16 @@ export function isValidUserId(id){ } export function isValidRoomId(id){ return id.match(/^(#|!)[a-zA-Z0-9_.+-]+:[a-z0-9.-]+\.[a-z]+$/); +} +export async function createRoom({name = '', users = [], description = undefined, access = 'private'}){ + if (users.length === 0) return; + return matrix.client.createRoom({name}).then(async room => { + await Promise.all(users.map(async user => await matrix.client.invite(room.room_id, user.userId))); + if (description) await matrix.client.setRoomTopic(room.room_id, description); + await matrix.client.setGuestAccess(room.room_id, access === 'public' + ?{allowJoin: true, allowRead: true} + :{allowJoin: false, allowRead: false} + ); + return matrix.client.getRoom(room.room_id); + }); } \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js index b42bd93..6c09f04 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,6 +1,5 @@ import VueRouter from 'vue-router'; import login from '@/views/login'; -import chat from '@/views/chat'; import rooms from '@/views/rooms'; import admin from '@/views/admin'; @@ -16,11 +15,6 @@ export const router = new VueRouter({ name: 'login', component: login }, - { - path: '/chat/*', - name: 'chat', - component: chat - }, { path: '/rooms/*', name: 'room', diff --git a/src/views/admin.vue b/src/views/admin.vue index b92b138..111f24a 100644 --- a/src/views/admin.vue +++ b/src/views/admin.vue @@ -33,23 +33,25 @@ - +