From 939ec1b448e4bd2aad89488f1d2cc09dadaf5fe2 Mon Sep 17 00:00:00 2001 From: jaasen-livefront Date: Fri, 7 Nov 2025 12:26:32 -0800 Subject: [PATCH 1/7] name name and id optional in folder model --- libs/common/src/models/export/folder.export.ts | 2 +- libs/common/src/vault/models/domain/folder.ts | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libs/common/src/models/export/folder.export.ts b/libs/common/src/models/export/folder.export.ts index 127a5b8baba..1bffcee8c2d 100644 --- a/libs/common/src/models/export/folder.export.ts +++ b/libs/common/src/models/export/folder.export.ts @@ -25,6 +25,6 @@ export class FolderExport { // Use build method instead of ctor so that we can control order of JSON stringify for pretty print build(o: FolderView | FolderDomain) { - this.name = safeGetString(o.name) ?? ""; + this.name = safeGetString(o.name ?? "") ?? ""; } } diff --git a/libs/common/src/vault/models/domain/folder.ts b/libs/common/src/vault/models/domain/folder.ts index f96537a4a96..c06d9ad7872 100644 --- a/libs/common/src/vault/models/domain/folder.ts +++ b/libs/common/src/vault/models/domain/folder.ts @@ -8,8 +8,8 @@ import { FolderData } from "../data/folder.data"; import { FolderView } from "../view/folder.view"; export class Folder extends Domain { - id: string = ""; - name: EncString = new EncString(""); + id?: string; + name?: EncString; revisionDate: Date; constructor(obj?: FolderData) { @@ -41,10 +41,10 @@ export class Folder extends Domain { encryptService: EncryptService, ): Promise { const folderView = new FolderView(); - folderView.id = this.id; + folderView.id = this.id ?? ""; folderView.revisionDate = this.revisionDate; try { - folderView.name = await encryptService.decryptString(this.name, key); + folderView.name = await encryptService.decryptString(this.name ?? new EncString(""), key); } catch (e) { // Note: This should be replaced by the owning team with appropriate, domain-specific behavior. // eslint-disable-next-line no-console @@ -58,6 +58,6 @@ export class Folder extends Domain { if (obj == null) { return null; } - return new Folder({ name: obj.name, revisionDate: obj.revisionDate, id: obj.id }); + return new Folder({ name: obj.name ?? "", revisionDate: obj.revisionDate, id: obj.id ?? "" }); } } From 093b99e579ef659479d80ad888380abdf1c003cc Mon Sep 17 00:00:00 2001 From: jaasen-livefront Date: Fri, 7 Nov 2025 13:21:48 -0800 Subject: [PATCH 2/7] fix tests --- libs/common/src/vault/models/domain/folder.spec.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libs/common/src/vault/models/domain/folder.spec.ts b/libs/common/src/vault/models/domain/folder.spec.ts index 0ef41a50239..1a15a6d199b 100644 --- a/libs/common/src/vault/models/domain/folder.spec.ts +++ b/libs/common/src/vault/models/domain/folder.spec.ts @@ -60,9 +60,8 @@ describe("Folder", () => { it("initializes empty properties when no FolderData is provided", () => { const folder = new Folder(); - expect(folder.id).toBe(""); - expect(folder.name).toBeInstanceOf(EncString); - expect((folder.name as EncString).encryptedString).toBe(""); + expect(folder.id).toBe(undefined); + expect(folder.name).toBe(undefined); expect(folder.revisionDate).toBeInstanceOf(Date); }); }); From 705e2329f81eaded654de57fbe858cb4a747c1f6 Mon Sep 17 00:00:00 2001 From: jaasen-livefront Date: Fri, 7 Nov 2025 14:30:55 -0800 Subject: [PATCH 3/7] Update folder and folderview --- libs/common/src/vault/models/domain/folder.ts | 6 +++++- libs/common/src/vault/models/view/folder.view.ts | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/libs/common/src/vault/models/domain/folder.ts b/libs/common/src/vault/models/domain/folder.ts index c06d9ad7872..81df65cae3f 100644 --- a/libs/common/src/vault/models/domain/folder.ts +++ b/libs/common/src/vault/models/domain/folder.ts @@ -58,6 +58,10 @@ export class Folder extends Domain { if (obj == null) { return null; } - return new Folder({ name: obj.name ?? "", revisionDate: obj.revisionDate, id: obj.id ?? "" }); + return new Folder({ + name: EncString.fromJSON(obj.name ?? "").encryptedString ?? "", + revisionDate: obj.revisionDate, + id: obj.id ?? "", + }); } } diff --git a/libs/common/src/vault/models/view/folder.view.ts b/libs/common/src/vault/models/view/folder.view.ts index d0126a728ea..aecbd31ab9d 100644 --- a/libs/common/src/vault/models/view/folder.view.ts +++ b/libs/common/src/vault/models/view/folder.view.ts @@ -10,13 +10,14 @@ export class FolderView implements View, ITreeNodeObject { name: string = ""; revisionDate: Date; - constructor(f?: Folder | DecryptedObject) { + constructor(f?: Folder | DecryptedObject) { if (!f) { this.revisionDate = new Date(); return; } - this.id = f.id; + this.id = f.id ?? ""; + this.name = f.name?.decryptedValue ?? ""; this.revisionDate = f.revisionDate; } From c878c77cd4f668a2a00386b5d691755a78bf46d8 Mon Sep 17 00:00:00 2001 From: jaasen-livefront Date: Fri, 7 Nov 2025 14:53:21 -0800 Subject: [PATCH 4/7] fix folder with id export --- libs/common/src/vault/models/request/folder-with-id.request.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/common/src/vault/models/request/folder-with-id.request.ts b/libs/common/src/vault/models/request/folder-with-id.request.ts index 9d8078c12c1..8af890048ba 100644 --- a/libs/common/src/vault/models/request/folder-with-id.request.ts +++ b/libs/common/src/vault/models/request/folder-with-id.request.ts @@ -7,6 +7,6 @@ export class FolderWithIdRequest extends FolderRequest { constructor(folder: Folder) { super(folder); - this.id = folder.id; + this.id = folder.id ?? ""; } } From ac180559998c0b0565e4a4d2f7dbff12bc47ac68 Mon Sep 17 00:00:00 2001 From: jaasen-livefront Date: Fri, 7 Nov 2025 21:38:35 -0800 Subject: [PATCH 5/7] fix tests --- libs/common/src/vault/models/domain/folder.spec.ts | 2 +- libs/common/src/vault/models/domain/folder.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/common/src/vault/models/domain/folder.spec.ts b/libs/common/src/vault/models/domain/folder.spec.ts index 1a15a6d199b..7da168252ea 100644 --- a/libs/common/src/vault/models/domain/folder.spec.ts +++ b/libs/common/src/vault/models/domain/folder.spec.ts @@ -81,7 +81,7 @@ describe("Folder", () => { expect(actual?.id).toBe("id"); expect(actual?.revisionDate).toEqual(revisionDate); expect(actual?.name).toBeInstanceOf(EncString); - expect((actual?.name as EncString).encryptedString).toBe("name"); + expect((actual?.name as EncString).encryptedString).toBe("name_fromJSON"); }); }); diff --git a/libs/common/src/vault/models/domain/folder.ts b/libs/common/src/vault/models/domain/folder.ts index 81df65cae3f..9e368029a88 100644 --- a/libs/common/src/vault/models/domain/folder.ts +++ b/libs/common/src/vault/models/domain/folder.ts @@ -59,7 +59,7 @@ export class Folder extends Domain { return null; } return new Folder({ - name: EncString.fromJSON(obj.name ?? "").encryptedString ?? "", + name: EncString.fromJSON(obj.name ?? ""), revisionDate: obj.revisionDate, id: obj.id ?? "", }); From 6577b5f08124b92f965f431ac43d2e3c7a089efd Mon Sep 17 00:00:00 2001 From: jaasen-livefront Date: Fri, 7 Nov 2025 21:42:34 -0800 Subject: [PATCH 6/7] fix tests --- libs/common/src/vault/models/domain/folder.spec.ts | 2 +- libs/common/src/vault/models/domain/folder.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/common/src/vault/models/domain/folder.spec.ts b/libs/common/src/vault/models/domain/folder.spec.ts index 7da168252ea..1a15a6d199b 100644 --- a/libs/common/src/vault/models/domain/folder.spec.ts +++ b/libs/common/src/vault/models/domain/folder.spec.ts @@ -81,7 +81,7 @@ describe("Folder", () => { expect(actual?.id).toBe("id"); expect(actual?.revisionDate).toEqual(revisionDate); expect(actual?.name).toBeInstanceOf(EncString); - expect((actual?.name as EncString).encryptedString).toBe("name_fromJSON"); + expect((actual?.name as EncString).encryptedString).toBe("name"); }); }); diff --git a/libs/common/src/vault/models/domain/folder.ts b/libs/common/src/vault/models/domain/folder.ts index 9e368029a88..1b75a98b480 100644 --- a/libs/common/src/vault/models/domain/folder.ts +++ b/libs/common/src/vault/models/domain/folder.ts @@ -59,7 +59,7 @@ export class Folder extends Domain { return null; } return new Folder({ - name: EncString.fromJSON(obj.name ?? ""), + name: obj.name ?? "", revisionDate: obj.revisionDate, id: obj.id ?? "", }); From c2b7e7f29f1c9bab5bb3addbf8411158996674dd Mon Sep 17 00:00:00 2001 From: jaasen-livefront Date: Fri, 7 Nov 2025 21:45:16 -0800 Subject: [PATCH 7/7] more defensive typing --- libs/common/src/vault/models/view/folder.view.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/common/src/vault/models/view/folder.view.ts b/libs/common/src/vault/models/view/folder.view.ts index aecbd31ab9d..f397b8b4dbc 100644 --- a/libs/common/src/vault/models/view/folder.view.ts +++ b/libs/common/src/vault/models/view/folder.view.ts @@ -23,8 +23,8 @@ export class FolderView implements View, ITreeNodeObject { static fromJSON(obj: Jsonify) { const folderView = new FolderView(); - folderView.id = obj.id; - folderView.name = obj.name; + folderView.id = obj.id ?? ""; + folderView.name = obj.name ?? ""; folderView.revisionDate = new Date(obj.revisionDate); return folderView; }