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