Files
clients/libs/angular/src/components/folder-add-edit.component.ts

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

102 lines
3.1 KiB
TypeScript
Raw Normal View History

2018-04-13 00:05:58 -04:00
import { Directive, EventEmitter, Input, OnInit, Output } from "@angular/core";
import { FolderApiServiceAbstraction } from "@bitwarden/common/abstractions/folder/folder-api.service.abstraction";
import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction";
2022-06-14 17:10:53 +02:00
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
import { LogService } from "@bitwarden/common/abstractions/log.service";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
import { FolderView } from "@bitwarden/common/models/view/folder.view";
2018-04-13 00:05:58 -04:00
@Directive()
2018-04-13 00:05:58 -04:00
export class FolderAddEditComponent implements OnInit {
@Input() folderId: string;
@Output() onSavedFolder = new EventEmitter<FolderView>();
@Output() onDeletedFolder = new EventEmitter<FolderView>();
2022-02-22 15:39:11 +01:00
editMode = false;
2018-04-13 00:05:58 -04:00
folder: FolderView = new FolderView();
title: string;
formPromise: Promise<any>;
deletePromise: Promise<any>;
protected componentName = "";
2018-04-13 00:05:58 -04:00
constructor(
protected folderService: FolderService,
protected folderApiService: FolderApiServiceAbstraction,
2018-04-13 00:05:58 -04:00
protected i18nService: I18nService,
protected platformUtilsService: PlatformUtilsService,
private logService: LogService
) {}
2018-04-13 00:05:58 -04:00
async ngOnInit() {
2019-03-06 14:31:32 -05:00
await this.init();
2018-04-13 00:05:58 -04:00
}
async submit(): Promise<boolean> {
if (this.folder.name == null || this.folder.name === "") {
2018-10-02 23:09:19 -04:00
this.platformUtilsService.showToast(
"error",
2018-04-13 00:05:58 -04:00
this.i18nService.t("errorOccurred"),
this.i18nService.t("nameRequired")
);
return false;
}
2018-04-13 00:05:58 -04:00
2021-12-16 13:36:21 +01:00
try {
2018-04-13 00:05:58 -04:00
const folder = await this.folderService.encrypt(this.folder);
this.formPromise = this.folderApiService.save(folder);
2018-04-13 00:05:58 -04:00
await this.formPromise;
this.platformUtilsService.showToast(
2021-12-16 13:36:21 +01:00
"success",
null,
2018-04-13 00:05:58 -04:00
this.i18nService.t(this.editMode ? "editedFolder" : "addedFolder")
2021-12-16 13:36:21 +01:00
);
2018-04-13 00:05:58 -04:00
this.onSavedFolder.emit(this.folder);
return true;
} catch (e) {
this.logService.error(e);
2018-04-13 00:05:58 -04:00
}
return false;
}
async delete(): Promise<boolean> {
2018-10-02 23:09:19 -04:00
const confirmed = await this.platformUtilsService.showDialog(
this.i18nService.t("deleteFolderConfirmation"),
this.i18nService.t("deleteFolder"),
2018-04-13 00:05:58 -04:00
this.i18nService.t("yes"),
this.i18nService.t("no"),
"warning",
false,
this.componentName != "" ? this.componentName + " .modal-content" : null
);
2018-04-13 00:05:58 -04:00
if (!confirmed) {
return false;
}
2018-04-13 00:05:58 -04:00
try {
this.deletePromise = this.folderApiService.delete(this.folder.id);
2018-04-13 00:05:58 -04:00
await this.deletePromise;
2018-10-02 23:09:19 -04:00
this.platformUtilsService.showToast("success", null, this.i18nService.t("deletedFolder"));
2018-04-13 00:05:58 -04:00
this.onDeletedFolder.emit(this.folder);
} catch (e) {
this.logService.error(e);
2018-04-13 00:05:58 -04:00
}
2019-03-06 14:31:32 -05:00
2021-12-16 13:36:21 +01:00
return true;
}
2019-03-06 14:31:32 -05:00
protected async init() {
this.editMode = this.folderId != null;
if (this.editMode) {
this.editMode = true;
this.title = this.i18nService.t("editFolder");
const folder = await this.folderService.get(this.folderId);
this.folder = await folder.decrypt();
} else {
this.title = this.i18nService.t("addFolder");
}
2021-12-16 13:36:21 +01:00
}
2018-04-13 00:05:58 -04:00
}