Work on export and moving to Vue composition API

This commit is contained in:
N-Pex 2025-06-27 16:10:25 +02:00
parent b0fae3396d
commit 9a124c5ab9
22 changed files with 660 additions and 906 deletions

View file

@ -1,30 +1,25 @@
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";
import MessageIncomingImage from "./messages/MessageIncomingImage.vue";
import MessageFile from "./messages/composition/MessageFile.vue";
import MessageImage from "./messages/composition/MessageImage.vue";
import MessageIncomingAudio from "./messages/MessageIncomingAudio.vue";
import MessageIncomingVideo from "./messages/MessageIncomingVideo.vue";
import MessageVideo from "./messages/composition/MessageVideo.vue";
import MessageIncomingSticker from "./messages/MessageIncomingSticker.vue";
import MessageIncomingPoll from "./messages/MessageIncomingPoll.vue";
import MessageIncomingThread from "./messages/composition/MessageIncomingThread.vue";
import MessageThread from "./messages/composition/MessageThread.vue";
import MessageOutgoingText from "./messages/MessageOutgoingText";
import MessageOutgoingFile from "./messages/MessageOutgoingFile";
import MessageOutgoingImage from "./messages/MessageOutgoingImage.vue";
import MessageOutgoingAudio from "./messages/MessageOutgoingAudio.vue";
import MessageOutgoingVideo from "./messages/MessageOutgoingVideo.vue";
import MessageOutgoingSticker from "./messages/MessageOutgoingSticker.vue";
import MessageOutgoingPoll from "./messages/MessageOutgoingPoll.vue";
import MessageOutgoingThread from "./messages/composition/MessageOutgoingThread.vue";
import MessageIncomingImageExport from "./messages/export/MessageIncomingImageExport";
import MessageIncomingAudioExport from "./messages/export/MessageIncomingAudioExport";
import MessageIncomingVideoExport from "./messages/export/MessageIncomingVideoExport";
import MessageIncomingThreadExport from "./messages/export/MessageIncomingThreadExport";
import MessageThreadExport from "./messages/composition/MessageThreadExport.vue";
import MessageIncomingFileExport from "./messages/export/MessageIncomingFileExport";
import MessageOutgoingImageExport from "./messages/export/MessageOutgoingImageExport";
import MessageOutgoingAudioExport from "./messages/export/MessageOutgoingAudioExport";
import MessageOutgoingVideoExport from "./messages/export/MessageOutgoingVideoExport";
import MessageOutgoingThreadExport from "./messages/export/MessageOutgoingThreadExport";
import MessageOutgoingFileExport from "./messages/export/MessageOutgoingFileExport";
import ContactJoin from "./messages/ContactJoin.vue";
import ContactLeave from "./messages/ContactLeave.vue";
@ -65,19 +60,15 @@ export default {
components: {
ChatHeader,
MessageIncomingText,
MessageIncomingFile,
MessageIncomingImage,
MessageFile,
MessageImage,
MessageIncomingAudio,
MessageIncomingVideo,
MessageVideo,
MessageIncomingSticker,
MessageIncomingThread,
MessageThread,
MessageOutgoingText,
MessageOutgoingFile,
MessageOutgoingImage,
MessageOutgoingAudio,
MessageOutgoingVideo,
MessageOutgoingSticker,
MessageOutgoingThread,
MessageOutgoingPoll,
ContactJoin,
ContactLeave,
@ -138,6 +129,7 @@ export default {
componentForEvent(event, isForExport = false) {
let component = this.componentForEventInternal(event, isForExport);
if (component) {
console.error("COMPONENT", isForExport, component.name);
return markRaw(component);
}
return component;
@ -189,7 +181,7 @@ export default {
}
if (event.isMxThread) {
// Incoming thread, e.g. a file drop!
return isForExport ? MessageIncomingThreadExport : MessageIncomingThread;
return isForExport ? MessageThreadExport : MessageThread;
}
if (event.getContent().msgtype == "m.image") {
// For SVG, make downloadable
@ -201,12 +193,12 @@ export default {
if (isForExport) {
return MessageIncomingFileExport;
}
return MessageIncomingFile;
return MessageFile;
}
if (isForExport) {
return MessageIncomingImageExport;
}
return MessageIncomingImage;
return MessageImage;
} else if (event.getContent().msgtype == "m.audio") {
if (isForExport) {
return MessageIncomingAudioExport;
@ -216,12 +208,12 @@ export default {
if (isForExport) {
return MessageIncomingVideoExport;
}
return MessageIncomingVideo;
return MessageVideo;
} else if (event.getContent().msgtype == "m.file") {
if (isForExport) {
return MessageIncomingFileExport;
}
return MessageIncomingFile;
return MessageFile;
} else if (stickers.isStickerShortcode(event.getContent().body)) {
return MessageIncomingSticker;
}
@ -236,7 +228,7 @@ export default {
}
if (event.isMxThread) {
// Outgoing thread
return isForExport ? MessageOutgoingThreadExport : MessageOutgoingThread;
return isForExport ? MessageThreadExport : MessageThread;
}
if (event.getContent().msgtype == "m.image") {
// For SVG, make downloadable
@ -245,12 +237,12 @@ export default {
event.getContent().info.mimetype &&
event.getContent().info.mimetype.startsWith("image/svg")
) {
return MessageOutgoingImage;
return MessageImage;
}
if (isForExport) {
return MessageOutgoingImageExport;
}
return MessageOutgoingImage;
return MessageImage;
} else if (event.getContent().msgtype == "m.audio") {
if (isForExport) {
return MessageOutgoingAudioExport;
@ -260,12 +252,12 @@ export default {
if (isForExport) {
return MessageOutgoingVideoExport;
}
return MessageOutgoingVideo;
return MessageVideo;
} else if (event.getContent().msgtype == "m.file") {
if (isForExport) {
return MessageOutgoingFileExport;
}
return MessageOutgoingFile;
return MessageFile;
} else if (stickers.isStickerShortcode(event.getContent().body)) {
return MessageOutgoingSticker;
}