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