window.onload = function () { if (!window.nostr) { console.log('Nostr extension not present'); document.querySelector('#nostr-signup-button').disabled = true; document.querySelector('#no-extension-nudges').style.display = 'block'; } else { console.log('Nostr extension present'); } }; const signUpConfirmation = document.querySelector('#sign-up-success'); function showConfirmationAndRedirect() { signUpConfirmation.classList.add('revealed'); setTimeout(() => { window.location.href = '/createProfile'; }, 5000); } async function acceptInvite() { let challengeResponse; try { challengeResponse = await fetch('/api/signup/nostr-challenge', { method: 'GET', headers: { 'Content-Type': 'application/json', }, }); } catch (error) { console.log(`Something went wrong: ${error}`); return; } const { challenge } = await challengeResponse.json(); let pubkey; try { pubkey = await window.nostr.getPublicKey(); } catch (error) { document.querySelector('#rejected-nostr-nudges').style.display = 'block'; return; } const event = { kind: 22242, created_at: Math.floor(Date.now() / 1000), tags: [['challenge', challenge]], content: 'Sign this challenge to authenticate', pubkey: pubkey, }; let signedEvent; try { signedEvent = await window.nostr.signEvent(event); } catch (error) { document.querySelector('#rejected-nostr-nudges').style.display = 'block'; return; } let verifyResponse; try { verifyResponse = await fetch('/api/signup/nostr-verify', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(signedEvent), }); } catch (error) { console.log(`Something went wrong: ${error}`); return; } if (verifyResponse.ok) { showConfirmationAndRedirect(); } }