vault-import.component.ts raw
1 import { Component, inject, OnInit } from '@angular/core';
2 import { FormsModule } from '@angular/forms';
3 import {
4 SignerMetaData_VaultSnapshot,
5 IconButtonComponent,
6 NavComponent,
7 StartupService,
8 StorageService,
9 } from '@common';
10 import browser from 'webextension-polyfill';
11 import { getNewStorageServiceConfig } from '../../common/data/get-new-storage-service-config';
12
13 @Component({
14 selector: 'app-vault-import',
15 imports: [IconButtonComponent, FormsModule],
16 templateUrl: './vault-import.component.html',
17 styleUrl: './vault-import.component.scss',
18 })
19 export class VaultImportComponent extends NavComponent implements OnInit {
20 snapshots: SignerMetaData_VaultSnapshot[] = [];
21 selectedSnapshot: SignerMetaData_VaultSnapshot | undefined;
22
23 readonly #storage = inject(StorageService);
24 readonly #startup = inject(StartupService);
25
26 async openOptionsPage() {
27 await browser.runtime.openOptionsPage();
28 }
29
30 ngOnInit(): void {
31 this.#loadData();
32 }
33
34 async onClickImport() {
35 if (!this.selectedSnapshot) {
36 return;
37 }
38
39 try {
40 await this.#storage.deleteVault(true);
41 await this.#storage.importVault(this.selectedSnapshot.data);
42 this.#storage.isInitialized = false;
43 this.#startup.startOver(getNewStorageServiceConfig());
44 } catch (error) {
45 console.log(error);
46 // TODO
47 }
48 }
49
50 async #loadData() {
51 this.snapshots = (
52 this.#storage.getSignerMetaHandler().signerMetaData?.vaultSnapshots ?? []
53 ).sortBy((x) => x.fileName, 'desc');
54 }
55 }
56