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