lock
- Purge room?
+ {{$t('purge_room.title')}}
- This operation will close the room for all members. It cannot be
- undone.
+ {{$t('purge_room.info')}}
@@ -18,7 +17,7 @@
block
class="text-button"
@click="showDialog = false"
- >Cancel{{$t('menu.cancel')}}
@@ -28,7 +27,7 @@
block
class="filled-button"
@click.stop="onPurgeRoom()"
- >Purge room{{$t('purge_room.button')}}
diff --git a/src/components/QuoteView.vue b/src/components/QuoteView.vue
index c675c01..370fead 100644
--- a/src/components/QuoteView.vue
+++ b/src/components/QuoteView.vue
@@ -25,8 +25,6 @@
+
+
\ No newline at end of file
diff --git a/src/components/messages/RoomAvatarChanged.vue b/src/components/messages/RoomAvatarChanged.vue
index 62b06f8..7645e80 100644
--- a/src/components/messages/RoomAvatarChanged.vue
+++ b/src/components/messages/RoomAvatarChanged.vue
@@ -1,7 +1,7 @@
- {{ stateEventDisplayName(event) }} changed the room avatar
+ {{ $t('message.user_changed_room_avatar',{user: stateEventDisplayName(event)}) }}
diff --git a/src/components/messages/RoomCreated.vue b/src/components/messages/RoomCreated.vue
new file mode 100644
index 0000000..9603e0f
--- /dev/null
+++ b/src/components/messages/RoomCreated.vue
@@ -0,0 +1,17 @@
+
+
+ {{ $t('message.user_created_room', {user: stateEventDisplayName(event)}) }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/messages/RoomEncrypted.vue b/src/components/messages/RoomEncrypted.vue
new file mode 100644
index 0000000..669b6e7
--- /dev/null
+++ b/src/components/messages/RoomEncrypted.vue
@@ -0,0 +1,17 @@
+
+
+ {{ $t('message.user_encrypted_room', {user: stateEventDisplayName(event)}) }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/messages/RoomHistoryVisibility.vue b/src/components/messages/RoomHistoryVisibility.vue
index b3cfc26..19892f4 100644
--- a/src/components/messages/RoomHistoryVisibility.vue
+++ b/src/components/messages/RoomHistoryVisibility.vue
@@ -1,7 +1,7 @@
- {{ stateEventDisplayName(event) }} made room history {{ history(event) }}
+ {{ $t('message.user_changed_room_history',{user: stateEventDisplayName(event), type: history(event)}) }}
@@ -15,13 +15,13 @@ export default {
const visibility = event.getContent().history_visibility;
switch (visibility) {
case "world_readable":
- return "readable by anyone";
+ return this.$t('message.room_history_world_readable');
case "shared":
- return "readable to all members in the room";
+ return this.$t('message.room_history_shared');
case "invited":
- return "readable to members from when they were invited";
+ return this.$t('message.room_history_invited');
case "joined":
- return "readable to members from when they joined";
+ return this.$t('message.room_history_joined');
}
return visibility;
}
diff --git a/src/components/messages/RoomJoinRules.vue b/src/components/messages/RoomJoinRules.vue
index f350988..f80dbff 100644
--- a/src/components/messages/RoomJoinRules.vue
+++ b/src/components/messages/RoomJoinRules.vue
@@ -1,7 +1,7 @@
- {{ stateEventDisplayName(event) }} made the room {{ joinRule(event) }}
+ {{ $t('message.user_changed_join_rules', { user: stateEventDisplayName(event), type: joinRule(event)}) }}
@@ -15,9 +15,9 @@ export default {
const joinRule = event.getContent().join_rule;
switch (joinRule) {
case "invite":
- return "invite only";
+ return this.$t('message.room_joinrule_invite');
case "public":
- return "public";
+ return this.$t('message.room_joinrule_public');
}
return joinRule;
}
diff --git a/src/components/messages/RoomNameChanged.vue b/src/components/messages/RoomNameChanged.vue
index ac3e30f..ba152b8 100644
--- a/src/components/messages/RoomNameChanged.vue
+++ b/src/components/messages/RoomNameChanged.vue
@@ -1,8 +1,7 @@
- {{ stateEventDisplayName(event) }} changed room name to
- {{ event.getContent().name }}
+ {{ $t('message.user_changed_room_name', {user: stateEventDisplayName(event), name: event.getContent().name}) }}
diff --git a/src/components/messages/RoomPowerLevelsChanged.vue b/src/components/messages/RoomPowerLevelsChanged.vue
new file mode 100644
index 0000000..14df1ff
--- /dev/null
+++ b/src/components/messages/RoomPowerLevelsChanged.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/messages/RoomTopicChanged.vue b/src/components/messages/RoomTopicChanged.vue
index d669bb3..6ac9992 100644
--- a/src/components/messages/RoomTopicChanged.vue
+++ b/src/components/messages/RoomTopicChanged.vue
@@ -1,8 +1,7 @@
- {{ stateEventDisplayName(event) }} changed topic to
- {{ event.getContent().topic }}
+ {{ $t('message.user_changed_room_topic', {user: stateEventDisplayName(event), topic: event.getContent().topic}) }}
diff --git a/src/components/messages/messageMixin.js b/src/components/messages/messageMixin.js
index 7151bc2..faa4351 100644
--- a/src/components/messages/messageMixin.js
+++ b/src/components/messages/messageMixin.js
@@ -2,7 +2,7 @@ import QuickReactions from './QuickReactions.vue';
var linkify = require('linkifyjs');
var linkifyHtml = require('linkifyjs/html');
linkify.options.defaults.className = "link";
-linkify.options.defaults.target = null;
+linkify.options.defaults.target = { url: '_blank' };
export default {
components: {
@@ -102,7 +102,7 @@ export default {
}
// We don't have the original text (at the moment at least)
- return "";
+ return this.$t('fallbacks.original_text');
}
return null;
},
@@ -169,7 +169,7 @@ export default {
*/
stateEventDisplayName(event) {
if (event.getSender() == this.$matrix.currentUserId) {
- return "You";
+ return this.$t('message.you');
}
if (this.room) {
const member = this.room.getMember(event.getSender());
diff --git a/src/main.js b/src/main.js
index 4b6ed62..9b17b0e 100644
--- a/src/main.js
+++ b/src/main.js
@@ -13,6 +13,7 @@ import VueResize from 'vue-resize';
import 'vue-resize/dist/vue-resize.css';
import VueClipboard from 'vue-clipboard2'
import VueSanitize from "vue-sanitize";
+import i18n from './plugins/lang';
var defaultOptions = VueSanitize.defaults;
defaultOptions.disallowedTagsMode = "recursiveEscape";
@@ -153,6 +154,7 @@ new Vue({
vuetify,
store,
router,
+ i18n,
matrix,
cleaninsights,
render: h => h(App)
diff --git a/src/plugins/lang.js b/src/plugins/lang.js
new file mode 100644
index 0000000..fa2c749
--- /dev/null
+++ b/src/plugins/lang.js
@@ -0,0 +1,24 @@
+import Vue from 'vue'
+import VueI18n from 'vue-i18n'
+
+Vue.use(VueI18n)
+
+var messages = {}
+
+function importAll(r) {
+ return r.keys().map(res => {
+ // Remove"./"
+ const parts = res.split("/");
+ const locale = parts[1].split(".")[0];
+ messages[locale] = r(res).default;
+ });
+}
+importAll(require.context('@/assets/translations/', true, /\.js$/));
+
+
+export default new VueI18n({
+ locale: 'en',
+ fallbackLocale: 'en',
+ silentFallbackWarn: true,
+ messages: messages
+})
\ No newline at end of file
diff --git a/src/router/index.js b/src/router/index.js
index 8a088b0..a69fbc1 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -82,7 +82,7 @@ const router = new VueRouter({
});
router.beforeEach((to, from, next) => {
- const publicPages = ['/login'];
+ const publicPages = ['/login','/createroom'];
var authRequired = !publicPages.includes(to.path);
const loggedIn = router.app.$store.state.auth.user;
diff --git a/src/services/matrix.service.js b/src/services/matrix.service.js
index c68025f..00d4013 100644
--- a/src/services/matrix.service.js
+++ b/src/services/matrix.service.js
@@ -269,6 +269,19 @@ export default {
})
},
+ /**
+ * Returns a promise that will log us into the Matrix.
+ *
+ * Will use a real account, if we have one, otherwise will create
+ * a random account.
+ */
+ getLoginPromise() {
+ if (this.ready) {
+ return Promise.resolve(this.currentUser);
+ }
+ return this.$store.dispatch("login", this.currentUser || new User(config.defaultServer, "", "", true));
+ },
+
addMatrixClientListeners(client) {
if (client) {
client.on("event", this.onEvent);
diff --git a/update_version.sh b/update_version.sh
new file mode 100755
index 0000000..157f38c
--- /dev/null
+++ b/update_version.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env sh
+# Get version from file
+echo "Get version from package.json"
+v=`egrep "^[[:space:]]*\"version\"" package.json | cut -d \" -f 4`
+# Increment
+echo "Increment value"
+v=`echo "${v%.*}.$((${v##*.}+1))"`
+# Update file
+echo "Update file"
+sed -i .bak "s/\(\"version\": \"\)[^\"]*\(\"\)/\1${v}\2/g" package.json
diff --git a/vue.config.js b/vue.config.js
index eac7f5d..5514cb3 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -7,7 +7,15 @@ module.exports = {
? './'
: './',
- devServer: {
- https: true
- },
+ chainWebpack: config => {
+ config.plugin('html').tap(args => {
+ var c = require("./src/assets/config.json");
+ args[0].title = c.appName;
+ return args;
+ })
+ },
+
+ devServer: {
+ //https: true
+ },
}
\ No newline at end of file