bitwarden-estensione-browser/src/popup/vault/add-edit.component.ts

115 lines
3.6 KiB
TypeScript
Raw Normal View History

2018-04-06 05:49:04 +02:00
import { Location } from '@angular/common';
import {
Component,
OnInit,
} from '@angular/core';
import {
ActivatedRoute,
Router,
} from '@angular/router';
import { ToasterService } from 'angular2-toaster';
import { Angulartics2 } from 'angulartics2';
2018-04-10 06:04:49 +02:00
import { CipherType } from 'jslib/enums/cipherType';
2018-04-06 05:49:04 +02:00
import { AuditService } from 'jslib/abstractions/audit.service';
import { CipherService } from 'jslib/abstractions/cipher.service';
import { FolderService } from 'jslib/abstractions/folder.service';
import { I18nService } from 'jslib/abstractions/i18n.service';
import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';
2018-04-09 23:35:16 +02:00
import { StateService } from 'jslib/abstractions/state.service';
2018-04-06 05:49:04 +02:00
import { AddEditComponent as BaseAddEditComponent } from 'jslib/angular/components/add-edit.component';
@Component({
selector: 'app-vault-add-edit',
2018-04-06 17:48:45 +02:00
templateUrl: 'add-edit.component.html',
2018-04-06 05:49:04 +02:00
})
export class AddEditComponent extends BaseAddEditComponent implements OnInit {
2018-04-14 20:56:30 +02:00
canCheckPasswords = true;
2018-04-06 05:49:04 +02:00
constructor(cipherService: CipherService, folderService: FolderService,
i18nService: I18nService, platformUtilsService: PlatformUtilsService,
analytics: Angulartics2, toasterService: ToasterService,
2018-04-09 23:35:16 +02:00
auditService: AuditService, stateService: StateService,
private route: ActivatedRoute, private router: Router,
private location: Location) {
2018-04-06 05:49:04 +02:00
super(cipherService, folderService, i18nService, platformUtilsService, analytics,
2018-04-09 23:35:16 +02:00
toasterService, auditService, stateService);
2018-04-06 05:49:04 +02:00
}
ngOnInit() {
2018-04-14 20:56:30 +02:00
this.canCheckPasswords = !this.platformUtilsService.isEdge();
2018-04-06 05:49:04 +02:00
this.route.queryParams.subscribe(async (params) => {
if (params.cipherId) {
this.cipherId = params.cipherId;
}
2018-04-10 06:04:49 +02:00
if (params.folderId) {
this.folderId = params.folderId;
}
if (params.type) {
const type = parseInt(params.type, null);
this.type = type;
}
2018-04-06 05:49:04 +02:00
this.editMode = !params.cipherId;
await this.load();
2018-04-10 06:04:49 +02:00
if (!this.editMode) {
if (params.name) {
this.cipher.name = params.name;
}
if (params.uri) {
this.cipher.login.uris[0].uri = params.uri;
}
}
2018-04-06 05:49:04 +02:00
});
2018-04-10 06:04:49 +02:00
setTimeout(() => {
if (!this.editMode) {
if (this.cipher.name != null && this.cipher.name !== '') {
document.getElementById('loginUsername').focus();
} else {
document.getElementById('name').focus();
}
}
}, 200);
2018-04-06 05:49:04 +02:00
}
2018-04-06 05:51:58 +02:00
async submit(): Promise<boolean> {
2018-04-06 05:49:04 +02:00
if (await super.submit()) {
this.location.back();
2018-04-06 05:51:58 +02:00
return true;
2018-04-06 05:49:04 +02:00
}
2018-04-06 05:51:58 +02:00
return false;
2018-04-06 05:49:04 +02:00
}
2018-04-11 19:51:09 +02:00
attachments() {
super.attachments();
this.router.navigate(['/attachments'], { queryParams: { cipherId: this.cipher.id } });
}
2018-04-06 05:49:04 +02:00
cancel() {
super.cancel();
this.location.back();
}
2018-04-09 23:35:16 +02:00
2018-04-10 20:20:03 +02:00
async generatePassword(): Promise<boolean> {
const confirmed = await super.generatePassword();
if (confirmed) {
this.stateService.save('addEditCipher', this.cipher);
this.router.navigate(['generator']);
}
return confirmed;
2018-04-09 23:35:16 +02:00
}
2018-04-11 22:23:05 +02:00
2018-04-12 04:33:32 +02:00
async delete(): Promise<boolean> {
const confirmed = await super.delete();
if (confirmed) {
2018-04-11 22:27:20 +02:00
this.router.navigate(['/tabs/vault']);
}
2018-04-12 04:33:32 +02:00
return confirmed;
2018-04-11 22:23:05 +02:00
}
2018-04-06 05:49:04 +02:00
}