// Import the Nostr SDK package import { NDKNip07Signer } from "@nostr-dev-kit/ndk"; import NDK from "@nostr-dev-kit/ndk"; document.querySelector('button').addEventListener('click', login); async function fetchUserProfile(npub, ndk) { try { console.log('Fetching user profile for npub:', npub); const user = ndk.getUser({ npub }); await user.fetchProfile(); console.log("User profile:", user.profile); return user; } catch (error) { console.error("Error fetching user profile:", error); throw error; } } const relays = (["wss://nostr.happytavern.co"]) const ndk = new NDK({ explicitRelayUrls: relays }); async function login() { try { const signer = new NDKNip07Signer(); // Connect to the NDK await ndk.connect(); // Wait for the user to be obtained from the signer const user = await signer.user(); if (!!user.pubkey && user.npub) { console.log("Permission granted to read their public key:", user.pubkey); // Fetch user profile const userProfile = await fetchUserProfile(user.npub, ndk); const displayName = userProfile.profile.displayName; console.log("User's display name:", displayName); // Check if user's public key exists in the nostr.json const nostrJsonResponse = await fetch('/.well-known/nostr.json'); if (!nostrJsonResponse.ok) { throw new Error('Failed to fetch nostr.json: ' + nostrJsonResponse.statusText); } const nostrJson = await nostrJsonResponse.json(); console.log("nostrJson object:", nostrJson); if (nostrJson.names[displayName] === user.pubkey) { // User exists in nostr.json, proceed with further authentication or actions console.log('User authenticated successfully.'); // Redirect or show UI for file upload showFileUploadUI(); } else { console.log('User not found in the authentication database.'); alert('User not found in the authentication database.'); } } else { console.log('User information not available from signer.'); } } catch (error) { console.error('Error during authentication:', error); alert('Error during authentication: ' + error.message); } } function showFileUploadUI() { // Show UI for file upload console.log('Show file upload UI...'); // Implement UI logic for file upload }