import { Event, UnsignedEvent } from 'nostr-tools'; import { generateLogoHero, LoadProfileHome } from './LoadProfileHome'; import { fetchMyProfileEvents } from './fetchEvents'; import { localStorageGetItem, localStorageSetItem } from './LocalStorage'; import { LoadMetadataPage } from './LoadMetadataPage'; import LoadContactsPage from './LoadContactsPage'; import LoadRelaysPage from './LoadRelaysPage'; declare global { interface Window { nostr?: { getPublicKey: () => Promise; signEvent: (event:UnsignedEvent) => Promise; } } } const loadProfile = async () => { // load profile page (in loading mode) LoadProfileHome(); // load profile data await fetchMyProfileEvents( localStorageGetItem('pubkey') as string, LoadProfileHome, ); // load profile page (in complete mode) LoadProfileHome(); // turn on nav (document.getElementById('mainnav') as HTMLElement).classList.remove('inactive'); (document.getElementById('navhome') as HTMLElement).onclick = LoadProfileHome; (document.getElementById('navmetadata') as HTMLElement).onclick = LoadMetadataPage; (document.getElementById('navcontacts') as HTMLElement).onclick = LoadContactsPage; (document.getElementById('navrelays') as HTMLElement).onclick = LoadRelaysPage; }; const LoadLandingPage = () => { const aboutcontent = `
${generateLogoHero()}

Nostr Profile Manager

Backup / Refine / Restore profile events

Load My Profile
Backup

Save your profile in your offline browser data. Backup all your notes. Download in a zip.

Refine

Perfect your profile. Refine your relays. Clean up your contacts.

Restore

View profile backups and restore your favourate

`; const o:HTMLElement = document.getElementById('PM-container') as HTMLElement; o.innerHTML = aboutcontent; const a = document.getElementById('loadextension'); if (a) { a.onclick = async () => { if (window.nostr) { const pubkey = await window.nostr.getPublicKey(); localStorageSetItem('pubkey', pubkey); loadProfile(); } else { a.outerHTML = `

You need a NIP-07 browser extension like nos2x to use this webapp.

Get Browser Extension `; } }; } }; const load = async () => { // if new users if (!localStorageGetItem('pubkey')) LoadLandingPage(); else loadProfile(); }; if (document.getElementById('PM-container') !== null) load(); else document.addEventListener('DOMContentLoaded', () => load());