1
0
mirror of https://github.com/bitwarden/jslib synced 2025-12-06 00:03:29 +00:00

Rename FolderView to FolderDecrypted

This commit is contained in:
Hinton
2022-04-21 09:59:35 +02:00
parent 8112d3c530
commit a0f6150c09
21 changed files with 69 additions and 69 deletions

View File

@@ -25,7 +25,7 @@ import { Cipher } from "jslib-common/models/domain/cipher";
import { CardView } from "jslib-common/models/view/cardView"; import { CardView } from "jslib-common/models/view/cardView";
import { CipherView } from "jslib-common/models/view/cipherView"; import { CipherView } from "jslib-common/models/view/cipherView";
import { CollectionView } from "jslib-common/models/view/collectionView"; import { CollectionView } from "jslib-common/models/view/collectionView";
import { FolderView } from "jslib-common/models/view/folderView"; import { FolderDecrypted } from "jslib-common/models/view/folderDecrypted";
import { IdentityView } from "jslib-common/models/view/identityView"; import { IdentityView } from "jslib-common/models/view/identityView";
import { LoginUriView } from "jslib-common/models/view/loginUriView"; import { LoginUriView } from "jslib-common/models/view/loginUriView";
import { LoginView } from "jslib-common/models/view/loginView"; import { LoginView } from "jslib-common/models/view/loginView";
@@ -51,7 +51,7 @@ export class AddEditComponent implements OnInit {
editMode = false; editMode = false;
cipher: CipherView; cipher: CipherView;
folders: FolderView[]; folders: FolderDecrypted[];
collections: CollectionView[] = []; collections: CollectionView[] = [];
title: string; title: string;
formPromise: Promise<any>; formPromise: Promise<any>;

View File

@@ -5,16 +5,16 @@ import { FolderService } from "jslib-common/abstractions/folder.service";
import { I18nService } from "jslib-common/abstractions/i18n.service"; import { I18nService } from "jslib-common/abstractions/i18n.service";
import { LogService } from "jslib-common/abstractions/log.service"; import { LogService } from "jslib-common/abstractions/log.service";
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
import { FolderView } from "jslib-common/models/view/folderView"; import { FolderDecrypted } from "jslib-common/models/view/folderDecrypted";
@Directive() @Directive()
export class FolderAddEditComponent implements OnInit { export class FolderAddEditComponent implements OnInit {
@Input() folderId: string; @Input() folderId: string;
@Output() onSavedFolder = new EventEmitter<FolderView>(); @Output() onSavedFolder = new EventEmitter<FolderDecrypted>();
@Output() onDeletedFolder = new EventEmitter<FolderView>(); @Output() onDeletedFolder = new EventEmitter<FolderDecrypted>();
editMode = false; editMode = false;
folder: FolderView = new FolderView(); folder: FolderDecrypted = new FolderDecrypted();
title: string; title: string;
formPromise: Promise<any>; formPromise: Promise<any>;
deletePromise: Promise<any>; deletePromise: Promise<any>;
@@ -90,7 +90,7 @@ export class FolderAddEditComponent implements OnInit {
this.editMode = true; this.editMode = true;
this.title = this.i18nService.t("editFolder"); this.title = this.i18nService.t("editFolder");
const folder = await this.folderService.get(this.folderId); const folder = await this.folderService.get(this.folderId);
this.folder = await FolderView.fromFolder(this.cryptoService, folder); this.folder = await FolderDecrypted.fromFolder(this.cryptoService, folder);
} else { } else {
this.title = this.i18nService.t("addFolder"); this.title = this.i18nService.t("addFolder");
} }

View File

@@ -6,7 +6,7 @@ import { StateService } from "jslib-common/abstractions/state.service";
import { CipherType } from "jslib-common/enums/cipherType"; import { CipherType } from "jslib-common/enums/cipherType";
import { TreeNode } from "jslib-common/models/domain/treeNode"; import { TreeNode } from "jslib-common/models/domain/treeNode";
import { CollectionView } from "jslib-common/models/view/collectionView"; import { CollectionView } from "jslib-common/models/view/collectionView";
import { FolderView } from "jslib-common/models/view/folderView"; import { FolderDecrypted } from "jslib-common/models/view/folderDecrypted";
@Directive() @Directive()
export class GroupingsComponent { export class GroupingsComponent {
@@ -19,13 +19,13 @@ export class GroupingsComponent {
@Output() onFavoritesClicked = new EventEmitter(); @Output() onFavoritesClicked = new EventEmitter();
@Output() onTrashClicked = new EventEmitter(); @Output() onTrashClicked = new EventEmitter();
@Output() onCipherTypeClicked = new EventEmitter<CipherType>(); @Output() onCipherTypeClicked = new EventEmitter<CipherType>();
@Output() onFolderClicked = new EventEmitter<FolderView>(); @Output() onFolderClicked = new EventEmitter<FolderDecrypted>();
@Output() onAddFolder = new EventEmitter(); @Output() onAddFolder = new EventEmitter();
@Output() onEditFolder = new EventEmitter<FolderView>(); @Output() onEditFolder = new EventEmitter<FolderDecrypted>();
@Output() onCollectionClicked = new EventEmitter<CollectionView>(); @Output() onCollectionClicked = new EventEmitter<CollectionView>();
folders: FolderView[]; folders: FolderDecrypted[];
nestedFolders: TreeNode<FolderView>[]; nestedFolders: TreeNode<FolderDecrypted>[];
collections: CollectionView[]; collections: CollectionView[];
nestedCollections: TreeNode<CollectionView>[]; nestedCollections: TreeNode<CollectionView>[];
loaded = false; loaded = false;
@@ -107,7 +107,7 @@ export class GroupingsComponent {
this.onCipherTypeClicked.emit(type); this.onCipherTypeClicked.emit(type);
} }
selectFolder(folder: FolderView) { selectFolder(folder: FolderDecrypted) {
this.clearSelections(); this.clearSelections();
this.selectedFolder = true; this.selectedFolder = true;
this.selectedFolderId = folder.id; this.selectedFolderId = folder.id;
@@ -118,7 +118,7 @@ export class GroupingsComponent {
this.onAddFolder.emit(); this.onAddFolder.emit();
} }
editFolder(folder: FolderView) { editFolder(folder: FolderDecrypted) {
this.onEditFolder.emit(folder); this.onEditFolder.emit(folder);
} }
@@ -138,7 +138,7 @@ export class GroupingsComponent {
this.selectedCollectionId = null; this.selectedCollectionId = null;
} }
async collapse(grouping: FolderView | CollectionView, idPrefix = "") { async collapse(grouping: FolderDecrypted | CollectionView, idPrefix = "") {
if (grouping.id == null) { if (grouping.id == null) {
return; return;
} }
@@ -151,7 +151,7 @@ export class GroupingsComponent {
await this.stateService.setCollapsedGroupings(Array.from(this.collapsedGroupings)); await this.stateService.setCollapsedGroupings(Array.from(this.collapsedGroupings));
} }
isCollapsed(grouping: FolderView | CollectionView, idPrefix = "") { isCollapsed(grouping: FolderDecrypted | CollectionView, idPrefix = "") {
return this.collapsedGroupings.has(idPrefix + grouping.id); return this.collapsedGroupings.has(idPrefix + grouping.id);
} }
} }

View File

@@ -3,7 +3,7 @@ import Substitute from "@fluffy-spoon/substitute";
import { CryptoService } from "jslib-common/abstractions/crypto.service"; import { CryptoService } from "jslib-common/abstractions/crypto.service";
import { FolderData } from "jslib-common/models/data/folderData"; import { FolderData } from "jslib-common/models/data/folderData";
import { Folder } from "jslib-common/models/domain/folder"; import { Folder } from "jslib-common/models/domain/folder";
import { FolderView } from "jslib-common/models/view/folderView"; import { FolderDecrypted } from "jslib-common/models/view/folderDecrypted";
import { mockEnc } from "../utils"; import { mockEnc } from "../utils";
@@ -31,7 +31,7 @@ describe("Folder", () => {
}; };
const cryptoService = Substitute.for<CryptoService>(); const cryptoService = Substitute.for<CryptoService>();
const view = await FolderView.fromFolder(cryptoService, folder); const view = await FolderDecrypted.fromFolder(cryptoService, folder);
expect(view).toEqual({ expect(view).toEqual({
id: "id", id: "id",

View File

@@ -1,15 +1,15 @@
import { FolderData } from "../models/data/folderData"; import { FolderData } from "../models/data/folderData";
import { Folder } from "../models/domain/folder"; import { Folder } from "../models/domain/folder";
import { TreeNode } from "../models/domain/treeNode"; import { TreeNode } from "../models/domain/treeNode";
import { FolderView } from "../models/view/folderView"; import { FolderDecrypted } from "../models/view/folderDecrypted";
export abstract class FolderService { export abstract class FolderService {
clearCache: (userId?: string) => Promise<void>; clearCache: (userId?: string) => Promise<void>;
get: (id: string) => Promise<Folder>; get: (id: string) => Promise<Folder>;
getAll: () => Promise<Folder[]>; getAll: () => Promise<Folder[]>;
getAllDecrypted: () => Promise<FolderView[]>; getAllDecrypted: () => Promise<FolderDecrypted[]>;
getAllNested: () => Promise<TreeNode<FolderView>[]>; getAllNested: () => Promise<TreeNode<FolderDecrypted>[]>;
getNested: (id: string) => Promise<TreeNode<FolderView>>; getNested: (id: string) => Promise<TreeNode<FolderDecrypted>>;
saveWithServer: (folder: Folder) => Promise<any>; saveWithServer: (folder: Folder) => Promise<any>;
upsert: (folder: FolderData) => Promise<any>; upsert: (folder: FolderData) => Promise<any>;
replace: (folders: { [id: string]: FolderData }) => Promise<any>; replace: (folders: { [id: string]: FolderData }) => Promise<any>;

View File

@@ -21,7 +21,7 @@ import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey";
import { WindowState } from "../models/domain/windowState"; import { WindowState } from "../models/domain/windowState";
import { CipherView } from "../models/view/cipherView"; import { CipherView } from "../models/view/cipherView";
import { CollectionView } from "../models/view/collectionView"; import { CollectionView } from "../models/view/collectionView";
import { FolderView } from "../models/view/folderView"; import { FolderDecrypted } from "../models/view/folderDecrypted";
import { SendView } from "../models/view/sendView"; import { SendView } from "../models/view/sendView";
export abstract class StateService<T extends Account = Account> { export abstract class StateService<T extends Account = Account> {
@@ -84,8 +84,8 @@ export abstract class StateService<T extends Account = Account> {
value: SymmetricCryptoKey, value: SymmetricCryptoKey,
options?: StorageOptions options?: StorageOptions
) => Promise<void>; ) => Promise<void>;
getDecryptedFolders: (options?: StorageOptions) => Promise<FolderView[]>; getDecryptedFolders: (options?: StorageOptions) => Promise<FolderDecrypted[]>;
setDecryptedFolders: (value: FolderView[], options?: StorageOptions) => Promise<void>; setDecryptedFolders: (value: FolderDecrypted[], options?: StorageOptions) => Promise<void>;
getDecryptedOrganizationKeys: ( getDecryptedOrganizationKeys: (
options?: StorageOptions options?: StorageOptions
) => Promise<Map<string, SymmetricCryptoKey>>; ) => Promise<Map<string, SymmetricCryptoKey>>;

View File

@@ -9,7 +9,7 @@ import { ImportResult } from "../models/domain/importResult";
import { CipherView } from "../models/view/cipherView"; import { CipherView } from "../models/view/cipherView";
import { CollectionView } from "../models/view/collectionView"; import { CollectionView } from "../models/view/collectionView";
import { FieldView } from "../models/view/fieldView"; import { FieldView } from "../models/view/fieldView";
import { FolderView } from "../models/view/folderView"; import { FolderDecrypted } from "../models/view/folderDecrypted";
import { LoginUriView } from "../models/view/loginUriView"; import { LoginUriView } from "../models/view/loginUriView";
import { LoginView } from "../models/view/loginView"; import { LoginView } from "../models/view/loginView";
import { SecureNoteView } from "../models/view/secureNoteView"; import { SecureNoteView } from "../models/view/secureNoteView";
@@ -425,7 +425,7 @@ export abstract class BaseImporter {
} }
if (addFolder) { if (addFolder) {
const f = new FolderView(); const f = new FolderDecrypted();
f.name = folderName; f.name = folderName;
result.folders.push(f); result.folders.push(f);
} }

View File

@@ -1,4 +1,4 @@
import { FolderView } from "jslib-common/models/view/folderView"; import { FolderDecrypted } from "jslib-common/models/view/folderDecrypted";
import { CryptoService } from "../abstractions/crypto.service"; import { CryptoService } from "../abstractions/crypto.service";
import { I18nService } from "../abstractions/i18n.service"; import { I18nService } from "../abstractions/i18n.service";
@@ -76,7 +76,7 @@ export class BitwardenJsonImporter extends BaseImporter implements Importer {
const folder = FolderWithIdExport.toDomain(f); const folder = FolderWithIdExport.toDomain(f);
if (folder != null) { if (folder != null) {
folder.id = null; folder.id = null;
const view = await FolderView.fromFolder(this.cryptoService, folder); const view = await FolderDecrypted.fromFolder(this.cryptoService, folder);
groupingsMap.set(f.id, this.result.folders.length); groupingsMap.set(f.id, this.result.folders.length);
this.result.folders.push(view); this.result.folders.push(view);
} }

View File

@@ -3,7 +3,7 @@ import { FieldType } from "../enums/fieldType";
import { ImportResult } from "../models/domain/importResult"; import { ImportResult } from "../models/domain/importResult";
import { CardView } from "../models/view/cardView"; import { CardView } from "../models/view/cardView";
import { CipherView } from "../models/view/cipherView"; import { CipherView } from "../models/view/cipherView";
import { FolderView } from "../models/view/folderView"; import { FolderDecrypted } from "../models/view/folderDecrypted";
import { BaseImporter } from "./baseImporter"; import { BaseImporter } from "./baseImporter";
import { Importer } from "./importer"; import { Importer } from "./importer";
@@ -23,7 +23,7 @@ export class EnpassJsonImporter extends BaseImporter implements Importer {
this.flattenFolderTree(null, folderTree, foldersMap); this.flattenFolderTree(null, folderTree, foldersMap);
foldersMap.forEach((val, key) => { foldersMap.forEach((val, key) => {
foldersIndexMap.set(key, result.folders.length); foldersIndexMap.set(key, result.folders.length);
const f = new FolderView(); const f = new FolderDecrypted();
f.name = val; f.name = val;
result.folders.push(f); result.folders.push(f);
}); });

View File

@@ -1,6 +1,6 @@
import { FieldType } from "../enums/fieldType"; import { FieldType } from "../enums/fieldType";
import { ImportResult } from "../models/domain/importResult"; import { ImportResult } from "../models/domain/importResult";
import { FolderView } from "../models/view/folderView"; import { FolderDecrypted } from "../models/view/folderDecrypted";
import { BaseImporter } from "./baseImporter"; import { BaseImporter } from "./baseImporter";
import { Importer } from "./importer"; import { Importer } from "./importer";
@@ -42,7 +42,7 @@ export class KeePass2XmlImporter extends BaseImporter implements Importer {
} }
const nameEl = this.querySelectorDirectChild(node, "Name"); const nameEl = this.querySelectorDirectChild(node, "Name");
groupName += nameEl == null ? "-" : nameEl.textContent; groupName += nameEl == null ? "-" : nameEl.textContent;
const folder = new FolderView(); const folder = new FolderDecrypted();
folder.name = groupName; folder.name = groupName;
this.result.folders.push(folder); this.result.folders.push(folder);
} }

View File

@@ -3,7 +3,7 @@ import { SecureNoteType } from "../enums/secureNoteType";
import { ImportResult } from "../models/domain/importResult"; import { ImportResult } from "../models/domain/importResult";
import { CardView } from "../models/view/cardView"; import { CardView } from "../models/view/cardView";
import { CipherView } from "../models/view/cipherView"; import { CipherView } from "../models/view/cipherView";
import { FolderView } from "../models/view/folderView"; import { FolderDecrypted } from "../models/view/folderDecrypted";
import { IdentityView } from "../models/view/identityView"; import { IdentityView } from "../models/view/identityView";
import { LoginView } from "../models/view/loginView"; import { LoginView } from "../models/view/loginView";
import { SecureNoteView } from "../models/view/secureNoteView"; import { SecureNoteView } from "../models/view/secureNoteView";
@@ -70,7 +70,7 @@ export class LastPassCsvImporter extends BaseImporter implements Importer {
result.ciphers.push(cipher); result.ciphers.push(cipher);
if (addFolder) { if (addFolder) {
const f = new FolderView(); const f = new FolderDecrypted();
f.name = grouping; f.name = grouping;
result.folders.push(f); result.folders.push(f);
} }

View File

@@ -1,7 +1,7 @@
import { CipherType } from "../enums/cipherType"; import { CipherType } from "../enums/cipherType";
import { ImportResult } from "../models/domain/importResult"; import { ImportResult } from "../models/domain/importResult";
import { CardView } from "../models/view/cardView"; import { CardView } from "../models/view/cardView";
import { FolderView } from "../models/view/folderView"; import { FolderDecrypted } from "../models/view/folderDecrypted";
import { BaseImporter } from "./baseImporter"; import { BaseImporter } from "./baseImporter";
import { Importer } from "./importer"; import { Importer } from "./importer";
@@ -22,7 +22,7 @@ export class PasswordBossJsonImporter extends BaseImporter implements Importer {
const foldersIndexMap = new Map<string, number>(); const foldersIndexMap = new Map<string, number>();
foldersMap.forEach((val, key) => { foldersMap.forEach((val, key) => {
foldersIndexMap.set(key, result.folders.length); foldersIndexMap.set(key, result.folders.length);
const f = new FolderView(); const f = new FolderDecrypted();
f.name = val; f.name = val;
result.folders.push(f); result.folders.push(f);
}); });

View File

@@ -4,7 +4,7 @@ import { SecureNoteType } from "../enums/secureNoteType";
import { ImportResult } from "../models/domain/importResult"; import { ImportResult } from "../models/domain/importResult";
import { CipherView } from "../models/view/cipherView"; import { CipherView } from "../models/view/cipherView";
import { FieldView } from "../models/view/fieldView"; import { FieldView } from "../models/view/fieldView";
import { FolderView } from "../models/view/folderView"; import { FolderDecrypted } from "../models/view/folderDecrypted";
import { SecureNoteView } from "../models/view/secureNoteView"; import { SecureNoteView } from "../models/view/secureNoteView";
import { BaseImporter } from "./baseImporter"; import { BaseImporter } from "./baseImporter";
@@ -33,7 +33,7 @@ export class SafeInCloudXmlImporter extends BaseImporter implements Importer {
const id = labelEl.getAttribute("id"); const id = labelEl.getAttribute("id");
if (!this.isNullOrWhitespace(name) && !this.isNullOrWhitespace(id)) { if (!this.isNullOrWhitespace(name) && !this.isNullOrWhitespace(id)) {
foldersMap.set(id, result.folders.length); foldersMap.set(id, result.folders.length);
const folder = new FolderView(); const folder = new FolderDecrypted();
folder.name = name; folder.name = name;
result.folders.push(folder); result.folders.push(folder);
} }

View File

@@ -11,7 +11,7 @@ import { ProviderData } from "../data/providerData";
import { SendData } from "../data/sendData"; import { SendData } from "../data/sendData";
import { CipherView } from "../view/cipherView"; import { CipherView } from "../view/cipherView";
import { CollectionView } from "../view/collectionView"; import { CollectionView } from "../view/collectionView";
import { FolderView } from "../view/folderView"; import { FolderDecrypted } from "../view/folderDecrypted";
import { SendView } from "../view/sendView"; import { SendView } from "../view/sendView";
import { EncString } from "./encString"; import { EncString } from "./encString";
@@ -35,9 +35,9 @@ export class AccountData {
CipherData, CipherData,
CipherView CipherView
>(); >();
folders?: DataEncryptionPair<FolderData, FolderView> = new DataEncryptionPair< folders?: DataEncryptionPair<FolderData, FolderDecrypted> = new DataEncryptionPair<
FolderData, FolderData,
FolderView FolderDecrypted
>(); >();
localData?: any; localData?: any;
sends?: DataEncryptionPair<SendData, SendView> = new DataEncryptionPair<SendData, SendView>(); sends?: DataEncryptionPair<SendData, SendView> = new DataEncryptionPair<SendData, SendView>();

View File

@@ -1,13 +1,13 @@
import { CipherView } from "../view/cipherView"; import { CipherView } from "../view/cipherView";
import { CollectionView } from "../view/collectionView"; import { CollectionView } from "../view/collectionView";
import { FolderView } from "../view/folderView"; import { FolderDecrypted } from "../view/folderDecrypted";
export class ImportResult { export class ImportResult {
success = false; success = false;
missingPassword = false; missingPassword = false;
errorMessage: string; errorMessage: string;
ciphers: CipherView[] = []; ciphers: CipherView[] = [];
folders: FolderView[] = []; folders: FolderDecrypted[] = [];
folderRelationships: [number, number][] = []; folderRelationships: [number, number][] = [];
collections: CollectionView[] = []; collections: CollectionView[] = [];
collectionRelationships: [number, number][] = []; collectionRelationships: [number, number][] = [];

View File

@@ -1,6 +1,6 @@
import { EncString } from "../domain/encString"; import { EncString } from "../domain/encString";
import { Folder as FolderDomain } from "../domain/folder"; import { Folder as FolderDomain } from "../domain/folder";
import { FolderView } from "../view/folderView"; import { FolderDecrypted } from "../view/folderDecrypted";
export class FolderExport { export class FolderExport {
static template(): FolderExport { static template(): FolderExport {
@@ -9,7 +9,7 @@ export class FolderExport {
return req; return req;
} }
static toView(req: FolderExport, view = new FolderView()) { static toView(req: FolderExport, view = new FolderDecrypted()) {
view.name = req.name; view.name = req.name;
return view; return view;
} }
@@ -22,8 +22,8 @@ export class FolderExport {
name: string; name: string;
// Use build method instead of ctor so that we can control order of JSON stringify for pretty print // Use build method instead of ctor so that we can control order of JSON stringify for pretty print
build(o: FolderView | FolderDomain) { build(o: FolderDecrypted | FolderDomain) {
if (o instanceof FolderView) { if (o instanceof FolderDecrypted) {
this.name = o.name; this.name = o.name;
} else { } else {
this.name = o.name?.encryptedString; this.name = o.name?.encryptedString;

View File

@@ -1,5 +1,5 @@
import { Folder as FolderDomain } from "../domain/folder"; import { Folder as FolderDomain } from "../domain/folder";
import { FolderView } from "../view/folderView"; import { FolderDecrypted } from "../view/folderDecrypted";
import { FolderExport } from "./folderExport"; import { FolderExport } from "./folderExport";
@@ -7,7 +7,7 @@ export class FolderWithIdExport extends FolderExport {
id: string; id: string;
// Use build method instead of ctor so that we can control order of JSON stringify for pretty print // Use build method instead of ctor so that we can control order of JSON stringify for pretty print
build(o: FolderView | FolderDomain) { build(o: FolderDecrypted | FolderDomain) {
this.id = o.id; this.id = o.id;
super.build(o); super.build(o);
} }

View File

@@ -3,7 +3,7 @@ import { CryptoService } from "jslib-common/abstractions/crypto.service";
import { Folder } from "../domain/folder"; import { Folder } from "../domain/folder";
import { ITreeNodeObject } from "../domain/treeNode"; import { ITreeNodeObject } from "../domain/treeNode";
export class FolderView implements ITreeNodeObject { export class FolderDecrypted implements ITreeNodeObject {
id: string = null; id: string = null;
name: string = null; name: string = null;
revisionDate: Date = null; revisionDate: Date = null;
@@ -16,8 +16,8 @@ export class FolderView implements ITreeNodeObject {
}; };
} }
static async fromFolder(cryptoService: CryptoService, folder: Folder): Promise<FolderView> { static async fromFolder(cryptoService: CryptoService, folder: Folder): Promise<FolderDecrypted> {
const view = new FolderView(); const view = new FolderDecrypted();
view.id = folder.id; view.id = folder.id;
view.name = await folder.name.decryptWithCryptoService(cryptoService); view.name = await folder.name.decryptWithCryptoService(cryptoService);
view.revisionDate = folder.revisionDate; view.revisionDate = folder.revisionDate;

View File

@@ -25,7 +25,7 @@ import { CollectionDetailsResponse } from "../models/response/collectionResponse
import { CipherView } from "../models/view/cipherView"; import { CipherView } from "../models/view/cipherView";
import { CollectionView } from "../models/view/collectionView"; import { CollectionView } from "../models/view/collectionView";
import { EventView } from "../models/view/eventView"; import { EventView } from "../models/view/eventView";
import { FolderView } from "../models/view/folderView"; import { FolderDecrypted } from "../models/view/folderDecrypted";
export class ExportService implements ExportServiceAbstraction { export class ExportService implements ExportServiceAbstraction {
constructor( constructor(
@@ -110,7 +110,7 @@ export class ExportService implements ExportServiceAbstraction {
} }
private async getDecryptedExport(format: "json" | "csv"): Promise<string> { private async getDecryptedExport(format: "json" | "csv"): Promise<string> {
let decFolders: FolderView[] = []; let decFolders: FolderDecrypted[] = [];
let decCiphers: CipherView[] = []; let decCiphers: CipherView[] = [];
const promises = []; const promises = [];
@@ -129,7 +129,7 @@ export class ExportService implements ExportServiceAbstraction {
await Promise.all(promises); await Promise.all(promises);
if (format === "csv") { if (format === "csv") {
const foldersMap = new Map<string, FolderView>(); const foldersMap = new Map<string, FolderDecrypted>();
decFolders.forEach((f) => { decFolders.forEach((f) => {
if (f.id != null) { if (f.id != null) {
foldersMap.set(f.id, f); foldersMap.set(f.id, f);

View File

@@ -12,7 +12,7 @@ import { Folder } from "../models/domain/folder";
import { TreeNode } from "../models/domain/treeNode"; import { TreeNode } from "../models/domain/treeNode";
import { FolderRequest } from "../models/request/folderRequest"; import { FolderRequest } from "../models/request/folderRequest";
import { FolderResponse } from "../models/response/folderResponse"; import { FolderResponse } from "../models/response/folderResponse";
import { FolderView } from "../models/view/folderView"; import { FolderDecrypted } from "../models/view/folderDecrypted";
const NestingDelimiter = "/"; const NestingDelimiter = "/";
@@ -41,7 +41,7 @@ export class FolderService implements FolderServiceAbstraction {
return Object.values(folders).map((f) => f.toFolder()); return Object.values(folders).map((f) => f.toFolder());
} }
async getAllDecrypted(): Promise<FolderView[]> { async getAllDecrypted(): Promise<FolderDecrypted[]> {
const decryptedFolders = await this.stateService.getDecryptedFolders(); const decryptedFolders = await this.stateService.getDecryptedFolders();
if (decryptedFolders != null) { if (decryptedFolders != null) {
return decryptedFolders; return decryptedFolders;
@@ -52,19 +52,19 @@ export class FolderService implements FolderServiceAbstraction {
throw new Error("No key."); throw new Error("No key.");
} }
const decFolders: FolderView[] = []; const decFolders: FolderDecrypted[] = [];
const promises: Promise<any>[] = []; const promises: Promise<any>[] = [];
const folders = await this.getAll(); const folders = await this.getAll();
folders.forEach((folder) => { folders.forEach((folder) => {
promises.push( promises.push(
FolderView.fromFolder(this.cryptoService, folder).then((f) => decFolders.push(f)) FolderDecrypted.fromFolder(this.cryptoService, folder).then((f) => decFolders.push(f))
); );
}); });
await Promise.all(promises); await Promise.all(promises);
decFolders.sort(Utils.getSortFunction(this.i18nService, "name")); decFolders.sort(Utils.getSortFunction(this.i18nService, "name"));
const noneFolder = new FolderView(); const noneFolder = new FolderDecrypted();
noneFolder.name = this.i18nService.t("noneFolder"); noneFolder.name = this.i18nService.t("noneFolder");
decFolders.push(noneFolder); decFolders.push(noneFolder);
@@ -72,11 +72,11 @@ export class FolderService implements FolderServiceAbstraction {
return decFolders; return decFolders;
} }
async getAllNested(): Promise<TreeNode<FolderView>[]> { async getAllNested(): Promise<TreeNode<FolderDecrypted>[]> {
const folders = await this.getAllDecrypted(); const folders = await this.getAllDecrypted();
const nodes: TreeNode<FolderView>[] = []; const nodes: TreeNode<FolderDecrypted>[] = [];
folders.forEach((f) => { folders.forEach((f) => {
const folderCopy = new FolderView(); const folderCopy = new FolderDecrypted();
folderCopy.id = f.id; folderCopy.id = f.id;
folderCopy.revisionDate = f.revisionDate; folderCopy.revisionDate = f.revisionDate;
const parts = f.name != null ? f.name.replace(/^\/+|\/+$/g, "").split(NestingDelimiter) : []; const parts = f.name != null ? f.name.replace(/^\/+|\/+$/g, "").split(NestingDelimiter) : [];
@@ -85,9 +85,9 @@ export class FolderService implements FolderServiceAbstraction {
return nodes; return nodes;
} }
async getNested(id: string): Promise<TreeNode<FolderView>> { async getNested(id: string): Promise<TreeNode<FolderDecrypted>> {
const folders = await this.getAllNested(); const folders = await this.getAllNested();
return ServiceUtils.getTreeNodeObject(folders, id) as TreeNode<FolderView>; return ServiceUtils.getTreeNodeObject(folders, id) as TreeNode<FolderDecrypted>;
} }
async saveWithServer(folder: Folder): Promise<any> { async saveWithServer(folder: Folder): Promise<any> {

View File

@@ -30,7 +30,7 @@ import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey";
import { WindowState } from "../models/domain/windowState"; import { WindowState } from "../models/domain/windowState";
import { CipherView } from "../models/view/cipherView"; import { CipherView } from "../models/view/cipherView";
import { CollectionView } from "../models/view/collectionView"; import { CollectionView } from "../models/view/collectionView";
import { FolderView } from "../models/view/folderView"; import { FolderDecrypted } from "../models/view/folderDecrypted";
import { SendView } from "../models/view/sendView"; import { SendView } from "../models/view/sendView";
const keys = { const keys = {
@@ -562,12 +562,12 @@ export class StateService<
await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions)); await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));
} }
async getDecryptedFolders(options?: StorageOptions): Promise<FolderView[]> { async getDecryptedFolders(options?: StorageOptions): Promise<FolderDecrypted[]> {
return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions))) return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))
?.data?.folders?.decrypted; ?.data?.folders?.decrypted;
} }
async setDecryptedFolders(value: FolderView[], options?: StorageOptions): Promise<void> { async setDecryptedFolders(value: FolderDecrypted[], options?: StorageOptions): Promise<void> {
const account = await this.getAccount( const account = await this.getAccount(
this.reconcileOptions(options, this.defaultInMemoryOptions) this.reconcileOptions(options, this.defaultInMemoryOptions)
); );