75 lines
1.7 KiB
TypeScript
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),
|
|
};
|
|
}
|
|
}
|