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 }">
|
2025-05-14 10:47:21 +02:00
|
|
|
<component v-for="item in items" :is="componentFn(item.event)" v-bind="{ ...$props, ...$attrs }" :originalEvent="item.event" :key="item.event.getId()" 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() {
|
2024-06-28 11:49:55 +02:00
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
},
|
2025-05-13 16:32:09 +02:00
|
|
|
beforeUnmount() {
|
2023-11-06 15:28:26 +00:00
|
|
|
this.event.off("Event.relationsCreated", this.onRelationsCreated);
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
onRelationsCreated() {
|
2024-06-28 11:49:55 +02:00
|
|
|
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">
|
2025-05-13 22:38:10 +02:00
|
|
|
@use "@/assets/css/chat.scss" as *;
|
2023-11-06 15:28:26 +00:00
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.bubble {
|
|
|
|
|
width: 100%;
|
|
|
|
|
}
|
|
|
|
|
</style>
|