diff --git a/src/components/RoomExport.vue b/src/components/RoomExport.vue index 8f88d8d..62379e6 100644 --- a/src/components/RoomExport.vue +++ b/src/components/RoomExport.vue @@ -291,7 +291,9 @@ export default { this.totalEvents = this.exportComponents.length; - let beforeExportPromises = this.exportComponents.filter((c) => c.component.exposed?.beforeExport !== undefined).map((c) => c.component.exposed.beforeExport()); + let beforeExportPromises = this.exportComponents + .filter((c) => c.component.exposed?.beforeExport !== undefined) + .map((c) => c.component.exposed.beforeExport()); await Promise.all(beforeExportPromises); // UI updated, start processing events @@ -369,11 +371,7 @@ export default { } } - let attachment = - event && event.getId ? this.$matrix.attachmentManager.getEventAttachment(event) : undefined; - let componentClass = comp.type - ? comp.type.__file.split("/").reverse()[0].split(".")[0] - : "invalid_component"; + let attachment = event && event.getId ? this.$matrix.attachmentManager.getEventAttachment(event) : undefined; if (attachment && (attachment.srcSize = 0 || currentMediaSize + attachment.srcSize <= maxMediaSize)) { downloadPromises.push( @@ -384,72 +382,53 @@ export default { if (currentMediaSize + blob.size <= maxMediaSize) { currentMediaSize += blob.size; - switch (componentClass) { - case "MessageIncomingImageExport": - case "MessageOutgoingImageExport": - { - let mime = blob.type; - var extension = ".png"; - switch (mime) { - case "image/jpeg": - case "image/jpg": - extension = ".jpg"; - break; - case "image/gif": - extension = ".gif"; - } + const mime = blob.type; - let fileName = event.getId() + extension; - imageFolder.file(fileName, blob); // TODO calc bytes + if (mime.startsWith("image/")) { + var extension = ".png"; + switch (mime) { + case "image/jpeg": + case "image/jpg": + extension = ".jpg"; + break; + case "image/gif": + extension = ".gif"; + } - // Update source - const images = comp.el.getElementsByTagName("img"); - for (let imageIndex = 0; imageIndex < images.length; imageIndex++) { - const img = images[imageIndex]; - img.removeAttribute("src"); - img.setAttribute("data-exported-src", "./images/" + fileName); - } - } - break; + let fileName = event.getId() + extension; + imageFolder.file(fileName, blob); // TODO calc bytes - case "MessageIncomingAudioExport": - case "MessageOutgoingAudioExport": - { - var extension = ".webm"; - let fileName = event.getId() + extension; - audioFolder.file(fileName, blob); // TODO calc bytes - let elements = comp.el.getElementsByTagName("audio"); - let element = elements && elements[0]; - if (element) { - element.setAttribute("data-exported-src", "./audio/" + fileName); - } - } - break; - - case "MessageIncomingVideoExport": - case "MessageOutgoingVideoExport": - { - var extension = ".mp4"; - let fileName = event.getId() + extension; - videoFolder.file(fileName, blob); // TODO calc bytes - // comp.src = "./video/" + fileName; - let elements = comp.el.getElementsByTagName("video"); - let element = elements && elements[0]; - if (element) { - element.setAttribute("data-exported-src", "./video/" + fileName); - } - } - break; - - case "MessageIncomingFileExport": - case "MessageOutgoingFileExport": - { - var extension = util.getFileExtension(event); - let fileName = event.getId() + extension; - filesFolder.file(fileName, blob); - comp.component.data.href = "./files/" + fileName; - } - break; + // Update source + const images = comp.el.getElementsByTagName("img"); + for (let imageIndex = 0; imageIndex < images.length; imageIndex++) { + const img = images[imageIndex]; + img.removeAttribute("src"); + img.setAttribute("data-exported-src", "./images/" + fileName); + } + } else if (mime.startsWith("audio/")) { + var extension = ".webm"; + let fileName = event.getId() + extension; + audioFolder.file(fileName, blob); // TODO calc bytes + let elements = comp.el.getElementsByTagName("audio"); + let element = elements && elements[0]; + if (element) { + element.setAttribute("data-exported-src", "./audio/" + fileName); + } + } else if (mime.startsWith("video/")) { + var extension = ".mp4"; + let fileName = event.getId() + extension; + videoFolder.file(fileName, blob); // TODO calc bytes + // comp.src = "./video/" + fileName; + let elements = comp.el.getElementsByTagName("video"); + let element = elements && elements[0]; + if (element) { + element.setAttribute("data-exported-src", "./video/" + fileName); + } + } else { + var extension = util.getFileExtension(event); + let fileName = event.getId() + extension; + filesFolder.file(fileName, blob); + comp.component.data.href = "./files/" + fileName; } this.processedEvents += 1; return true; diff --git a/vite.config.mjs b/vite.config.mjs index c91cae9..723500e 100644 --- a/vite.config.mjs +++ b/vite.config.mjs @@ -57,5 +57,8 @@ export default defineConfig(({mode}) => ({ build: { assetsDir: "assets", commonjsOptions: { transformMixedEsModules: true } - } + }, + preview: { + port: 5173, + }, }));