keanu-weblite/src/components/messages/export/MessageOutgoingThreadExport.vue

59 lines
1.7 KiB
Vue
Raw Normal View History

2023-11-06 15:28:26 +00:00
<template>
2025-05-06 12:13:03 +02:00
<message-outgoing class="messageOut-thread" v-bind="{ ...$props, ...$attrs }">
2023-11-06 15:28:26 +00:00
<component v-for="item in items" :is="componentFn(item.event)" :originalEvent="item.event" :key="item.event.getId()"
2025-05-06 12:13:03 +02:00
v-bind="{ ...$props, ...$attrs }" ref="exportedEvent" />
2023-11-06 15:28:26 +00:00
</message-outgoing>
</template>
<script>
import MessageOutgoing from "../MessageOutgoing.vue";
import messageMixin from "./../messageMixin";
import util from "../../../plugins/utils";
export default {
extends: MessageOutgoing,
components: { MessageOutgoing },
mixins: [messageMixin],
data() {
return {
items: [],
}
},
mounted() {
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), util.threadMessageType(), "m.room.message");
2023-11-06 15:28:26 +00:00
if (!this.thread) {
this.event.on("Event.relationsCreated", this.onRelationsCreated);
}
},
beforeDestroy() {
this.event.off("Event.relationsCreated", this.onRelationsCreated);
},
methods: {
onRelationsCreated() {
this.thread = this.timelineSet.relations.getChildEventsForEvent(this.event.getId(), util.threadMessageType(), "m.room.message");
2023-11-06 15:28:26 +00:00
this.event.off("Event.relationsCreated", this.onRelationsCreated);
},
processThread() {
this.items = this.timelineSet.relations.getAllChildEventsForEvent(this.event.getId())
.filter(e => util.downloadableTypes().includes(e.getContent().msgtype))
.map(e => {
let ret = {
event: e,
src: null,
};
return ret;
});
},
}
};
</script>
<style lang="scss">
@import "@/assets/css/chat.scss";
</style>
<style lang="scss" scoped>
.bubble {
width: 100%;
}
</style>