Files
plebeian-signer/projects/chrome/src/app/components/edit-identity/keys/keys.component.ts
2025-02-07 22:28:29 +01:00

75 lines
1.7 KiB
TypeScript

import { Component, inject, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import {
IconButtonComponent,
NavComponent,
NostrHelper,
StorageService,
ToastComponent,
} from '@common';
import { FormsModule } from '@angular/forms';
interface CustomIdentity {
id: string;
nick: string;
privkeyNsec: string;
privkeyHex: string;
pubkeyNpub: string;
pubkeyHex: string;
}
@Component({
selector: 'app-keys',
imports: [IconButtonComponent, FormsModule, ToastComponent],
templateUrl: './keys.component.html',
styleUrl: './keys.component.scss',
})
export class KeysComponent extends NavComponent implements OnInit {
identity?: CustomIdentity;
readonly #activatedRoute = inject(ActivatedRoute);
readonly #storage = inject(StorageService);
ngOnInit(): void {
const identityId = this.#activatedRoute.parent?.snapshot.params['id'];
if (!identityId) {
return;
}
this.#initialize(identityId);
}
copyToClipboard(text: string) {
navigator.clipboard.writeText(text);
}
toggleType(element: HTMLInputElement) {
if (element.type === 'password') {
element.type = 'text';
} else {
element.type = 'password';
}
}
async #initialize(identityId: string) {
const identity = this.#storage
.getBrowserSessionHandler()
.browserSessionData?.identities.find((x) => x.id === identityId);
if (!identity) {
return;
}
const pubkey = NostrHelper.pubkeyFromPrivkey(identity.privkey);
this.identity = {
id: identity.id,
nick: identity.nick,
privkeyHex: identity.privkey,
privkeyNsec: NostrHelper.privkey2nsec(identity.privkey),
pubkeyHex: pubkey,
pubkeyNpub: NostrHelper.pubkey2npub(pubkey),
};
}
}