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 { CipherView } from "jslib-common/models/view/cipherView";
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 { LoginUriView } from "jslib-common/models/view/loginUriView";
import { LoginView } from "jslib-common/models/view/loginView";
@@ -51,7 +51,7 @@ export class AddEditComponent implements OnInit {
editMode = false;
cipher: CipherView;
folders: FolderView[];
folders: FolderDecrypted[];
collections: CollectionView[] = [];
title: string;
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 { LogService } from "jslib-common/abstractions/log.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()
export class FolderAddEditComponent implements OnInit {
@Input() folderId: string;
@Output() onSavedFolder = new EventEmitter<FolderView>();
@Output() onDeletedFolder = new EventEmitter<FolderView>();
@Output() onSavedFolder = new EventEmitter<FolderDecrypted>();
@Output() onDeletedFolder = new EventEmitter<FolderDecrypted>();
editMode = false;
folder: FolderView = new FolderView();
folder: FolderDecrypted = new FolderDecrypted();
title: string;
formPromise: Promise<any>;
deletePromise: Promise<any>;
@@ -90,7 +90,7 @@ export class FolderAddEditComponent implements OnInit {
this.editMode = true;
this.title = this.i18nService.t("editFolder");
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 {
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 { TreeNode } from "jslib-common/models/domain/treeNode";
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()
export class GroupingsComponent {
@@ -19,13 +19,13 @@ export class GroupingsComponent {
@Output() onFavoritesClicked = new EventEmitter();
@Output() onTrashClicked = new EventEmitter();
@Output() onCipherTypeClicked = new EventEmitter<CipherType>();
@Output() onFolderClicked = new EventEmitter<FolderView>();
@Output() onFolderClicked = new EventEmitter<FolderDecrypted>();
@Output() onAddFolder = new EventEmitter();
@Output() onEditFolder = new EventEmitter<FolderView>();
@Output() onEditFolder = new EventEmitter<FolderDecrypted>();
@Output() onCollectionClicked = new EventEmitter<CollectionView>();
folders: FolderView[];
nestedFolders: TreeNode<FolderView>[];
folders: FolderDecrypted[];
nestedFolders: TreeNode<FolderDecrypted>[];
collections: CollectionView[];
nestedCollections: TreeNode<CollectionView>[];
loaded = false;
@@ -107,7 +107,7 @@ export class GroupingsComponent {
this.onCipherTypeClicked.emit(type);
}
selectFolder(folder: FolderView) {
selectFolder(folder: FolderDecrypted) {
this.clearSelections();
this.selectedFolder = true;
this.selectedFolderId = folder.id;
@@ -118,7 +118,7 @@ export class GroupingsComponent {
this.onAddFolder.emit();
}
editFolder(folder: FolderView) {
editFolder(folder: FolderDecrypted) {
this.onEditFolder.emit(folder);
}
@@ -138,7 +138,7 @@ export class GroupingsComponent {
this.selectedCollectionId = null;
}
async collapse(grouping: FolderView | CollectionView, idPrefix = "") {
async collapse(grouping: FolderDecrypted | CollectionView, idPrefix = "") {
if (grouping.id == null) {
return;
}
@@ -151,7 +151,7 @@ export class GroupingsComponent {
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);
}
}

View File

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

View File

@@ -1,15 +1,15 @@
import { FolderData } from "../models/data/folderData";
import { Folder } from "../models/domain/folder";
import { TreeNode } from "../models/domain/treeNode";
import { FolderView } from "../models/view/folderView";
import { FolderDecrypted } from "../models/view/folderDecrypted";
export abstract class FolderService {
clearCache: (userId?: string) => Promise<void>;
get: (id: string) => Promise<Folder>;
getAll: () => Promise<Folder[]>;
getAllDecrypted: () => Promise<FolderView[]>;
getAllNested: () => Promise<TreeNode<FolderView>[]>;
getNested: (id: string) => Promise<TreeNode<FolderView>>;
getAllDecrypted: () => Promise<FolderDecrypted[]>;
getAllNested: () => Promise<TreeNode<FolderDecrypted>[]>;
getNested: (id: string) => Promise<TreeNode<FolderDecrypted>>;
saveWithServer: (folder: Folder) => Promise<any>;
upsert: (folder: 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 { CipherView } from "../models/view/cipherView";
import { CollectionView } from "../models/view/collectionView";
import { FolderView } from "../models/view/folderView";
import { FolderDecrypted } from "../models/view/folderDecrypted";
import { SendView } from "../models/view/sendView";
export abstract class StateService<T extends Account = Account> {
@@ -84,8 +84,8 @@ export abstract class StateService<T extends Account = Account> {
value: SymmetricCryptoKey,
options?: StorageOptions
) => Promise<void>;
getDecryptedFolders: (options?: StorageOptions) => Promise<FolderView[]>;
setDecryptedFolders: (value: FolderView[], options?: StorageOptions) => Promise<void>;
getDecryptedFolders: (options?: StorageOptions) => Promise<FolderDecrypted[]>;
setDecryptedFolders: (value: FolderDecrypted[], options?: StorageOptions) => Promise<void>;
getDecryptedOrganizationKeys: (
options?: StorageOptions
) => Promise<Map<string, SymmetricCryptoKey>>;

View File

@@ -9,7 +9,7 @@ import { ImportResult } from "../models/domain/importResult";
import { CipherView } from "../models/view/cipherView";
import { CollectionView } from "../models/view/collectionView";
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 { LoginView } from "../models/view/loginView";
import { SecureNoteView } from "../models/view/secureNoteView";
@@ -425,7 +425,7 @@ export abstract class BaseImporter {
}
if (addFolder) {
const f = new FolderView();
const f = new FolderDecrypted();
f.name = folderName;
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 { I18nService } from "../abstractions/i18n.service";
@@ -76,7 +76,7 @@ export class BitwardenJsonImporter extends BaseImporter implements Importer {
const folder = FolderWithIdExport.toDomain(f);
if (folder != 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);
this.result.folders.push(view);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
import { Folder as FolderDomain } from "../domain/folder";
import { FolderView } from "../view/folderView";
import { FolderDecrypted } from "../view/folderDecrypted";
import { FolderExport } from "./folderExport";
@@ -7,7 +7,7 @@ export class FolderWithIdExport extends FolderExport {
id: string;
// 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;
super.build(o);
}

View File

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

View File

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

View File

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

View File

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