diff --git a/src/components/Chat.vue b/src/components/Chat.vue index e5443f0..6b34feb 100644 --- a/src/components/Chat.vue +++ b/src/components/Chat.vue @@ -398,6 +398,7 @@ import prettyBytes from "pretty-bytes"; import RoomExport from "./RoomExport.vue"; import EmojiPicker from 'vue3-emoji-picker'; import emitter from 'tiny-emitter/instance'; +import { markRaw } from "vue"; const READ_RECEIPT_TIMEOUT = 5000; /* How long a message must have been visible before the read marker is updated */ const WINDOW_BUFFER_SIZE = 0.3; /** Relative window height of when we start paginating. Always keep this much loaded before and after our scroll position! */ diff --git a/src/components/Profile.vue b/src/components/Profile.vue index 7373497..1820630 100644 --- a/src/components/Profile.vue +++ b/src/components/Profile.vue @@ -269,7 +269,6 @@ import { mapState } from 'vuex' export default { name: "Profile", mixins: [profileInfoMixin], - inject: ['$matrix'], components: { ActionRow, SelectLanguageDialog, diff --git a/src/components/chatMixin.js b/src/components/chatMixin.js index 79baa31..abc05e5 100644 --- a/src/components/chatMixin.js +++ b/src/components/chatMixin.js @@ -1,3 +1,4 @@ +import { markRaw } from "vue"; import util, { ROOM_TYPE_CHANNEL, STATE_EVENT_ROOM_DELETION_NOTICE } from "../plugins/utils"; import MessageIncomingText from "./messages/MessageIncomingText"; import MessageIncomingFile from "./messages/MessageIncomingFile"; @@ -130,6 +131,14 @@ export default { }, componentForEvent(event, isForExport = false) { + let component = this.componentForEventInternal(event, isForExport); + if (component) { + return markRaw(component); + } + return component; + }, + + componentForEventInternal(event, isForExport = false) { const isChannel = this.roomDisplayType === ROOM_TYPE_CHANNEL; if (event === ROOM_READ_MARKER_EVENT_PLACEHOLDER) { return ReadMarker; diff --git a/src/components/messages/messageMixin.js b/src/components/messages/messageMixin.js index 74ae05c..eb7b40a 100644 --- a/src/components/messages/messageMixin.js +++ b/src/components/messages/messageMixin.js @@ -9,7 +9,6 @@ linkify.options.defaults.className = "link"; linkify.options.defaults.target = { url: "_blank" }; export default { - inject: ['$matrix'], components: { QuickReactions, }, diff --git a/src/main.js b/src/main.js index a724952..673e320 100644 --- a/src/main.js +++ b/src/main.js @@ -182,14 +182,6 @@ app.use(i18n); app.use(matrix, { store: store, i18n: i18n }); -//app.use(matrix); -//app.use(config); -// app.use(analytics); -// app.use(audioPlayer); -// app.render = h => { -// console.error("RENDERRENDERRENDERRENDERRENDSNAENNRENRANERNARE"); -// h(App); -// } if (app.$config.accentColor) { app.$vuetify.theme.themes.light.primary = app.$config.accentColor; } diff --git a/src/plugins/utils.js b/src/plugins/utils.js index e08e1e7..bfd1a8e 100644 --- a/src/plugins/utils.js +++ b/src/plugins/utils.js @@ -1055,7 +1055,6 @@ class Util { } getMatrixBaseUrl(user, config) { - console.error("getMatrixBaseUrl", user, config); if (user) { const domain = User.domainPart(user.user_id); if (domain) { diff --git a/src/plugins/vuetify.js b/src/plugins/vuetify.js index c99a0d2..5254758 100644 --- a/src/plugins/vuetify.js +++ b/src/plugins/vuetify.js @@ -3,6 +3,7 @@ import * as components from "vuetify/components"; import * as directives from "vuetify/directives"; import { aliases, md } from "vuetify/iconsets/md"; import { h } from "vue"; +import 'vuetify/styles'; // Import all .vue icons and process them, so they can be used // as $vuetify.icons. diff --git a/src/services/matrix.service.js b/src/services/matrix.service.js index 613d577..c918a8c 100644 --- a/src/services/matrix.service.js +++ b/src/services/matrix.service.js @@ -389,11 +389,7 @@ export default { { const room = this.matrixClient.getRoom(event.getRoomId()); if (room) { - Vue.set( - room, - "avatar", - room.getAvatarUrl(this.matrixClient.getHomeserverUrl(), 80, 80, "scale", true, this.useAuthedMedia) - ); + room["avatar"] = room.getAvatarUrl(this.matrixClient.getHomeserverUrl(), 80, 80, "scale", true, this.useAuthedMedia); } } break;