import * as Tabs from "@radix-ui/react-tabs"; import { minidenticon } from "minidenticons"; import { getPublicKey, nip19 } from "nostr-tools"; import React, { useState, useMemo, useEffect } from "react"; import QRCode from "react-qr-code"; import browser from "webextension-polyfill"; import { SettingsIcon } from "./icons"; function Popup() { const [keys, setKeys] = useState(null); const avatarURI = useMemo( () => keys ? `data:image/svg+xml;utf8,${encodeURIComponent(minidenticon(keys.npub, 90, 30))}` : null, [keys], ); const gotoSettings = () => { browser.tabs.create({ url: browser.runtime.getURL("/options.html"), }); }; useEffect(() => { browser.storage.local.get(["private_key", "relays"]).then((results) => { if (results.private_key) { const hexKey = getPublicKey(results.private_key); const npubKey = nip19.npubEncode(hexKey); setKeys({ npub: npubKey, hex: hexKey }); if (results.relays) { const relaysList = []; for (const url in results.relays) { if (results.relays[url].write) { relaysList.push(url); if (relaysList.length >= 3) break; } } if (relaysList.length) { const nprofileKey = nip19.nprofileEncode({ pubkey: hexKey, relays: relaysList, }); setKeys((prev) => ({ ...prev, nprofile: nprofileKey })); } } } else { setKeys(null); } }); }, []); return (
{!keys ? (

Click here to enter or create
your first identity

) : (
{avatarURI ? ( Avatar ) : (
)}

Account

npub hex {keys.nprofile ? ( nprofile ) : null}