From 2a3df8ab53bd273401b79cc646f5ab82066dd108 Mon Sep 17 00:00:00 2001 From: fyears <1142836+fyears@users.noreply.github.com> Date: Wed, 8 May 2024 22:37:29 +0800 Subject: [PATCH] fix onedrive issue in enc --- src/fsAll.ts | 1 + src/fsDropbox.ts | 4 ++++ src/fsEncrypt.ts | 10 +++++++++- src/fsLocal.ts | 4 ++++ src/fsMock.ts | 4 ++++ src/fsOnedrive.ts | 4 ++++ src/fsS3.ts | 4 ++++ src/fsWebdav.ts | 4 ++++ src/fsWebdis.ts | 4 ++++ 9 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/fsAll.ts b/src/fsAll.ts index c2260e4..e995bce 100644 --- a/src/fsAll.ts +++ b/src/fsAll.ts @@ -16,4 +16,5 @@ export abstract class FakeFs { abstract checkConnect(callbackFunc?: any): Promise; abstract getUserDisplayName(): Promise; abstract revokeAuth(): Promise; + abstract allowEmptyFile(): boolean; } diff --git a/src/fsDropbox.ts b/src/fsDropbox.ts index b69da2f..de6b590 100644 --- a/src/fsDropbox.ts +++ b/src/fsDropbox.ts @@ -736,4 +736,8 @@ export class FakeFsDropbox extends FakeFs { return false; } } + + allowEmptyFile(): boolean { + return true; + } } diff --git a/src/fsEncrypt.ts b/src/fsEncrypt.ts index 90065ab..648b443 100644 --- a/src/fsEncrypt.ts +++ b/src/fsEncrypt.ts @@ -273,9 +273,13 @@ export class FakeFsEncrypt extends FakeFs { return copyEntityAndCopyKeyEncSizeEnc(innerEntity); } else { const now = Date.now(); + let content = new ArrayBuffer(0); + if (!this.innerFs.allowEmptyFile()) { + content = new ArrayBuffer(1); + } const innerEntity = await this.innerFs.writeFile( keyEnc, - new ArrayBuffer(0), + content, mtime ?? now, ctime ?? now ); @@ -554,4 +558,8 @@ export class FakeFsEncrypt extends FakeFs { async revokeAuth(): Promise { return await this.innerFs.revokeAuth(); } + + allowEmptyFile(): boolean { + return true; + } } diff --git a/src/fsLocal.ts b/src/fsLocal.ts index 330d22c..fe101aa 100644 --- a/src/fsLocal.ts +++ b/src/fsLocal.ts @@ -170,4 +170,8 @@ export class FakeFsLocal extends FakeFs { async revokeAuth(): Promise { throw new Error("Method not implemented."); } + + allowEmptyFile(): boolean { + return true; + } } diff --git a/src/fsMock.ts b/src/fsMock.ts index 8097122..4f9d71c 100644 --- a/src/fsMock.ts +++ b/src/fsMock.ts @@ -49,4 +49,8 @@ export class FakeFsMock extends FakeFs { async revokeAuth(): Promise { throw new Error("Method not implemented."); } + + allowEmptyFile(): boolean { + throw new Error("Method not implemented."); + } } diff --git a/src/fsOnedrive.ts b/src/fsOnedrive.ts index 4187b6e..885cdf3 100644 --- a/src/fsOnedrive.ts +++ b/src/fsOnedrive.ts @@ -928,4 +928,8 @@ export class FakeFsOnedrive extends FakeFs { async getRevokeAddr() { return "https://account.live.com/consent/Manage"; } + + allowEmptyFile(): boolean { + return false; + } } diff --git a/src/fsS3.ts b/src/fsS3.ts index 7c30777..d5bf065 100644 --- a/src/fsS3.ts +++ b/src/fsS3.ts @@ -817,4 +817,8 @@ export class FakeFsS3 extends FakeFs { async revokeAuth() { throw new Error("Method not implemented."); } + + allowEmptyFile(): boolean { + return true; + } } diff --git a/src/fsWebdav.ts b/src/fsWebdav.ts index 8cda4da..298ce02 100644 --- a/src/fsWebdav.ts +++ b/src/fsWebdav.ts @@ -493,4 +493,8 @@ export class FakeFsWebdav extends FakeFs { async revokeAuth() { throw new Error("Method not implemented."); } + + allowEmptyFile(): boolean { + return true; + } } diff --git a/src/fsWebdis.ts b/src/fsWebdis.ts index eb1aa66..6ed216e 100644 --- a/src/fsWebdis.ts +++ b/src/fsWebdis.ts @@ -239,4 +239,8 @@ export class FakeFsWebdis extends FakeFs { async revokeAuth(): Promise { throw new Error("Method not implemented."); } + + allowEmptyFile(): boolean { + return true; + } }