Decrypt all events before use
This commit is contained in:
parent
2c5b386af9
commit
bf290a5cd7
10 changed files with 44 additions and 34 deletions
|
|
@ -757,7 +757,17 @@ export default {
|
||||||
let lastDisplayedEvent = undefined;
|
let lastDisplayedEvent = undefined;
|
||||||
events = events.flatMap((e) => {
|
events = events.flatMap((e) => {
|
||||||
let result = [];
|
let result = [];
|
||||||
e.component = this.componentForEvent(e, false);
|
if (e.isEncrypted()) {
|
||||||
|
if (e.getClearContent()) {
|
||||||
|
e.component = this.componentForEvent(e, false);
|
||||||
|
} else {
|
||||||
|
this.$matrix.matrixClient.decryptEventIfNeeded(e).then(() => {
|
||||||
|
e.component = this.componentForEvent(e, false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
e.component = this.componentForEvent(e, false);
|
||||||
|
}
|
||||||
if (e.getId() == this.readMarker && showReadMarker) {
|
if (e.getId() == this.readMarker && showReadMarker) {
|
||||||
const readMarkerEvent = ROOM_READ_MARKER_EVENT_PLACEHOLDER;
|
const readMarkerEvent = ROOM_READ_MARKER_EVENT_PLACEHOLDER;
|
||||||
readMarkerEvent["component"] = this.componentForEvent(readMarkerEvent, false);
|
readMarkerEvent["component"] = this.componentForEvent(readMarkerEvent, false);
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ export default {
|
||||||
console.log("Failed to fetch thumbnail: ", err);
|
console.log("Failed to fetch thumbnail: ", err);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeUnmount() {
|
||||||
if (this.src) {
|
if (this.src) {
|
||||||
const objectUrl = this.src;
|
const objectUrl = this.src;
|
||||||
this.src = null;
|
this.src = null;
|
||||||
|
|
|
||||||
|
|
@ -31,8 +31,8 @@
|
||||||
<GalleryItemsView :originalEvent="originalEvent" :items="items" :initialItem="showItem" v-if="!!showItem" v-on:close="showItem = null" />
|
<GalleryItemsView :originalEvent="originalEvent" :items="items" :initialItem="showItem" v-if="!!showItem" v-on:close="showItem = null" />
|
||||||
</message-incoming>
|
</message-incoming>
|
||||||
<component v-else-if="items.length == 1" :is="componentFn(items[0].event)"
|
<component v-else-if="items.length == 1" :is="componentFn(items[0].event)"
|
||||||
:originalEvent="items[0].event"
|
|
||||||
v-bind="{...$props, ...$attrs}"
|
v-bind="{...$props, ...$attrs}"
|
||||||
|
:originalEvent="items[0].event"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -43,6 +43,7 @@ import util, { ROOM_TYPE_CHANNEL, ROOM_TYPE_FILE_MODE } from "../../plugins/util
|
||||||
import GalleryItemsView from '../file_mode/GalleryItemsView.vue';
|
import GalleryItemsView from '../file_mode/GalleryItemsView.vue';
|
||||||
import ThumbnailView from '../file_mode/ThumbnailView.vue';
|
import ThumbnailView from '../file_mode/ThumbnailView.vue';
|
||||||
import SwipeableThumbnailsView from "./channel/SwipeableThumbnailsView.vue";
|
import SwipeableThumbnailsView from "./channel/SwipeableThumbnailsView.vue";
|
||||||
|
import { reactive } from "vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
extends: MessageIncoming,
|
extends: MessageIncoming,
|
||||||
|
|
@ -61,7 +62,7 @@ export default {
|
||||||
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeUnmount() {
|
||||||
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
@ -82,19 +83,18 @@ export default {
|
||||||
this.items = this.timelineSet.relations.getAllChildEventsForEvent(this.event.getId())
|
this.items = this.timelineSet.relations.getAllChildEventsForEvent(this.event.getId())
|
||||||
.filter(e => !e.isRedacted() && util.downloadableTypes().includes(e.getContent().msgtype))
|
.filter(e => !e.isRedacted() && util.downloadableTypes().includes(e.getContent().msgtype))
|
||||||
.map(e => {
|
.map(e => {
|
||||||
let ret = {
|
let ret = reactive({
|
||||||
event: e,
|
event: e,
|
||||||
src: null,
|
src: null,
|
||||||
};
|
});
|
||||||
ret.promise =
|
ret.promise = this.$matrix.matrixClient.decryptEventIfNeeded(e)
|
||||||
util
|
.then(() => util.getThumbnail(this.$matrix.matrixClient, this.$matrix.useAuthedMedia, e, this.$config, 100, 100))
|
||||||
.getThumbnail(this.$matrix.matrixClient, this.$matrix.useAuthedMedia, e, this.$config, 100, 100)
|
.then((url) => {
|
||||||
.then((url) => {
|
ret.src = url;
|
||||||
ret.src = url;
|
})
|
||||||
})
|
.catch((err) => {
|
||||||
.catch((err) => {
|
console.log("Failed to fetch thumbnail: ", err);
|
||||||
console.log("Failed to fetch thumbnail: ", err);
|
});
|
||||||
});
|
|
||||||
return ret;
|
return ret;
|
||||||
});
|
});
|
||||||
}, this.$el);
|
}, this.$el);
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ export default {
|
||||||
console.log("Failed to fetch thumbnail: ", err);
|
console.log("Failed to fetch thumbnail: ", err);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeUnmount() {
|
||||||
if (this.src) {
|
if (this.src) {
|
||||||
const objectUrl = this.src;
|
const objectUrl = this.src;
|
||||||
this.src = null;
|
this.src = null;
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,8 @@
|
||||||
<GalleryItemsView :originalEvent="originalEvent" :items="items" :initialItem="showItem" v-if="!!showItem" v-on:close="showItem = null" />
|
<GalleryItemsView :originalEvent="originalEvent" :items="items" :initialItem="showItem" v-if="!!showItem" v-on:close="showItem = null" />
|
||||||
</message-outgoing>
|
</message-outgoing>
|
||||||
<component v-else-if="items.length == 1" :is="componentFn(items[0].event)"
|
<component v-else-if="items.length == 1" :is="componentFn(items[0].event)"
|
||||||
:originalEvent="items[0].event"
|
|
||||||
v-bind="{...$props, ...$attrs}"
|
v-bind="{...$props, ...$attrs}"
|
||||||
|
:originalEvent="items[0].event"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -44,6 +44,7 @@ import util, { ROOM_TYPE_CHANNEL } from "../../plugins/utils";
|
||||||
import GalleryItemsView from '../file_mode/GalleryItemsView.vue';
|
import GalleryItemsView from '../file_mode/GalleryItemsView.vue';
|
||||||
import ThumbnailView from '../file_mode/ThumbnailView.vue';
|
import ThumbnailView from '../file_mode/ThumbnailView.vue';
|
||||||
import SwipeableThumbnailsView from "./channel/SwipeableThumbnailsView.vue";
|
import SwipeableThumbnailsView from "./channel/SwipeableThumbnailsView.vue";
|
||||||
|
import { reactive } from "vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
extends: MessageOutgoing,
|
extends: MessageOutgoing,
|
||||||
|
|
@ -62,7 +63,7 @@ export default {
|
||||||
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeUnmount() {
|
||||||
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
@ -83,19 +84,18 @@ export default {
|
||||||
this.items = this.timelineSet.relations.getAllChildEventsForEvent(this.event.getId())
|
this.items = this.timelineSet.relations.getAllChildEventsForEvent(this.event.getId())
|
||||||
.filter(e => !e.isRedacted() && util.downloadableTypes().includes(e.getContent().msgtype))
|
.filter(e => !e.isRedacted() && util.downloadableTypes().includes(e.getContent().msgtype))
|
||||||
.map(e => {
|
.map(e => {
|
||||||
let ret = {
|
let ret = reactive({
|
||||||
event: e,
|
event: e,
|
||||||
src: null,
|
src: null,
|
||||||
};
|
});
|
||||||
ret.promise =
|
ret.promise = this.$matrix.matrixClient.decryptEventIfNeeded(e)
|
||||||
util
|
.then(() => util.getThumbnail(this.$matrix.matrixClient, this.$matrix.useAuthedMedia, e, this.$config, 100, 100))
|
||||||
.getThumbnail(this.$matrix.matrixClient, this.$matrix.useAuthedMedia, e, this.$config, 100, 100)
|
.then((url) => {
|
||||||
.then((url) => {
|
ret.src = url;
|
||||||
ret.src = url;
|
})
|
||||||
})
|
.catch((err) => {
|
||||||
.catch((err) => {
|
console.log("Failed to fetch thumbnail: ", err);
|
||||||
console.log("Failed to fetch thumbnail: ", err);
|
});
|
||||||
});
|
|
||||||
return ret;
|
return ret;
|
||||||
});
|
});
|
||||||
}, this.$el);
|
}, this.$el);
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ export default {
|
||||||
this.contain = true;
|
this.contain = true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeUnmount() {
|
||||||
if (this.src) {
|
if (this.src) {
|
||||||
const objectUrl = this.src;
|
const objectUrl = this.src;
|
||||||
this.src = null;
|
this.src = null;
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ export default {
|
||||||
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeUnmount() {
|
||||||
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ export default {
|
||||||
this.contain = true;
|
this.contain = true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeUnmount() {
|
||||||
if (this.src) {
|
if (this.src) {
|
||||||
const objectUrl = this.src;
|
const objectUrl = this.src;
|
||||||
this.src = null;
|
this.src = null;
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ export default {
|
||||||
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
this.event.on("Event.relationsCreated", this.onRelationsCreated);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeUnmount() {
|
||||||
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ export default {
|
||||||
mcCustom: null
|
mcCustom: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeUnmount() {
|
||||||
this.thread = null;
|
this.thread = null;
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue