keys.component.ts raw

   1  import { Component, inject, OnInit } from '@angular/core';
   2  import { FormsModule } from '@angular/forms';
   3  import { ActivatedRoute, Router } from '@angular/router';
   4  import {
   5    IconButtonComponent,
   6    NavComponent,
   7    NostrHelper,
   8    StorageService,
   9    ToastComponent,
  10  } from '@common';
  11  
  12  interface CustomIdentity {
  13    id: string;
  14    nick: string;
  15    privkeyNsec: string;
  16    privkeyHex: string;
  17    pubkeyNpub: string;
  18    pubkeyHex: string;
  19  }
  20  
  21  @Component({
  22    selector: 'app-keys',
  23    imports: [IconButtonComponent, FormsModule, ToastComponent],
  24    templateUrl: './keys.component.html',
  25    styleUrl: './keys.component.scss',
  26  })
  27  export class KeysComponent extends NavComponent implements OnInit {
  28    identity?: CustomIdentity;
  29  
  30    readonly #activatedRoute = inject(ActivatedRoute);
  31    readonly #storage = inject(StorageService);
  32    readonly #router = inject(Router);
  33  
  34    ngOnInit(): void {
  35      const identityId = this.#activatedRoute.parent?.snapshot.params['id'];
  36      if (!identityId) {
  37        return;
  38      }
  39  
  40      this.#initialize(identityId);
  41    }
  42  
  43    copyToClipboard(text: string) {
  44      navigator.clipboard.writeText(text);
  45    }
  46  
  47    toggleType(element: HTMLInputElement) {
  48      if (element.type === 'password') {
  49        element.type = 'text';
  50      } else {
  51        element.type = 'password';
  52      }
  53    }
  54  
  55    navigateToNcryptsec() {
  56      if (!this.identity) return;
  57      this.#router.navigateByUrl(`/edit-identity/${this.identity.id}/ncryptsec`);
  58    }
  59  
  60    async #initialize(identityId: string) {
  61      const identity = this.#storage
  62        .getBrowserSessionHandler()
  63        .browserSessionData?.identities.find((x) => x.id === identityId);
  64  
  65      if (!identity) {
  66        return;
  67      }
  68  
  69      const pubkey = NostrHelper.pubkeyFromPrivkey(identity.privkey);
  70  
  71      this.identity = {
  72        id: identity.id,
  73        nick: identity.nick,
  74        privkeyHex: identity.privkey,
  75        privkeyNsec: NostrHelper.privkey2nsec(identity.privkey),
  76        pubkeyHex: pubkey,
  77        pubkeyNpub: NostrHelper.pubkey2npub(pubkey),
  78      };
  79    }
  80  }
  81