Fix room export

Issue #657
This commit is contained in:
N-Pex 2025-07-15 14:19:17 +02:00
parent 6c0f44a16a
commit 890db0ca33
2 changed files with 52 additions and 70 deletions

View file

@ -291,7 +291,9 @@ export default {
this.totalEvents = this.exportComponents.length; 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); await Promise.all(beforeExportPromises);
// UI updated, start processing events // UI updated, start processing events
@ -369,11 +371,7 @@ export default {
} }
} }
let attachment = let attachment = event && event.getId ? this.$matrix.attachmentManager.getEventAttachment(event) : undefined;
event && event.getId ? this.$matrix.attachmentManager.getEventAttachment(event) : undefined;
let componentClass = comp.type
? comp.type.__file.split("/").reverse()[0].split(".")[0]
: "invalid_component";
if (attachment && (attachment.srcSize = 0 || currentMediaSize + attachment.srcSize <= maxMediaSize)) { if (attachment && (attachment.srcSize = 0 || currentMediaSize + attachment.srcSize <= maxMediaSize)) {
downloadPromises.push( downloadPromises.push(
@ -384,11 +382,9 @@ export default {
if (currentMediaSize + blob.size <= maxMediaSize) { if (currentMediaSize + blob.size <= maxMediaSize) {
currentMediaSize += blob.size; currentMediaSize += blob.size;
switch (componentClass) { const mime = blob.type;
case "MessageIncomingImageExport":
case "MessageOutgoingImageExport": if (mime.startsWith("image/")) {
{
let mime = blob.type;
var extension = ".png"; var extension = ".png";
switch (mime) { switch (mime) {
case "image/jpeg": case "image/jpeg":
@ -409,12 +405,7 @@ export default {
img.removeAttribute("src"); img.removeAttribute("src");
img.setAttribute("data-exported-src", "./images/" + fileName); img.setAttribute("data-exported-src", "./images/" + fileName);
} }
} } else if (mime.startsWith("audio/")) {
break;
case "MessageIncomingAudioExport":
case "MessageOutgoingAudioExport":
{
var extension = ".webm"; var extension = ".webm";
let fileName = event.getId() + extension; let fileName = event.getId() + extension;
audioFolder.file(fileName, blob); // TODO calc bytes audioFolder.file(fileName, blob); // TODO calc bytes
@ -423,12 +414,7 @@ export default {
if (element) { if (element) {
element.setAttribute("data-exported-src", "./audio/" + fileName); element.setAttribute("data-exported-src", "./audio/" + fileName);
} }
} } else if (mime.startsWith("video/")) {
break;
case "MessageIncomingVideoExport":
case "MessageOutgoingVideoExport":
{
var extension = ".mp4"; var extension = ".mp4";
let fileName = event.getId() + extension; let fileName = event.getId() + extension;
videoFolder.file(fileName, blob); // TODO calc bytes videoFolder.file(fileName, blob); // TODO calc bytes
@ -438,19 +424,12 @@ export default {
if (element) { if (element) {
element.setAttribute("data-exported-src", "./video/" + fileName); element.setAttribute("data-exported-src", "./video/" + fileName);
} }
} } else {
break;
case "MessageIncomingFileExport":
case "MessageOutgoingFileExport":
{
var extension = util.getFileExtension(event); var extension = util.getFileExtension(event);
let fileName = event.getId() + extension; let fileName = event.getId() + extension;
filesFolder.file(fileName, blob); filesFolder.file(fileName, blob);
comp.component.data.href = "./files/" + fileName; comp.component.data.href = "./files/" + fileName;
} }
break;
}
this.processedEvents += 1; this.processedEvents += 1;
return true; return true;
} else { } else {

View file

@ -57,5 +57,8 @@ export default defineConfig(({mode}) => ({
build: { build: {
assetsDir: "assets", assetsDir: "assets",
commonjsOptions: { transformMixedEsModules: true } commonjsOptions: { transformMixedEsModules: true }
} },
preview: {
port: 5173,
},
})); }));