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 {
|
|
|
|
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() {
|
|
|
|
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
|
|
|
}
|