file types and exports

This commit is contained in:
N-Pex 2023-12-04 11:29:23 +01:00
parent db04080463
commit 324ccd70b3
21 changed files with 339 additions and 55 deletions

View file

@ -287,6 +287,7 @@ export default {
var imageFolder = zip.folder("images");
var audioFolder = zip.folder("audio");
var videoFolder = zip.folder("video");
var filesFolder = zip.folder("files");
var downloadPromises = [];
let components = this.$refs.exportedEvent;
@ -321,7 +322,8 @@ export default {
for (let imageIndex = 0; imageIndex < images.length; imageIndex++) {
const img = images[imageIndex];
img.onerror = undefined;
img.src = './avatars/' + fileName;
img.removeAttribute("src");
img.setAttribute("data-exported-src", './avatars/' + fileName);
}
}
}
@ -421,13 +423,15 @@ export default {
var extension = ".mp3";
let fileName = comp.event.getId() + extension;
audioFolder.file(fileName, blob); // TODO calc bytes
//this.$nextTick(() => {
let elements = comp.$el.getElementsByTagName("audio");
let element = elements && elements[0];
if (element) {
element.src = "./audio/" + fileName;
element.setAttribute("data-exported-src", "./audio/" + fileName);
}
this.processedEvents += 1;
resolve(true);
//});
});
}
})
@ -449,13 +453,36 @@ export default {
var extension = ".mp4";
let fileName = comp.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.src = "./video/" + fileName;
element.setAttribute("data-exported-src", "./video/" + fileName);
}
this.processedEvents += 1;
resolve(true);
});
}
})
.catch((ignoredErr) => {
this.processedEvents += 1;
})
);
break;
case "MessageIncomingFileExport":
case "MessageOutgoingFileExport":
downloadPromises.push(
util
.getAttachment(this.$matrix.matrixClient, comp.event, null, true)
.then((blob) => {
if (currentMediaSize + blob.size <= maxMediaSize) {
currentMediaSize += blob.size;
return new Promise((resolve, ignoredReject) => {
var extension = util.getFileExtension(comp.event);
let fileName = comp.event.getId() + extension;
filesFolder.file(fileName, blob);
comp.href="./files/" + fileName;
this.processedEvents += 1;
resolve(true);
});
}
@ -504,7 +531,8 @@ export default {
getCssRules(root);
this.$nextTick(() => {
doc += this.$refs.exportRoot.outerHTML;
const contentHtml = this.$refs.exportRoot.outerHTML;
doc += contentHtml.replaceAll("data-exported-src=", "src=");
doc += "</div></body></html>";
zip.file("chat.html", doc);