From 14ea4fae3a5f3841b26ec083622b10f34f4c4e48 Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Mon, 18 Mar 2024 08:18:59 +0500 Subject: [PATCH] web: expose streaming file decryption --- apps/web/src/interfaces/fs.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/web/src/interfaces/fs.ts b/apps/web/src/interfaces/fs.ts index b7fa0a1bc..575376cb3 100644 --- a/apps/web/src/interfaces/fs.ts +++ b/apps/web/src/interfaces/fs.ts @@ -35,7 +35,6 @@ import { Base64DecoderStream } from "../utils/streams/base64-decoder-stream"; import { toBlob } from "@notesnook-importer/core/dist/src/utils/stream"; import { DataFormat, SerializedKey } from "@notesnook/crypto"; import { IDataType } from "hash-wasm/dist/lib/util"; -import { IndexedDBKVStore } from "./key-value"; import FileHandle from "@notesnook/streamable-fs/dist/src/filehandle"; import { CacheStorageFileStore, @@ -569,6 +568,15 @@ type FileMetadata = { export async function decryptFile( filename: string, fileMetadata: FileMetadata +) { + const stream = await streamingDecryptFile(filename, fileMetadata); + if (!stream) return false; + return await toBlob(stream); +} + +export async function streamingDecryptFile( + filename: string, + fileMetadata: FileMetadata ) { if (!fileMetadata) return false; @@ -578,7 +586,7 @@ export async function decryptFile( const { key, iv } = fileMetadata; const decryptionStream = await NNCrypto.createDecryptionStream(key, iv); - return await toBlob(fileHandle.readable.pipeThrough(decryptionStream)); + return fileHandle.readable.pipeThrough(decryptionStream); } export async function saveFile(filename: string, fileMetadata: FileMetadata) {