From b5993e821d5cac5704bab624bbaf44d2ee3635ae Mon Sep 17 00:00:00 2001 From: John Hess Date: Wed, 10 Aug 2022 18:01:58 -0500 Subject: [PATCH 01/13] Record events when an invitation is shown to a user and when they join the room --- src/components/Join.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/Join.vue b/src/components/Join.vue index ceed40f..0a9a762 100644 --- a/src/components/Join.vue +++ b/src/components/Join.vue @@ -381,6 +381,7 @@ export default { .then( function (ignoreduser) { console.log("Join: joining room"); + this.$analytics.event("Invitations", "Room Joined"); this.loadingMessage = this.$t("join.status_joining"); return this.$matrix.matrixClient.joinRoom(this.roomId); }.bind(this) @@ -422,6 +423,11 @@ export default { Math.floor(Math.random() * this.availableAvatars.length) ] ); + // mounted() is called more than once, so multiple instances of this event + // do not necessarily indicate a user was shown the join page more than once. + // To analyze this data, segment users into those who have an "Invitations" + // action and set up conversion tracking triggered by Room Joined (once per visit). + this.$analytics.event("Invitations", "Join Page Shown"); }, destroyed() { this.$matrix.off("Room.myMembership", this.onMyMembership); From b84651dbfa92520950f7dcc2132fb4d5ef125628 Mon Sep 17 00:00:00 2001 From: John Hess Date: Wed, 10 Aug 2022 18:02:31 -0500 Subject: [PATCH 02/13] point analytics config to a testing siteId so they do not pollute production data during local dev. --- src/assets/config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/config.json b/src/assets/config.json index ff4e750..389e901 100644 --- a/src/assets/config.json +++ b/src/assets/config.json @@ -15,7 +15,7 @@ "type": "ci", "config": { "server": "https://metrics.cleaninsights.org/cleaninsights.php", - "siteId": 14, + "siteId": 25, "timeout": 5, "persistEveryNTimes": 1, "debug": true, @@ -36,7 +36,7 @@ "type": "matomo", "config": { "server": "https://metrics.cleaninsights.org/", - "siteId": "17" + "siteId": "25" } } ] From 4019d254122817b7fbc4563f54a3f0e1178bc1d6 Mon Sep 17 00:00:00 2001 From: 10G Meow <10gmeow@gmail.com> Date: Sun, 30 Oct 2022 18:28:16 +0200 Subject: [PATCH 03/13] CreateRoom validation improvements --- src/assets/translations/bo.json | 3 ++- src/assets/translations/de.json | 3 ++- src/assets/translations/en.json | 3 ++- src/assets/translations/es.json | 3 ++- src/assets/translations/fi.json | 3 ++- src/assets/translations/fr.json | 3 ++- src/assets/translations/it.json | 3 ++- src/assets/translations/nb_NO.json | 3 ++- src/assets/translations/pt_BR.json | 3 ++- src/assets/translations/ro.json | 3 ++- src/assets/translations/ug.json | 3 ++- src/assets/translations/zh_Hans.json | 3 ++- src/components/CreateRoom.vue | 23 +++++++++++++++++------ 13 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/assets/translations/bo.json b/src/assets/translations/bo.json index 42d9488..ee5586e 100644 --- a/src/assets/translations/bo.json +++ b/src/assets/translations/bo.json @@ -70,7 +70,8 @@ "name_room": "ཁ་བརྡ་ཁང་ལ་མིང་ཐོགས།", "room_topic": "གལ་ཏེ་འདོད་པ་ཡོད་ན། ཚོགས་པའི་སྐོར་གྱི་འགྲེལ་བཤད་ཐུང་ངུ་ཞིག་འབྲི་ཆོག", "create": "བཟོས།", - "room_name_limit_error_msg": "" + "room_name_limit_error_msg": "", + "semicolon_not_allowed": "" }, "menu": { "logout": "ཕྱིར་ཐོན།", diff --git a/src/assets/translations/de.json b/src/assets/translations/de.json index bdd50f5..7334c0f 100644 --- a/src/assets/translations/de.json +++ b/src/assets/translations/de.json @@ -96,7 +96,8 @@ "next": "Nächste", "name_room": "Raum benennen", "room_topic": "Füge eine Beschreibung hinzu, wenn du möchtest", - "room_name_limit_error_msg": "" + "room_name_limit_error_msg": "", + "semicolon_not_allowed": "" }, "device_list": { "title": "GERÄTE", diff --git a/src/assets/translations/en.json b/src/assets/translations/en.json index b795483..a5f9bd1 100644 --- a/src/assets/translations/en.json +++ b/src/assets/translations/en.json @@ -106,7 +106,8 @@ "status_creating": "Creating room", "status_avatar_total": "Uploading avatar: {count} of {total}", "status_avatar": "Uploading avatar: {count}", - "room_name_limit_error_msg": "Maximum 50 characters allowed" + "room_name_limit_error_msg": "Maximum 50 characters allowed", + "semicolon_not_allowed": "Semicolon is allowed" }, "device_list": { "title": "DEVICES", diff --git a/src/assets/translations/es.json b/src/assets/translations/es.json index db9243e..c88d7f2 100644 --- a/src/assets/translations/es.json +++ b/src/assets/translations/es.json @@ -122,7 +122,8 @@ "new_room": "Nueva Sala", "create": "Crear", "room_topic": "Añade una descripción si quieres", - "room_name_limit_error_msg": "" + "room_name_limit_error_msg": "", + "semicolon_not_allowed": "" }, "room_welcome": { "join_public": "Cualquiera puede unirse abriendo este vínculo: {link}", diff --git a/src/assets/translations/fi.json b/src/assets/translations/fi.json index aba08c7..3ad8111 100644 --- a/src/assets/translations/fi.json +++ b/src/assets/translations/fi.json @@ -28,7 +28,8 @@ "add_people": "Lisää ihmisiä", "link_copied": "Linkki kopioitu!", "public_info": "Kuka tahansa, jolla on linkki", - "room_name_limit_error_msg": "" + "room_name_limit_error_msg": "", + "semicolon_not_allowed": "" }, "purge_room": { "n_seconds": "{seconds} sekuntia", diff --git a/src/assets/translations/fr.json b/src/assets/translations/fr.json index b4a1dad..22396f4 100644 --- a/src/assets/translations/fr.json +++ b/src/assets/translations/fr.json @@ -96,7 +96,8 @@ "public_info": "Quiconque avec un lien", "join_permissions_info": "Ces autorisations déterminent comment les personnes peuvent rejoindre le salon et avec quelle facilité d’autres personnes peuvent être invitées. Elles peuvent être modifiées à tout moment.", "status_creating": "Création du salon", - "room_name_limit_error_msg": "" + "room_name_limit_error_msg": "", + "semicolon_not_allowed": "" }, "device_list": { "title": "APPAREILS", diff --git a/src/assets/translations/it.json b/src/assets/translations/it.json index 7e2017b..a59e312 100644 --- a/src/assets/translations/it.json +++ b/src/assets/translations/it.json @@ -95,7 +95,8 @@ "invite_info": "Solo le persone aggiunte", "join_permissions_info": "Questi permessi determinano come le persone possono entrare nella stanza e quanto facilmente gli altri possono essere invitati. Possono essere cambiati in qualsiasi momento.", "public_info": "Chiunque abbia un collegamento", - "room_name_limit_error_msg": "" + "room_name_limit_error_msg": "", + "semicolon_not_allowed": "" }, "device_list": { "title": "DISPOSITIVI", diff --git a/src/assets/translations/nb_NO.json b/src/assets/translations/nb_NO.json index 1e0342d..3597637 100644 --- a/src/assets/translations/nb_NO.json +++ b/src/assets/translations/nb_NO.json @@ -115,7 +115,8 @@ "next": "Neste", "create": "Opprett", "new_room": "Nytt rom", - "room_name_limit_error_msg": "" + "room_name_limit_error_msg": "", + "semicolon_not_allowed": "" }, "room_welcome": { "room_history_is": "Romhistorikken er {type}.", diff --git a/src/assets/translations/pt_BR.json b/src/assets/translations/pt_BR.json index 8c395dc..5b2c83f 100644 --- a/src/assets/translations/pt_BR.json +++ b/src/assets/translations/pt_BR.json @@ -119,7 +119,8 @@ "status_creating": "Criando a sala", "status_avatar_total": "Enviando o avatar: {count} de {total}", "status_avatar": "Enviando avatar: {count}", - "room_name_limit_error_msg": "O máximo de 50 caracteres são permitidos" + "room_name_limit_error_msg": "O máximo de 50 caracteres são permitidos", + "semicolon_not_allowed": "" }, "device_list": { "title": "DISPOSITIVOS", diff --git a/src/assets/translations/ro.json b/src/assets/translations/ro.json index d9df0b9..2353cca 100644 --- a/src/assets/translations/ro.json +++ b/src/assets/translations/ro.json @@ -167,7 +167,8 @@ "next": "Următorul", "create": "Creați", "new_room": "Cameră nouă", - "room_name_limit_error_msg": "" + "room_name_limit_error_msg": "", + "semicolon_not_allowed": "" }, "room_welcome": { "got_it": "L-am prins", diff --git a/src/assets/translations/ug.json b/src/assets/translations/ug.json index 1df59c3..cbefdc5 100644 --- a/src/assets/translations/ug.json +++ b/src/assets/translations/ug.json @@ -84,7 +84,8 @@ "next": "كېيىنكى", "create": "قۇرۇش", "new_room": "يېڭى مۇنازىرەخانا", - "room_name_limit_error_msg": "" + "room_name_limit_error_msg": "", + "semicolon_not_allowed": "" }, "room": { "purge_failed": "مۇنازىرەخانىنى يۇيۇش مەغلۇب بولدى!", diff --git a/src/assets/translations/zh_Hans.json b/src/assets/translations/zh_Hans.json index 570f338..a03a21e 100644 --- a/src/assets/translations/zh_Hans.json +++ b/src/assets/translations/zh_Hans.json @@ -217,7 +217,8 @@ "new_room": "新的聊天室", "room_topic": "如果您愿意,请添加说明", "create": "创建", - "room_name_limit_error_msg": "" + "room_name_limit_error_msg": "", + "semicolon_not_allowed": "" }, "room_welcome": { "got_it": "知道了", diff --git a/src/components/CreateRoom.vue b/src/components/CreateRoom.vue index 79fa4bc..43e72d9 100644 --- a/src/components/CreateRoom.vue +++ b/src/components/CreateRoom.vue @@ -52,6 +52,7 @@ :disabled="step > steps.INITIAL" autofocus solo + @update:error="updateErrorState" >
{{ $t("new_room.room_topic") }}
+
{{roomCreationErrorMsg}}
{{ status }} @@ -298,7 +300,12 @@ export default { name: "" }, enterRoomDialog: false, - roomNamerules: [v => v.length <= 50 || this.$t("new_room.room_name_limit_error_msg")], + roomNamerules: [ + v => v.length <= 50 || this.$t("new_room.room_name_limit_error_msg"), + v => !v.includes(':') || this.$t("new_room.semicolon_not_allowed") + ], + roomNameHasError: false, + roomCreationErrorMsg: "" }; }, @@ -318,6 +325,9 @@ export default { }, }, computed: { + isDisabled() { + return this.status ? true : this.roomName.length === 0 || this.roomName.length > 50 || this.roomNameHasError + }, roomAvatarLetter() { if (!this.roomName) { return null; @@ -337,6 +347,9 @@ export default { }, methods: { + updateErrorState(errorState) { + this.roomNameHasError = errorState + }, goBack() { if (this.step == steps.NAME_SET) { this.step = steps.INITIAL; @@ -578,10 +591,8 @@ export default { return roomId; }) .catch((error) => { - this.status = - (error.data && error.data.error) || - error.message || - error.toString(); + this.status = "" + this.roomCreationErrorMsg = (error.data && error.data.error) || error.message || error.toString(); this.step = steps.INITIAL; // revert return null; }); From 60d0e63e11715af2fcedb6e6c643273d81baf66c Mon Sep 17 00:00:00 2001 From: 10G Meow <10gmeow@gmail.com> Date: Sun, 30 Oct 2022 15:26:15 +0200 Subject: [PATCH 04/13] Edited text improvement --- package-lock.json | 4 ++-- src/assets/css/chat.scss | 3 +++ src/components/messages/MessageIncomingText.vue | 2 +- src/components/messages/MessageOutgoingText.vue | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 93a3aff..62053a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "keanuapp-weblite", - "version": "0.1.25", + "version": "0.1.27", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "keanuapp-weblite", - "version": "0.1.25", + "version": "0.1.27", "dependencies": { "@matrix-org/olm": "^3.2.12", "aes-js": "^3.1.2", diff --git a/src/assets/css/chat.scss b/src/assets/css/chat.scss index 2c1918b..01bdca9 100644 --- a/src/assets/css/chat.scss +++ b/src/assets/css/chat.scss @@ -486,9 +486,12 @@ $admin-fg: white; overflow-wrap: break-word; word-wrap: break-word; white-space: pre-wrap; + text-align: left; + .edit-marker { font-size: 0.8rem; color: #888888; + margin-left: 6px; } .from-admin & { color: $admin-fg; diff --git a/src/components/messages/MessageIncomingText.vue b/src/components/messages/MessageIncomingText.vue index bb5b8cf..b34a3f6 100644 --- a/src/components/messages/MessageIncomingText.vue +++ b/src/components/messages/MessageIncomingText.vue @@ -13,7 +13,7 @@
{{ $t('edited') }}{{ $t('message.edited') }}
diff --git a/src/components/messages/MessageOutgoingText.vue b/src/components/messages/MessageOutgoingText.vue index e193c6b..dd6b3c2 100644 --- a/src/components/messages/MessageOutgoingText.vue +++ b/src/components/messages/MessageOutgoingText.vue @@ -14,7 +14,7 @@
{{ $t('edited') }}{{ $t('message.edited') }}
From f7580bdb511a716abc885d2ddc56a25cb3a48999 Mon Sep 17 00:00:00 2001 From: 10G Meow <10gmeow@gmail.com> Date: Wed, 2 Nov 2022 17:50:51 +0200 Subject: [PATCH 05/13] review changes: colon --- src/assets/translations/bo.json | 2 +- src/assets/translations/de.json | 2 +- src/assets/translations/en.json | 2 +- src/assets/translations/es.json | 2 +- src/assets/translations/fi.json | 2 +- src/assets/translations/fr.json | 2 +- src/assets/translations/it.json | 2 +- src/assets/translations/nb_NO.json | 2 +- src/assets/translations/pt_BR.json | 2 +- src/assets/translations/ro.json | 2 +- src/assets/translations/ug.json | 2 +- src/assets/translations/zh_Hans.json | 2 +- src/components/CreateRoom.vue | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/assets/translations/bo.json b/src/assets/translations/bo.json index ee5586e..0ad9610 100644 --- a/src/assets/translations/bo.json +++ b/src/assets/translations/bo.json @@ -71,7 +71,7 @@ "room_topic": "གལ་ཏེ་འདོད་པ་ཡོད་ན། ཚོགས་པའི་སྐོར་གྱི་འགྲེལ་བཤད་ཐུང་ངུ་ཞིག་འབྲི་ཆོག", "create": "བཟོས།", "room_name_limit_error_msg": "", - "semicolon_not_allowed": "" + "colon_not_allowed": "" }, "menu": { "logout": "ཕྱིར་ཐོན།", diff --git a/src/assets/translations/de.json b/src/assets/translations/de.json index 7334c0f..5af960b 100644 --- a/src/assets/translations/de.json +++ b/src/assets/translations/de.json @@ -97,7 +97,7 @@ "name_room": "Raum benennen", "room_topic": "Füge eine Beschreibung hinzu, wenn du möchtest", "room_name_limit_error_msg": "", - "semicolon_not_allowed": "" + "colon_not_allowed": "" }, "device_list": { "title": "GERÄTE", diff --git a/src/assets/translations/en.json b/src/assets/translations/en.json index a5f9bd1..5a3fa1a 100644 --- a/src/assets/translations/en.json +++ b/src/assets/translations/en.json @@ -107,7 +107,7 @@ "status_avatar_total": "Uploading avatar: {count} of {total}", "status_avatar": "Uploading avatar: {count}", "room_name_limit_error_msg": "Maximum 50 characters allowed", - "semicolon_not_allowed": "Semicolon is allowed" + "colon_not_allowed": "Colon is not allowed" }, "device_list": { "title": "DEVICES", diff --git a/src/assets/translations/es.json b/src/assets/translations/es.json index c88d7f2..ce9a3e6 100644 --- a/src/assets/translations/es.json +++ b/src/assets/translations/es.json @@ -123,7 +123,7 @@ "create": "Crear", "room_topic": "Añade una descripción si quieres", "room_name_limit_error_msg": "", - "semicolon_not_allowed": "" + "colon_not_allowed": "" }, "room_welcome": { "join_public": "Cualquiera puede unirse abriendo este vínculo: {link}", diff --git a/src/assets/translations/fi.json b/src/assets/translations/fi.json index 3ad8111..d1f274b 100644 --- a/src/assets/translations/fi.json +++ b/src/assets/translations/fi.json @@ -29,7 +29,7 @@ "link_copied": "Linkki kopioitu!", "public_info": "Kuka tahansa, jolla on linkki", "room_name_limit_error_msg": "", - "semicolon_not_allowed": "" + "colon_not_allowed": "" }, "purge_room": { "n_seconds": "{seconds} sekuntia", diff --git a/src/assets/translations/fr.json b/src/assets/translations/fr.json index 22396f4..6cd2c6e 100644 --- a/src/assets/translations/fr.json +++ b/src/assets/translations/fr.json @@ -97,7 +97,7 @@ "join_permissions_info": "Ces autorisations déterminent comment les personnes peuvent rejoindre le salon et avec quelle facilité d’autres personnes peuvent être invitées. Elles peuvent être modifiées à tout moment.", "status_creating": "Création du salon", "room_name_limit_error_msg": "", - "semicolon_not_allowed": "" + "colon_not_allowed": "" }, "device_list": { "title": "APPAREILS", diff --git a/src/assets/translations/it.json b/src/assets/translations/it.json index a59e312..6bfcc62 100644 --- a/src/assets/translations/it.json +++ b/src/assets/translations/it.json @@ -96,7 +96,7 @@ "join_permissions_info": "Questi permessi determinano come le persone possono entrare nella stanza e quanto facilmente gli altri possono essere invitati. Possono essere cambiati in qualsiasi momento.", "public_info": "Chiunque abbia un collegamento", "room_name_limit_error_msg": "", - "semicolon_not_allowed": "" + "colon_not_allowed": "" }, "device_list": { "title": "DISPOSITIVI", diff --git a/src/assets/translations/nb_NO.json b/src/assets/translations/nb_NO.json index 3597637..a8f00b5 100644 --- a/src/assets/translations/nb_NO.json +++ b/src/assets/translations/nb_NO.json @@ -116,7 +116,7 @@ "create": "Opprett", "new_room": "Nytt rom", "room_name_limit_error_msg": "", - "semicolon_not_allowed": "" + "colon_not_allowed": "" }, "room_welcome": { "room_history_is": "Romhistorikken er {type}.", diff --git a/src/assets/translations/pt_BR.json b/src/assets/translations/pt_BR.json index 5b2c83f..c322a1e 100644 --- a/src/assets/translations/pt_BR.json +++ b/src/assets/translations/pt_BR.json @@ -120,7 +120,7 @@ "status_avatar_total": "Enviando o avatar: {count} de {total}", "status_avatar": "Enviando avatar: {count}", "room_name_limit_error_msg": "O máximo de 50 caracteres são permitidos", - "semicolon_not_allowed": "" + "colon_not_allowed": "" }, "device_list": { "title": "DISPOSITIVOS", diff --git a/src/assets/translations/ro.json b/src/assets/translations/ro.json index 2353cca..e8c59b9 100644 --- a/src/assets/translations/ro.json +++ b/src/assets/translations/ro.json @@ -168,7 +168,7 @@ "create": "Creați", "new_room": "Cameră nouă", "room_name_limit_error_msg": "", - "semicolon_not_allowed": "" + "colon_not_allowed": "" }, "room_welcome": { "got_it": "L-am prins", diff --git a/src/assets/translations/ug.json b/src/assets/translations/ug.json index cbefdc5..339ab19 100644 --- a/src/assets/translations/ug.json +++ b/src/assets/translations/ug.json @@ -85,7 +85,7 @@ "create": "قۇرۇش", "new_room": "يېڭى مۇنازىرەخانا", "room_name_limit_error_msg": "", - "semicolon_not_allowed": "" + "colon_not_allowed": "" }, "room": { "purge_failed": "مۇنازىرەخانىنى يۇيۇش مەغلۇب بولدى!", diff --git a/src/assets/translations/zh_Hans.json b/src/assets/translations/zh_Hans.json index a03a21e..d83e981 100644 --- a/src/assets/translations/zh_Hans.json +++ b/src/assets/translations/zh_Hans.json @@ -218,7 +218,7 @@ "room_topic": "如果您愿意,请添加说明", "create": "创建", "room_name_limit_error_msg": "", - "semicolon_not_allowed": "" + "colon_not_allowed": "" }, "room_welcome": { "got_it": "知道了", diff --git a/src/components/CreateRoom.vue b/src/components/CreateRoom.vue index 43e72d9..3332e2a 100644 --- a/src/components/CreateRoom.vue +++ b/src/components/CreateRoom.vue @@ -302,7 +302,7 @@ export default { enterRoomDialog: false, roomNamerules: [ v => v.length <= 50 || this.$t("new_room.room_name_limit_error_msg"), - v => !v.includes(':') || this.$t("new_room.semicolon_not_allowed") + v => !v.includes(':') || this.$t("new_room.colon_not_allowed") ], roomNameHasError: false, roomCreationErrorMsg: "" From 456f4ded2ad1f0f19a60510bb83d2c6195f63587 Mon Sep 17 00:00:00 2001 From: 10G Meow <10gmeow@gmail.com> Date: Sat, 5 Nov 2022 11:00:43 +0200 Subject: [PATCH 06/13] improvements: unique local and setting storage --- src/store/index.js | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index a44857a..a4f049f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -3,16 +3,17 @@ import Vuex from 'vuex' import VuexPersist from 'vuex-persist' Vue.use(Vuex) - +const USER = `convene_${ window.location.hostname }_user` +const SETTINGS = `convene_${ window.location.hostname }_settings` // A Vuex plugin to persist the user object to either session or local storage, based on flag in the store state. // const persistUserPlugin = store => { var user; if (store.state.useLocalStorage) { - user = JSON.parse(window.localStorage.getItem('user')); + user = JSON.parse(window.localStorage.getItem(USER)); } else { - user = JSON.parse(window.sessionStorage.getItem('user')); + user = JSON.parse(window.sessionStorage.getItem(USER)); } const initialState = user ? { status: { loggedIn: true }, user } : { status: { loggedIn: false }, user: null }; store.state.auth = initialState; @@ -20,11 +21,11 @@ const persistUserPlugin = store => { store.subscribe((mutation, state) => { if (mutation.type == 'setUser' || mutation.type == 'setUseLocalStorage') { if (state.useLocalStorage) { - window.localStorage.setItem('user', JSON.stringify(state.auth.user)); - window.sessionStorage.removeItem('user'); + window.localStorage.setItem(USER, JSON.stringify(state.auth.user)); + window.sessionStorage.removeItem(USER); } else { - window.sessionStorage.setItem('user', JSON.stringify(state.auth.user)); - window.localStorage.removeItem('user'); + window.sessionStorage.setItem(USER, JSON.stringify(state.auth.user)); + window.localStorage.removeItem(USER); } } }) @@ -32,7 +33,7 @@ const persistUserPlugin = store => { const vuexPersistLocalStorage = new VuexPersist({ - key: 'settings', + key: SETTINGS, storage: localStorage, reducer: state => { if (state.useLocalStorage) { @@ -47,7 +48,7 @@ const vuexPersistLocalStorage = new VuexPersist({ }) const vuexPersistSessionStorage = new VuexPersist({ - key: 'settings', + key: SETTINGS, storage: sessionStorage, reducer: state => { if (!state.useLocalStorage) { @@ -61,7 +62,7 @@ const vuexPersistSessionStorage = new VuexPersist({ } }) -const defaultUseSessionStorage = (sessionStorage.getItem('user') != null); +const defaultUseSessionStorage = (sessionStorage.getItem(USER) != null); export default new Vuex.Store({ state: { language: null, currentRoomId: null, auth: null, tempuser: null, useLocalStorage: !defaultUseSessionStorage }, From a77957abfcc460b89e34bb087b775231dc845aad Mon Sep 17 00:00:00 2001 From: 10G Meow <10gmeow@gmail.com> Date: Sat, 5 Nov 2022 18:35:59 +0200 Subject: [PATCH 07/13] Fix broken emojis after matrix-js-sdk update --- src/components/messages/QuickReactions.vue | 6 +++--- src/components/messages/pollMixin.js | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/messages/QuickReactions.vue b/src/components/messages/QuickReactions.vue index deb608b..baa69ce 100644 --- a/src/components/messages/QuickReactions.vue +++ b/src/components/messages/QuickReactions.vue @@ -29,7 +29,7 @@ export default { } }, mounted() { - this.reactions = this.timelineSet.getRelationsForEvent(this.event.getId(), 'm.annotation', 'm.reaction'); + this.reactions = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), 'm.annotation', 'm.reaction'); this.event.on("Event.relationsCreated", this.onRelationsCreated); }, beforeDestroy() { @@ -40,7 +40,7 @@ export default { }, methods: { onRelationsCreated() { - this.reactions = this.timelineSet.getRelationsForEvent(this.event.getId(), 'm.annotation', 'm.reaction'); + this.reactions = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), 'm.annotation', 'm.reaction'); }, onClickEmoji(emoji) { this.$bubble('send-quick-reaction', {reaction:emoji, event:this.event}); @@ -75,7 +75,7 @@ export default { oldValue.off('Relations.add', this.onAddRelation); } if (newValue) { - newValue.on('Relations.add', this.onAddRelation); + newValue.on('Relations.add', this.onAddRelation); } this.processReactions(); }, diff --git a/src/components/messages/pollMixin.js b/src/components/messages/pollMixin.js index 6bb073f..b1da22f 100644 --- a/src/components/messages/pollMixin.js +++ b/src/components/messages/pollMixin.js @@ -70,8 +70,8 @@ export default { // Look for poll end this.pollEndRelations = - this.timelineSet.getRelationsForEvent(this.event.getId(), "m.reference", "m.poll.end") || - this.timelineSet.getRelationsForEvent(this.event.getId(), "m.reference", "org.matrix.msc3381.poll.end"); + this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), "m.reference", "m.poll.end") || + this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), "m.reference", "org.matrix.msc3381.poll.end"); if (this.pollEndRelations) { const endMessages = this.pollEndRelations.getRelations() || []; if (endMessages.length > 0) { @@ -81,8 +81,8 @@ export default { // Process votes this.pollResponseRelations = - this.timelineSet.getRelationsForEvent(this.event.getId(), "m.reference", "m.poll.response") || - this.timelineSet.getRelationsForEvent(this.event.getId(), "m.reference", "org.matrix.msc3381.poll.response"); + this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), "m.reference", "m.poll.response") || + this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), "m.reference", "org.matrix.msc3381.poll.response"); var userVotes = {}; if (this.pollResponseRelations) { const votes = this.pollResponseRelations.getRelations() || []; From db1c780c9ecafe66670240349abc9fd3468ae0d4 Mon Sep 17 00:00:00 2001 From: 10G Meow <10gmeow@gmail.com> Date: Sun, 13 Nov 2022 15:08:23 +0200 Subject: [PATCH 08/13] Edit profile name and set password improvements --- src/assets/translations/bo.json | 8 +++++- src/assets/translations/de.json | 8 +++++- src/assets/translations/en.json | 8 +++++- src/assets/translations/es.json | 8 +++++- src/assets/translations/fi.json | 8 +++++- src/assets/translations/fr.json | 8 +++++- src/assets/translations/it.json | 8 +++++- src/assets/translations/nb_NO.json | 8 +++++- src/assets/translations/pt_BR.json | 8 +++++- src/assets/translations/ro.json | 8 +++++- src/assets/translations/ug.json | 8 +++++- src/assets/translations/zh_Hans.json | 8 +++++- src/components/Profile.vue | 37 +++++++++++++++++++++++----- 13 files changed, 115 insertions(+), 18 deletions(-) diff --git a/src/assets/translations/bo.json b/src/assets/translations/bo.json index 0ad9610..3d3fdd0 100644 --- a/src/assets/translations/bo.json +++ b/src/assets/translations/bo.json @@ -3,6 +3,11 @@ "name": "འདུ་འཛོམས།", "tag_line": "འབྲེལ་མཐུད་བྱོས།" }, + "global": { + "save": "", + "password_didnot_match": "", + "password_hint": "" + }, "fallbacks": { "download_name": "ཕབ་ལེན།", "original_text": "<མ་ཡིག>", @@ -106,7 +111,8 @@ "set_language": "སྐད་ཡིག་བརྗེ་སྒྱུར།", "language_description": "འདུ་འཛོམས་སྐད་ཡིག་མང་པོའི་ནང་དུ་ཡོད།", "dont_see_yours": "ཁྱེད་ཀྱི་མིང་མཐོང་གི་མི་འདུག་གམ།", - "tell_us": "ང་ཚོར་ཤོོད།" + "tell_us": "ང་ཚོར་ཤོོད།", + "display_name_required": "" }, "device_list": { "not_verified": "ར་སྤྲོད་བྱས་མི་འདུག", diff --git a/src/assets/translations/de.json b/src/assets/translations/de.json index 5af960b..5ce8d56 100644 --- a/src/assets/translations/de.json +++ b/src/assets/translations/de.json @@ -1,5 +1,10 @@ { "language_display_name": "Deutsch", + "global": { + "save": "", + "password_didnot_match": "", + "password_hint": "" + }, "menu": { "start_private_chat": "Private Diskussion mit diesem Benutzer", "reply": "Antworten", @@ -126,7 +131,8 @@ "password_old": "Altes Passwort", "password_new": "Neues Kennwort", "password_repeat": "Wiederhole das neue Passwort", - "display_name": "Anzeigename" + "display_name": "Anzeigename", + "display_name_required": "" }, "profile_info_popup": { "you_are": "Du bist", diff --git a/src/assets/translations/en.json b/src/assets/translations/en.json index 5a3fa1a..c8cfb26 100644 --- a/src/assets/translations/en.json +++ b/src/assets/translations/en.json @@ -4,6 +4,11 @@ "name": "Convene", "tag_line": "Simply connect" }, + "global": { + "save": "Save", + "password_didnot_match": "Password didn't match", + "password_hint": "Minimum 12 character containing atleast one numeric, one uppercase and one lowercase letter" + }, "menu": { "start_private_chat": "Private chat with this user", "reply": "Reply", @@ -140,7 +145,8 @@ "password_old": "Old password", "password_new": "New password", "password_repeat": "Repeat new password", - "display_name": "Display name" + "display_name": "Display name", + "display_name_required": "Display name is required" }, "profile_info_popup": { "you_are": "You are", diff --git a/src/assets/translations/es.json b/src/assets/translations/es.json index ce9a3e6..2c031e5 100644 --- a/src/assets/translations/es.json +++ b/src/assets/translations/es.json @@ -4,6 +4,11 @@ "name": "Convene", "tag_line": "Simplemente conectar" }, + "global": { + "save": "", + "password_didnot_match": "", + "password_hint": "" + }, "room_info": { "identity": "Has iniciado sesión como {displayName}.", "my_profile": "Mi perfil", @@ -83,7 +88,8 @@ "set_language": "Establece tu Idioma", "language_description": "Convine esta disponible en varios Idiomas.", "dont_see_yours": "¿No ves el tuyo?", - "tell_us": "Dinos." + "tell_us": "Dinos.", + "display_name_required": "" }, "login": { "login": "Iniciar sesión", diff --git a/src/assets/translations/fi.json b/src/assets/translations/fi.json index d1f274b..29befa3 100644 --- a/src/assets/translations/fi.json +++ b/src/assets/translations/fi.json @@ -1,4 +1,9 @@ { + "global": { + "save": "", + "password_didnot_match": "", + "password_hint": "" + }, "menu": { "back": "TAKAISIN", "start_private_chat": "Yksityinen keskustelu tämän käyttäjän kanssa", @@ -125,7 +130,8 @@ "set_password": "Aseta salasana", "select_language": "Kieli", "password_old": "Vanha salasana", - "display_name": "Näyttönimi" + "display_name": "Näyttönimi", + "display_name_required": "" }, "profile_info_popup": { "want_more": "Haluatko lisää?", diff --git a/src/assets/translations/fr.json b/src/assets/translations/fr.json index 6cd2c6e..63b356e 100644 --- a/src/assets/translations/fr.json +++ b/src/assets/translations/fr.json @@ -1,4 +1,9 @@ { + "global": { + "save": "", + "password_didnot_match": "", + "password_hint": "" + }, "menu": { "edit": "Modifier", "start_private_chat": "Discussion privée avec cet utilisateur", @@ -126,7 +131,8 @@ "display_name": "Nom d’affichage", "title": "Mon profil", "set_password": "Définir un mot de passe", - "password_new": "Nouveau mot de passe" + "password_new": "Nouveau mot de passe", + "display_name_required": "" }, "profile_info_popup": { "you_are": "Vous êtes", diff --git a/src/assets/translations/it.json b/src/assets/translations/it.json index 6bfcc62..bdcef3a 100644 --- a/src/assets/translations/it.json +++ b/src/assets/translations/it.json @@ -1,4 +1,9 @@ { + "global": { + "save": "", + "password_didnot_match": "", + "password_hint": "" + }, "message": { "file_prefix": "File: ", "unread_messages": "Messaggi non letti", @@ -125,7 +130,8 @@ "display_name": "Nome visualizzato", "change_name": "Cambia il nome", "change_password": "Cambia la password", - "password_new": "Nuova password" + "password_new": "Nuova password", + "display_name_required": "" }, "profile_info_popup": { "you_are": "Sei", diff --git a/src/assets/translations/nb_NO.json b/src/assets/translations/nb_NO.json index a8f00b5..d747b7e 100644 --- a/src/assets/translations/nb_NO.json +++ b/src/assets/translations/nb_NO.json @@ -3,6 +3,11 @@ "name": "Convene", "tag_line": "" }, + "global": { + "save": "", + "password_didnot_match": "", + "password_hint": "" + }, "message": { "user_changed_guest_access_open": "{user} tillot gjester å ta del i rommet", "user_powerlevel_change_from_to": "{user} fra {powerOld} til {powerNew}", @@ -98,7 +103,8 @@ "set_password": "Sett passord", "title": "Min profil", "display_name": "Visningsnavn", - "password_repeat": "Gjenta nytt passord" + "password_repeat": "Gjenta nytt passord", + "display_name_required": "" }, "login": { "password_required": "Passord kreves", diff --git a/src/assets/translations/pt_BR.json b/src/assets/translations/pt_BR.json index c322a1e..cda286f 100644 --- a/src/assets/translations/pt_BR.json +++ b/src/assets/translations/pt_BR.json @@ -3,6 +3,11 @@ "name": "Convocar", "tag_line": "Basta conectar" }, + "global": { + "save": "", + "password_didnot_match": "", + "password_hint": "" + }, "invite": { "title": "Adiciona amigos", "done": "Feito", @@ -153,7 +158,8 @@ "password_old": "Senha antiga", "password_new": "Nova senha", "password_repeat": "Repita a nova senha", - "display_name": "Nome de exibição" + "display_name": "Nome de exibição", + "display_name_required": "" }, "profile_info_popup": { "you_are": "Você é", diff --git a/src/assets/translations/ro.json b/src/assets/translations/ro.json index e8c59b9..16d8bff 100644 --- a/src/assets/translations/ro.json +++ b/src/assets/translations/ro.json @@ -3,6 +3,11 @@ "name": "Convene", "tag_line": "Conectați pur și simplu" }, + "global": { + "save": "", + "password_didnot_match": "", + "password_hint": "" + }, "menu": { "ok": "OK", "done": "Realizat", @@ -129,7 +134,8 @@ "change_name": "Schimbă numele", "set_password": "Setați parola", "temporary_identity": "Această identitate este temporară. Setați o parolă pentru a o utiliza din nou", - "title": "Profilul meu" + "title": "Profilul meu", + "display_name_required": "" }, "login": { "login": "Autentificare", diff --git a/src/assets/translations/ug.json b/src/assets/translations/ug.json index 339ab19..df724cb 100644 --- a/src/assets/translations/ug.json +++ b/src/assets/translations/ug.json @@ -3,6 +3,11 @@ "name": "Convene", "tag_line": "" }, + "global": { + "save": "", + "password_didnot_match": "", + "password_hint": "" + }, "language_is_rtl": true, "menu": { "ok": "تامام", @@ -221,7 +226,8 @@ "change_name": "ئىسىم ئۆزگەرتىش", "set_password": "پارول بەلگىلەڭ", "temporary_identity": "بۇ كىملىك ۋاقىتلىق. قايتا ئىشلىتىش ئۈچۈن پارول بەلگىلەڭ", - "title": "مېنىڭ ئارخىپىم" + "title": "مېنىڭ ئارخىپىم", + "display_name_required": "" }, "login": { "login": "‎كىرىش", diff --git a/src/assets/translations/zh_Hans.json b/src/assets/translations/zh_Hans.json index d83e981..f096cb5 100644 --- a/src/assets/translations/zh_Hans.json +++ b/src/assets/translations/zh_Hans.json @@ -3,6 +3,11 @@ "name": "Convene", "tag_line": "只需连接" }, + "global": { + "save": "", + "password_didnot_match": "", + "password_hint": "" + }, "fallbacks": { "download_name": "下载", "original_text": "<原文>", @@ -195,7 +200,8 @@ "set_language": "设置您的语言", "language_description": "Convene 提供多种语言.", "dont_see_yours": "看不到你的?", - "tell_us": "告诉我们。" + "tell_us": "告诉我们。", + "display_name_required": "" }, "new_room": { "status_avatar": "正在上传头像:{count}", diff --git a/src/components/Profile.vue b/src/components/Profile.vue index daa30cf..69f2435 100644 --- a/src/components/Profile.vue +++ b/src/components/Profile.vue @@ -103,13 +103,25 @@ />
{{ passwordErrorMessage }} @@ -134,7 +146,7 @@ newPassword1 ) " - >{{ $t("menu.ok") }}{{ $t("global.save") }} @@ -149,7 +161,11 @@ {{ $t("profile.display_name") }} - + @@ -165,7 +181,8 @@ updateDisplayName(editValue); showEditDisplaynameDialog = false; " - >{{ $t("menu.ok") }}{{ $t("global.save") }} @@ -205,12 +222,16 @@ export default { showLogoutPopup: false, editValue: null, password: null, + showPassword1: false, + showPassword2: false, + passwordValidation: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{12,20}$/, newPassword1: null, newPassword2: null, settingPassword: false, passwordErrorMessage: null, isAvatarLoaded: true, - loadValue: 0 + loadValue: 0, + newPasswordHasError: false }; }, @@ -253,6 +274,7 @@ export default { passwordsMatch() { return ( + !this.newPasswordHasError && this.newPassword1 && this.newPassword2 && this.newPassword1 == this.newPassword2 @@ -261,6 +283,9 @@ export default { }, methods: { + updateErrorState(errorState) { + this.newPasswordHasError = errorState + }, setPassword(oldPassword, newPassword) { this.settingPassword = true; this.passwordErrorMessage = null; From 58294a94cb16479581eff0c2ce4862d3cf0e8250 Mon Sep 17 00:00:00 2001 From: 10G Meow <10gmeow@gmail.com> Date: Sun, 20 Nov 2022 09:54:35 +0200 Subject: [PATCH 09/13] emojis overlapped fixes --- src/assets/css/chat.scss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/assets/css/chat.scss b/src/assets/css/chat.scss index 01bdca9..4e11db2 100644 --- a/src/assets/css/chat.scss +++ b/src/assets/css/chat.scss @@ -604,8 +604,7 @@ $admin-fg: white; .avatar-operations-strut { position: relative; height: 0px; - - z-index: 1; + z-index: 10; } .message-operations { From ae8d65be8defcba7715460f6a2ea0a054fb83dcf Mon Sep 17 00:00:00 2001 From: 10G Meow <10gmeow@gmail.com> Date: Sun, 20 Nov 2022 13:39:20 +0200 Subject: [PATCH 10/13] reply to pop up fix display name --- src/components/Chat.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/Chat.vue b/src/components/Chat.vue index bdf2759..a0cda12 100644 --- a/src/components/Chat.vue +++ b/src/components/Chat.vue @@ -114,7 +114,7 @@
-
{{ $t("message.replying_to", { user: replyToEvent.sender.name }) }}
+
{{ $t("message.replying_to", { user: senderDisplayName }) }}
{{ replyToEvent.getContent().body | latestReply }}
@@ -546,6 +546,9 @@ export default { }, computed: { + senderDisplayName() { + return this.room.getMember(this.replyToEvent.sender.userId).name; + }, currentUser() { return this.$store.state.auth.user; }, From cfa0d6a05df9e3fa407418f017ef453e5ea73dcb Mon Sep 17 00:00:00 2001 From: 10G Meow <10gmeow@gmail.com> Date: Sat, 26 Nov 2022 12:48:41 +0200 Subject: [PATCH 11/13] Room description editable --- src/assets/css/chat.scss | 4 ++++ src/assets/translations/bo.json | 3 ++- src/assets/translations/de.json | 3 ++- src/assets/translations/en.json | 3 ++- src/assets/translations/es.json | 3 ++- src/assets/translations/fi.json | 3 ++- src/assets/translations/fr.json | 3 ++- src/assets/translations/it.json | 3 ++- src/assets/translations/nb_NO.json | 3 ++- src/assets/translations/pt_BR.json | 3 ++- src/assets/translations/ro.json | 3 ++- src/assets/translations/ug.json | 3 ++- src/assets/translations/zh_Hans.json | 3 ++- src/components/RoomInfo.vue | 29 +++++++++++++++++++++++--- src/components/RoomInfoBottomSheet.vue | 4 ++-- src/components/roomInfoMixin.js | 25 ++++++++++++++++++---- 16 files changed, 77 insertions(+), 21 deletions(-) diff --git a/src/assets/css/chat.scss b/src/assets/css/chat.scss index 01bdca9..543e2d8 100644 --- a/src/assets/css/chat.scss +++ b/src/assets/css/chat.scss @@ -804,6 +804,10 @@ $admin-fg: white; .topic { font-family: "Inter", sans-serif; font-size: 16px; + + input { + text-align: center; + } } .created-by { diff --git a/src/assets/translations/bo.json b/src/assets/translations/bo.json index 3d3fdd0..106df82 100644 --- a/src/assets/translations/bo.json +++ b/src/assets/translations/bo.json @@ -140,7 +140,8 @@ "purge_removing_members": "ཚོགས་མི་ཁག་ཕྱིར་འདོན།", "purge_redacting_events": "ཁ་བརྡ་གཙང་གསུབ།", "purge_set_room_state": "ཁ་བརྡ་ཁང་གི་རྣམ་པ་སྒྲིག་འགོད།", - "room_name_required": "" + "room_name_required": "", + "room_topic_required": "" }, "message": { "users_are_typing": "{count} ཚོགས་མི་ཡིས་གཏགས་བཞིན་འདུག", diff --git a/src/assets/translations/de.json b/src/assets/translations/de.json index 5ce8d56..0c7954b 100644 --- a/src/assets/translations/de.json +++ b/src/assets/translations/de.json @@ -70,7 +70,8 @@ "purge_removing_members": "Entfernen von Mitgliedern", "purge_failed": "Fehler beim Bereinigen des Raums!", "room_list_rooms": "Räume", - "room_name_required": "" + "room_name_required": "", + "room_topic_required": "" }, "room_welcome": { "info": "Herzlich willkommen! Hier sind ein paar Dinge, die du über deinen Raum wissen solltest:", diff --git a/src/assets/translations/en.json b/src/assets/translations/en.json index c8cfb26..fc12117 100644 --- a/src/assets/translations/en.json +++ b/src/assets/translations/en.json @@ -80,7 +80,8 @@ "purge_failed": "Failed to purge room!", "room_list_invites": "Invites", "room_list_rooms": "Rooms", - "room_name_required": "Room name is required" + "room_name_required": "Room name is required", + "room_topic_required": "Room description is required" }, "room_welcome": { "info": "Welcome! Here are a few things to know about your room:", diff --git a/src/assets/translations/es.json b/src/assets/translations/es.json index 2c031e5..105604b 100644 --- a/src/assets/translations/es.json +++ b/src/assets/translations/es.json @@ -151,7 +151,8 @@ "purge_removing_members": "Eliminar miembros", "purge_failed": "¡Fallo en la purga de la sala!", "room_list_rooms": "Salas", - "room_name_required": "" + "room_name_required": "", + "room_topic_required": "" }, "message": { "user_powerlevel_change_from_to": "{user} de {powerOld} a {powerNew}", diff --git a/src/assets/translations/fi.json b/src/assets/translations/fi.json index 29befa3..ec97110 100644 --- a/src/assets/translations/fi.json +++ b/src/assets/translations/fi.json @@ -111,7 +111,8 @@ "room": { "leave": "Poistu", "room_list_rooms": "Huoneet", - "room_name_required": "" + "room_name_required": "", + "room_topic_required": "" }, "room_welcome": { "room_history_is": "Huoneen historia on {type}.", diff --git a/src/assets/translations/fr.json b/src/assets/translations/fr.json index 63b356e..0e440bc 100644 --- a/src/assets/translations/fr.json +++ b/src/assets/translations/fr.json @@ -70,7 +70,8 @@ "room_list_invites": "Invitations", "room_list_rooms": "Salons", "purge_redacting_events": "Rédaction des évènements", - "room_name_required": "" + "room_name_required": "", + "room_topic_required": "" }, "room_welcome": { "info": "Bienvenue ! Voici quelques informations à connaître sur votre salon :", diff --git a/src/assets/translations/it.json b/src/assets/translations/it.json index bdcef3a..800e1ca 100644 --- a/src/assets/translations/it.json +++ b/src/assets/translations/it.json @@ -51,7 +51,8 @@ "purge_failed": "Impossibile pulire la stanza!", "room_list_invites": "Inviti", "room_list_rooms": "Stanze", - "room_name_required": "" + "room_name_required": "", + "room_topic_required": "" }, "menu": { "reply": "Risposta", diff --git a/src/assets/translations/nb_NO.json b/src/assets/translations/nb_NO.json index d747b7e..5b25a24 100644 --- a/src/assets/translations/nb_NO.json +++ b/src/assets/translations/nb_NO.json @@ -135,7 +135,8 @@ "room_list_invites": "Invitasjoner", "purge_set_room_state": "Setter romtilstand", "leave": "Forlat", - "room_name_required": "" + "room_name_required": "", + "room_topic_required": "" }, "purge_room": { "n_seconds": "{seconds} sekunder", diff --git a/src/assets/translations/pt_BR.json b/src/assets/translations/pt_BR.json index cda286f..dc41860 100644 --- a/src/assets/translations/pt_BR.json +++ b/src/assets/translations/pt_BR.json @@ -93,7 +93,8 @@ "room_list_invites": "Convites", "room_list_rooms": "Salas", "invitations": "Você não tem convites | Você tem 1 convite | Você tem {count} convites", - "room_name_required": "" + "room_name_required": "", + "room_topic_required": "" }, "room_welcome": { "info": "Bem-vindo! Aqui estão algumas coisas que você deve saber sobre a sua sala:", diff --git a/src/assets/translations/ro.json b/src/assets/translations/ro.json index 16d8bff..6a3283e 100644 --- a/src/assets/translations/ro.json +++ b/src/assets/translations/ro.json @@ -195,7 +195,8 @@ "purge_set_room_state": "Setarea stării camerei", "leave": "Lăsați", "members": "fără membri | 1 membru | {count} membri", - "room_name_required": "" + "room_name_required": "", + "room_topic_required": "" }, "message": { "user_changed_guest_access_open": "{user} a permis oaspeților să intre în cameră", diff --git a/src/assets/translations/ug.json b/src/assets/translations/ug.json index df724cb..393531f 100644 --- a/src/assets/translations/ug.json +++ b/src/assets/translations/ug.json @@ -101,7 +101,8 @@ "purge_set_room_state": "مۇنازىرەخانىنىڭ شەرتىنى قۇرۇش", "leave": "كېتىش", "members": "ئەزالار يوق | بىر ئەزا | [نەپەر] ئەزا", - "room_name_required": "" + "room_name_required": "", + "room_topic_required": "" }, "leave": { "text_public_lastroom": "ئەگەر بۇ ئۆيگە يەنە قوشۇلماقچى بولسىڭىز ، يېڭى سالاھىيەت ئاستىدا قاتناشسىڭىز بولىدۇ. {ئىشلەتكۈچى} ، {ھەرىكەت} نى ساقلاش.", diff --git a/src/assets/translations/zh_Hans.json b/src/assets/translations/zh_Hans.json index f096cb5..1ef4fef 100644 --- a/src/assets/translations/zh_Hans.json +++ b/src/assets/translations/zh_Hans.json @@ -76,7 +76,8 @@ "purge_removing_members": "移除成员", "purge_redacting_events": "编辑事件", "purge_set_room_state": "设置聊天室状态", - "room_name_required": "" + "room_name_required": "", + "room_topic_required": "" }, "message": { "you": "您", diff --git a/src/components/RoomInfo.vue b/src/components/RoomInfo.vue index 3b44fc8..52fb29a 100644 --- a/src/components/RoomInfo.vue +++ b/src/components/RoomInfo.vue @@ -27,12 +27,13 @@
{{ roomName }}
-
{{ roomTopic }}
+
+ + {{ roomTopic }} + + + +
{{ $t("room_info.created_by", { user: creator }) }}
diff --git a/src/components/RoomInfoBottomSheet.vue b/src/components/RoomInfoBottomSheet.vue index 12ed076..bc529c7 100644 --- a/src/components/RoomInfoBottomSheet.vue +++ b/src/components/RoomInfoBottomSheet.vue @@ -10,7 +10,7 @@
{{$t('room_info_sheet.this_room')}}
{{ roomName }} @@ -26,7 +26,7 @@ counter="50" background-color="white" autofocus - v-if="isEditMode" + v-if="isRoomNameEditMode" maxlength="50" @blur="updateRoomName()" @keyup.enter="updateRoomName()" diff --git a/src/components/roomInfoMixin.js b/src/components/roomInfoMixin.js index b9d17ca..cb420f5 100644 --- a/src/components/roomInfoMixin.js +++ b/src/components/roomInfoMixin.js @@ -5,8 +5,11 @@ export default { userCanChangeJoinRule: false, userCanPurgeRoom: false, editedRoomName: "", - isEditMode: false, - roomNameErrorMessage: null + isRoomNameEditMode: false, + roomNameErrorMessage: null, + editedRoomTopic: "", + isRoomTopicEditMode: false, + roomTopicErrorMessage: null, } }, mounted() { @@ -93,18 +96,32 @@ export default { methods: { onRoomNameClicked() { if(this.userCanPurgeRoom) { - this.isEditMode = !this.isEditMode; + this.isRoomNameEditMode = !this.isRoomNameEditMode; this.editedRoomName = this.roomName; } }, updateRoomName() { if(this.editedRoomName) { this.$matrix.matrixClient.setRoomName(this.room.roomId, this.editedRoomName); - this.isEditMode = !this.isEditMode; + this.isRoomNameEditMode = !this.isRoomNameEditMode; } else { this.$refs.editedRoomName.focus(); } }, + onRoomTopicClicked() { + if(this.userCanPurgeRoom) { + this.isRoomTopicEditMode = !this.isRoomTopicEditMode; + this.editedRoomTopic = this.roomTopic; + } + }, + updateRoomTopic() { + if(this.editedRoomTopic) { + this.$matrix.matrixClient.setRoomTopic(this.room.roomId, this.editedRoomTopic); + this.isRoomTopicEditMode = !this.isRoomTopicEditMode; + } else { + this.$refs.editedRoomTopic.focus(); + } + }, setRoomJoinRule(ignoredJoinRule) { // Do nothing in the general mixin, override in RoomInfo.vue }, From 3f68e8434667ee8de734faf04dd14a72ea7155cb Mon Sep 17 00:00:00 2001 From: 10G Meow <10gmeow@gmail.com> Date: Wed, 30 Nov 2022 08:16:23 +0000 Subject: [PATCH 12/13] Message deleted text --- src/assets/css/chat.scss | 5 +++++ src/assets/translations/bo.json | 4 +++- src/assets/translations/de.json | 4 +++- src/assets/translations/en.json | 4 +++- src/assets/translations/es.json | 4 +++- src/assets/translations/fi.json | 4 +++- src/assets/translations/fr.json | 4 +++- src/assets/translations/it.json | 4 +++- src/assets/translations/nb_NO.json | 4 +++- src/assets/translations/pt_BR.json | 4 +++- src/assets/translations/ro.json | 4 +++- src/assets/translations/si.json | 4 +++- src/assets/translations/ug.json | 4 +++- src/assets/translations/zh_Hans.json | 4 +++- src/components/Chat.vue | 2 +- src/components/chatMixin.js | 5 ++++- src/components/messages/MessageIncoming.vue | 8 ++++---- src/components/messages/MessageIncomingText.vue | 12 ++++++++---- src/components/messages/MessageOutgoing.vue | 8 ++++---- src/components/messages/MessageOutgoingText.vue | 12 ++++++++---- 20 files changed, 73 insertions(+), 31 deletions(-) diff --git a/src/assets/css/chat.scss b/src/assets/css/chat.scss index 01bdca9..2066534 100644 --- a/src/assets/css/chat.scss +++ b/src/assets/css/chat.scss @@ -488,6 +488,11 @@ $admin-fg: white; white-space: pre-wrap; text-align: left; + .deleted-text { + cursor: not-allowed; + font-size: 14px; + } + .edit-marker { font-size: 0.8rem; color: #888888; diff --git a/src/assets/translations/bo.json b/src/assets/translations/bo.json index 3d3fdd0..540327d 100644 --- a/src/assets/translations/bo.json +++ b/src/assets/translations/bo.json @@ -181,7 +181,9 @@ "user_changed_guest_access_closed": "{user} མགྲོན་པོ་ཁ་བརྡ་ཁང་དུ་འཛུལ་བཅུག་མ་སོང་།", "reply_image": "", "reply_audio_message": "", - "reply_video": "" + "reply_video": "", + "outgoing_message_deleted_text": "", + "incoming_message_deleted_text": "" }, "power_level": { "moderator": "མདོ་འཛིན་པ།", diff --git a/src/assets/translations/de.json b/src/assets/translations/de.json index 5ce8d56..e1bad16 100644 --- a/src/assets/translations/de.json +++ b/src/assets/translations/de.json @@ -59,7 +59,9 @@ "user_left": "{user} hat das Gespräch verlassen", "user_joined": "{Benutzer} ist dem Gespräch beigetreten", "download_progress": "{percentage} % heruntergeladen", - "user_changed_room_name": "{user} hat den Raumnamen in {name} geändert" + "user_changed_room_name": "{user} hat den Raumnamen in {name} geändert", + "outgoing_message_deleted_text": "", + "incoming_message_deleted_text": "" }, "room": { "leave": "Verlassen", diff --git a/src/assets/translations/en.json b/src/assets/translations/en.json index c8cfb26..e2193bd 100644 --- a/src/assets/translations/en.json +++ b/src/assets/translations/en.json @@ -68,7 +68,9 @@ "reply_image": "Image", "reply_audio_message": "Audio message", "reply_video": "Video", - "time_ago": "Today | Yesterday | {count} days ago" + "time_ago": "Today | Yesterday | {count} days ago", + "outgoing_message_deleted_text": "You deleted this message.", + "incoming_message_deleted_text": "This message was deleted." }, "room": { "invitations": "You have no invitations | You have 1 invitation | You have {count} invitations", diff --git a/src/assets/translations/es.json b/src/assets/translations/es.json index 2c031e5..68c1f30 100644 --- a/src/assets/translations/es.json +++ b/src/assets/translations/es.json @@ -192,7 +192,9 @@ "reply_audio_message": "Mensaje de audio", "reply_video": "Vídeo", "user_changed_guest_access_closed": "{user} no has permitido que los invitados se unan a la sala", - "user_changed_guest_access_open": "{user} has permitido que los invitados se unieran a la sala" + "user_changed_guest_access_open": "{user} has permitido que los invitados se unieran a la sala", + "outgoing_message_deleted_text": "", + "incoming_message_deleted_text": "" }, "menu": { "login": "Iniciar sesión", diff --git a/src/assets/translations/fi.json b/src/assets/translations/fi.json index 29befa3..0401285 100644 --- a/src/assets/translations/fi.json +++ b/src/assets/translations/fi.json @@ -106,7 +106,9 @@ "user_joined": "{user} liittyi keskusteluun", "file_prefix": "Tiedosto: ", "edited": "(muokattu)", - "users_are_typing": "{count} jäsentä kirjoitavat" + "users_are_typing": "{count} jäsentä kirjoitavat", + "outgoing_message_deleted_text": "", + "incoming_message_deleted_text": "" }, "room": { "leave": "Poistu", diff --git a/src/assets/translations/fr.json b/src/assets/translations/fr.json index 63b356e..b61bec8 100644 --- a/src/assets/translations/fr.json +++ b/src/assets/translations/fr.json @@ -59,7 +59,9 @@ "room_joinrule_public": "public", "unread_messages": "Messages non lus", "users_are_typing": "{count} membres écrivent", - "room_powerlevel_change": "{user} a changé le statut de {changes}" + "room_powerlevel_change": "{user} a changé le statut de {changes}", + "outgoing_message_deleted_text": "", + "incoming_message_deleted_text": "" }, "room": { "members": "aucun membre | 1 membre | {count} membres", diff --git a/src/assets/translations/it.json b/src/assets/translations/it.json index bdcef3a..10fe765 100644 --- a/src/assets/translations/it.json +++ b/src/assets/translations/it.json @@ -40,7 +40,9 @@ "room_history_world_readable": "leggibile da chiunque", "room_history_shared": "leggibile da tutti i membri nella stanza", "user_is_typing": "{user} sta scrivendo", - "users_are_typing": "{count} membri stanno scrivendo" + "users_are_typing": "{count} membri stanno scrivendo", + "outgoing_message_deleted_text": "", + "incoming_message_deleted_text": "" }, "room": { "purge_removing_members": "Rimozione di membri", diff --git a/src/assets/translations/nb_NO.json b/src/assets/translations/nb_NO.json index d747b7e..7dc85b6 100644 --- a/src/assets/translations/nb_NO.json +++ b/src/assets/translations/nb_NO.json @@ -36,7 +36,9 @@ "you": "Deg", "reply_image": "", "reply_audio_message": "", - "reply_video": "" + "reply_video": "", + "outgoing_message_deleted_text": "", + "incoming_message_deleted_text": "" }, "device_list": { "title": "Enheter", diff --git a/src/assets/translations/pt_BR.json b/src/assets/translations/pt_BR.json index cda286f..ee9f623 100644 --- a/src/assets/translations/pt_BR.json +++ b/src/assets/translations/pt_BR.json @@ -81,7 +81,9 @@ "reply_image": "Imagem", "reply_audio_message": "Mensagem de áudio", "reply_video": "Vídeo", - "time_ago": "Hoje | Ontem | {count} dias atrás" + "time_ago": "Hoje | Ontem | {count} dias atrás", + "outgoing_message_deleted_text": "", + "incoming_message_deleted_text": "" }, "room": { "members": "sem membros | 1 membro | {count} membros", diff --git a/src/assets/translations/ro.json b/src/assets/translations/ro.json index 16d8bff..742c7b2 100644 --- a/src/assets/translations/ro.json +++ b/src/assets/translations/ro.json @@ -236,7 +236,9 @@ "you": "Tu", "reply_image": "Imagine", "reply_audio_message": "Mesaj audio", - "reply_video": "Videoclip" + "reply_video": "Videoclip", + "outgoing_message_deleted_text": "", + "incoming_message_deleted_text": "" }, "language_display_name": "Engleză", "fallbacks": { diff --git a/src/assets/translations/si.json b/src/assets/translations/si.json index 33e42f9..8540ce2 100644 --- a/src/assets/translations/si.json +++ b/src/assets/translations/si.json @@ -25,7 +25,9 @@ "reply_image": "", "reply_audio_message": "", "reply_video": "", - "you": "ඔබ" + "you": "ඔබ", + "outgoing_message_deleted_text": "", + "incoming_message_deleted_text": "" }, "login": { "invalid_message": "" diff --git a/src/assets/translations/ug.json b/src/assets/translations/ug.json index df724cb..0ed74f4 100644 --- a/src/assets/translations/ug.json +++ b/src/assets/translations/ug.json @@ -67,7 +67,9 @@ "user_changed_room_history": "قوللانغۇچى» مۇنازىرەخانىنىڭ تارىخىنى قۇردى»", "reply_image": "", "reply_audio_message": "", - "reply_video": "" + "reply_video": "", + "outgoing_message_deleted_text": "", + "incoming_message_deleted_text": "" }, "language_display_name": "ئىنگىلزچە", "new_room": { diff --git a/src/assets/translations/zh_Hans.json b/src/assets/translations/zh_Hans.json index f096cb5..c2eeaa0 100644 --- a/src/assets/translations/zh_Hans.json +++ b/src/assets/translations/zh_Hans.json @@ -117,7 +117,9 @@ "user_changed_guest_access_closed": "{user} 不允许客人加入聊天室", "reply_image": "", "reply_audio_message": "", - "reply_video": "" + "reply_video": "", + "outgoing_message_deleted_text": "", + "incoming_message_deleted_text": "" }, "menu": { "login": "登录", diff --git a/src/components/Chat.vue b/src/components/Chat.vue index bdf2759..76c4a3b 100644 --- a/src/components/Chat.vue +++ b/src/components/Chat.vue @@ -58,7 +58,7 @@
-
+
-
- more_vert +
+ + more_vert +
diff --git a/src/components/messages/MessageIncomingText.vue b/src/components/messages/MessageIncomingText.vue index b34a3f6..2a38e8d 100644 --- a/src/components/messages/MessageIncomingText.vue +++ b/src/components/messages/MessageIncomingText.vue @@ -11,10 +11,14 @@ />
- - {{ $t('message.edited') }} + + block + {{ $t('message.incoming_message_deleted_text')}} + + + + {{ $t('message.edited') }} +
diff --git a/src/components/messages/MessageOutgoing.vue b/src/components/messages/MessageOutgoing.vue index 11b4000..d2495eb 100644 --- a/src/components/messages/MessageOutgoing.vue +++ b/src/components/messages/MessageOutgoing.vue @@ -9,10 +9,10 @@
-
- more_vert +
+ + more_vert +
diff --git a/src/components/messages/MessageOutgoingText.vue b/src/components/messages/MessageOutgoingText.vue index dd6b3c2..c775988 100644 --- a/src/components/messages/MessageOutgoingText.vue +++ b/src/components/messages/MessageOutgoingText.vue @@ -12,10 +12,14 @@
- - {{ $t('message.edited') }} + + block + {{ $t('message.outgoing_message_deleted_text')}} + + + + {{ $t('message.edited') }} +
From 78fdb943625d0ce6e48a564aa2b30772fc4b47af Mon Sep 17 00:00:00 2001 From: 10G Meow <10gmeow@gmail.com> Date: Wed, 30 Nov 2022 08:25:32 +0000 Subject: [PATCH 13/13] Poll reply fixes and other misc improvements --- src/assets/icons/poll.vue | 20 +++++++++++++++++++ src/assets/translations/bo.json | 1 + src/assets/translations/en.json | 1 + src/assets/translations/es.json | 1 + src/assets/translations/nb_NO.json | 1 + src/assets/translations/pt_BR.json | 1 + src/assets/translations/ro.json | 1 + src/assets/translations/si.json | 1 + src/assets/translations/ug.json | 1 + src/assets/translations/zh_Hans.json | 1 + src/components/Chat.vue | 6 ++++-- .../messages/MessageIncomingPoll.vue | 19 +----------------- .../messages/MessageOutgoingPoll.vue | 19 +----------------- src/plugins/utils.js | 4 +++- src/plugins/vuetify.js | 4 ++++ 15 files changed, 42 insertions(+), 39 deletions(-) create mode 100644 src/assets/icons/poll.vue diff --git a/src/assets/icons/poll.vue b/src/assets/icons/poll.vue new file mode 100644 index 0000000..e261cd1 --- /dev/null +++ b/src/assets/icons/poll.vue @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/src/assets/translations/bo.json b/src/assets/translations/bo.json index 540327d..9f51dbc 100644 --- a/src/assets/translations/bo.json +++ b/src/assets/translations/bo.json @@ -182,6 +182,7 @@ "reply_image": "", "reply_audio_message": "", "reply_video": "", + "reply_poll": "", "outgoing_message_deleted_text": "", "incoming_message_deleted_text": "" }, diff --git a/src/assets/translations/en.json b/src/assets/translations/en.json index e2193bd..6a9bae4 100644 --- a/src/assets/translations/en.json +++ b/src/assets/translations/en.json @@ -68,6 +68,7 @@ "reply_image": "Image", "reply_audio_message": "Audio message", "reply_video": "Video", + "reply_poll": "Poll", "time_ago": "Today | Yesterday | {count} days ago", "outgoing_message_deleted_text": "You deleted this message.", "incoming_message_deleted_text": "This message was deleted." diff --git a/src/assets/translations/es.json b/src/assets/translations/es.json index 68c1f30..ee06b1f 100644 --- a/src/assets/translations/es.json +++ b/src/assets/translations/es.json @@ -191,6 +191,7 @@ "reply_image": "Imagen", "reply_audio_message": "Mensaje de audio", "reply_video": "Vídeo", + "reply_poll": "", "user_changed_guest_access_closed": "{user} no has permitido que los invitados se unan a la sala", "user_changed_guest_access_open": "{user} has permitido que los invitados se unieran a la sala", "outgoing_message_deleted_text": "", diff --git a/src/assets/translations/nb_NO.json b/src/assets/translations/nb_NO.json index 7dc85b6..e2a1dd1 100644 --- a/src/assets/translations/nb_NO.json +++ b/src/assets/translations/nb_NO.json @@ -37,6 +37,7 @@ "reply_image": "", "reply_audio_message": "", "reply_video": "", + "reply_poll": "", "outgoing_message_deleted_text": "", "incoming_message_deleted_text": "" }, diff --git a/src/assets/translations/pt_BR.json b/src/assets/translations/pt_BR.json index ee9f623..56509ac 100644 --- a/src/assets/translations/pt_BR.json +++ b/src/assets/translations/pt_BR.json @@ -81,6 +81,7 @@ "reply_image": "Imagem", "reply_audio_message": "Mensagem de áudio", "reply_video": "Vídeo", + "reply_poll": "", "time_ago": "Hoje | Ontem | {count} dias atrás", "outgoing_message_deleted_text": "", "incoming_message_deleted_text": "" diff --git a/src/assets/translations/ro.json b/src/assets/translations/ro.json index 742c7b2..c13c893 100644 --- a/src/assets/translations/ro.json +++ b/src/assets/translations/ro.json @@ -237,6 +237,7 @@ "reply_image": "Imagine", "reply_audio_message": "Mesaj audio", "reply_video": "Videoclip", + "reply_poll": "", "outgoing_message_deleted_text": "", "incoming_message_deleted_text": "" }, diff --git a/src/assets/translations/si.json b/src/assets/translations/si.json index 8540ce2..a40157e 100644 --- a/src/assets/translations/si.json +++ b/src/assets/translations/si.json @@ -25,6 +25,7 @@ "reply_image": "", "reply_audio_message": "", "reply_video": "", + "reply_poll": "", "you": "ඔබ", "outgoing_message_deleted_text": "", "incoming_message_deleted_text": "" diff --git a/src/assets/translations/ug.json b/src/assets/translations/ug.json index 0ed74f4..b3738a0 100644 --- a/src/assets/translations/ug.json +++ b/src/assets/translations/ug.json @@ -68,6 +68,7 @@ "reply_image": "", "reply_audio_message": "", "reply_video": "", + "reply_poll": "", "outgoing_message_deleted_text": "", "incoming_message_deleted_text": "" }, diff --git a/src/assets/translations/zh_Hans.json b/src/assets/translations/zh_Hans.json index c2eeaa0..39d0bcc 100644 --- a/src/assets/translations/zh_Hans.json +++ b/src/assets/translations/zh_Hans.json @@ -118,6 +118,7 @@ "reply_image": "", "reply_audio_message": "", "reply_video": "", + "reply_poll": "", "outgoing_message_deleted_text": "", "incoming_message_deleted_text": "" }, diff --git a/src/components/Chat.vue b/src/components/Chat.vue index 2161ccc..43873e0 100644 --- a/src/components/Chat.vue +++ b/src/components/Chat.vue @@ -121,11 +121,13 @@
{{ $t("message.reply_image") }}
{{ $t("message.reply_audio_message") }}
{{ $t("message.reply_video") }}
+
{{ $t("message.reply_poll") }}
- + + $vuetify.icons.poll
@@ -1230,7 +1232,7 @@ export default { addReply(event) { this.replyToEvent = event; this.$refs.messageInput.focus(); - this.replyToContentType = event.getContent().msgtype; + this.replyToContentType = event.getContent().msgtype || 'm.poll'; this.setReplyToImage(event); }, diff --git a/src/components/messages/MessageIncomingPoll.vue b/src/components/messages/MessageIncomingPoll.vue index 8bb5166..3008f22 100644 --- a/src/components/messages/MessageIncomingPoll.vue +++ b/src/components/messages/MessageIncomingPoll.vue @@ -2,24 +2,7 @@
- - - - - - + $vuetify.icons.poll
{{ pollQuestion }}
diff --git a/src/components/messages/MessageOutgoingPoll.vue b/src/components/messages/MessageOutgoingPoll.vue index d3aaaf6..779c63e 100644 --- a/src/components/messages/MessageOutgoingPoll.vue +++ b/src/components/messages/MessageOutgoingPoll.vue @@ -2,24 +2,7 @@
- - - - - - + $vuetify.icons.poll
{{ pollQuestion }}
diff --git a/src/plugins/utils.js b/src/plugins/utils.js index 91d532f..a054390 100644 --- a/src/plugins/utils.js +++ b/src/plugins/utils.js @@ -163,9 +163,11 @@ class Util { event_id: replyToEvent.getId() } } + let senderContent = replyToEvent.getContent() + const senderContentBody = Object.getOwnPropertyDescriptor(senderContent,'body') ? senderContent.body : Object.values(senderContent)[0].question.body // Prefix the content with reply info (seems to be a legacy thing) - const prefix = replyToEvent.getContent().body.split('\n').map((item, index) => { + const prefix = senderContentBody.split('\n').map((item, index) => { return "> " + (index == 0 ? ("<" + replyToEvent.getSender() + "> ") : "") + item; }).join('\n'); content.body = prefix + "\n\n" + content.body; diff --git a/src/plugins/vuetify.js b/src/plugins/vuetify.js index 0eb52db..2614652 100644 --- a/src/plugins/vuetify.js +++ b/src/plugins/vuetify.js @@ -5,6 +5,7 @@ import icPassword from '@/assets/icons/password.vue'; import icEdit from '@/assets/icons/edit.vue'; import icGlobe from '@/assets/icons/globe.vue'; import icAddReaction from '@/assets/icons/addReaction.vue'; +import icPoll from '@/assets/icons/poll.vue'; Vue.use(Vuetify); @@ -27,6 +28,9 @@ export default new Vuetify({ addReaction: { component: icAddReaction }, + poll: { + component: icPoll + }, }, user: icUser },