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.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); }); }); diff --git a/libs/common/src/vault/models/domain/folder.ts b/libs/common/src/vault/models/domain/folder.ts index f96537a4a96..1b75a98b480 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,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: obj.name ?? "", + 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..f397b8b4dbc 100644 --- a/libs/common/src/vault/models/view/folder.view.ts +++ b/libs/common/src/vault/models/view/folder.view.ts @@ -10,20 +10,21 @@ 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; } 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; }