2021-10-30 13:59:11 +05:00
|
|
|
import FS from "../interfaces/fs";
|
|
|
|
|
import { db } from "./db";
|
|
|
|
|
|
|
|
|
|
export async function downloadAttachment(hash) {
|
|
|
|
|
const attachment = db.attachments.attachment(hash);
|
|
|
|
|
if (!attachment) return;
|
|
|
|
|
const downloadResult = await db.fs.downloadFile(
|
|
|
|
|
attachment.metadata.hash,
|
|
|
|
|
attachment.metadata.hash,
|
2021-11-18 15:17:50 +05:00
|
|
|
attachment.chunkSize,
|
|
|
|
|
attachment.metadata
|
2021-10-30 13:59:11 +05:00
|
|
|
);
|
|
|
|
|
if (!downloadResult) throw new Error("Failed to download file.");
|
|
|
|
|
|
|
|
|
|
const key = await db.attachments.decryptKey(attachment.key);
|
|
|
|
|
if (!key) throw new Error("Invalid key for attachment.");
|
|
|
|
|
|
|
|
|
|
await FS.saveFile(attachment.metadata.hash, {
|
|
|
|
|
key,
|
|
|
|
|
iv: attachment.iv,
|
|
|
|
|
name: attachment.metadata.filename,
|
|
|
|
|
type: attachment.metadata.type,
|
2022-01-17 14:04:49 +05:00
|
|
|
isUploaded: !!attachment.dateUploaded,
|
2021-10-30 13:59:11 +05:00
|
|
|
});
|
|
|
|
|
}
|