diff --git a/package.json b/package.json index b2531a5..321d02a 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,9 @@ "preview": "vite preview" }, "dependencies": { + "nostr-tools": "^2.24.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "nostr-tools": "^2.0.0", "react-router-dom": "^6.20.0" }, "devDependencies": { diff --git a/src/components/NostrConnect.jsx b/src/components/NostrConnect.jsx index 2c064ef..3fc1a76 100644 --- a/src/components/NostrConnect.jsx +++ b/src/components/NostrConnect.jsx @@ -4,44 +4,83 @@ const NostrConnect = ({ setConnectedPubkey }) => { const [pubkey, setPubkey] = useState(null); const [loading, setLoading] = useState(false); + // Check if already connected + useEffect(() => { + if (window.nostr?.getPublicKey) { + window.nostr.getPublicKey() + .then(pk => { + setPubkey(pk); + setConnectedPubkey(pk); + }) + .catch(() => {}); + } + }, []); + const connect = async () => { setLoading(true); try { if (!window.nostr) { throw new Error('Please install a Nostr extension (Alby, Nos2x, etc.)'); } - - const pubkey = await window.nostr.getPublicKey(); - setPubkey(pubkey); - setConnectedPubkey(pubkey); + const pk = await window.nostr.getPublicKey(); + setPubkey(pk); + setConnectedPubkey(pk); + setLoading(false); } catch (error) { alert('Failed to connect: ' + error.message); - } finally { setLoading(false); } }; - useEffect(() => { - // Check if already connected - if (window.nostr) { - window.nostr.getPublicKey().then(pk => { - setPubkey(pk); - setConnectedPubkey(pk); - }).catch(() => {}); - } - }, []); + const disconnect = () => { + setPubkey(null); + setConnectedPubkey(null); + }; if (pubkey) { return ( -
{pubkey.slice(0, 8)}...{pubkey.slice(-8)}
+
+