From 97036fe9302f5fc5e677e5ff6d353f42f8b631f7 Mon Sep 17 00:00:00 2001 From: silberengel Date: Sun, 13 Jul 2025 01:52:22 +0200 Subject: [PATCH] fixed all logins/logouts universal user store --- src/lib/components/CommentBox.svelte | 32 ++- src/lib/components/Login.svelte | 296 ------------------- src/lib/components/LoginMenu.svelte | 271 +++--------------- src/lib/components/LoginModal.svelte | 12 +- src/lib/components/PublicationHeader.svelte | 2 - src/lib/components/cards/BlogHeader.svelte | 1 + src/lib/components/util/CardActions.svelte | 12 +- src/lib/components/util/Profile.svelte | 15 +- src/lib/ndk.ts | 73 +---- src/lib/stores/relayStore.ts | 4 - src/lib/stores/userStore.ts | 298 ++++++++++++++++++++ src/routes/+layout.ts | 35 ++- src/routes/+page.svelte | 8 +- src/routes/contact/+page.svelte | 11 +- src/routes/events/+page.svelte | 13 +- 15 files changed, 430 insertions(+), 653 deletions(-) delete mode 100644 src/lib/components/Login.svelte delete mode 100644 src/lib/stores/relayStore.ts create mode 100644 src/lib/stores/userStore.ts diff --git a/src/lib/components/CommentBox.svelte b/src/lib/components/CommentBox.svelte index c46f902..552ad5f 100644 --- a/src/lib/components/CommentBox.svelte +++ b/src/lib/components/CommentBox.svelte @@ -4,16 +4,13 @@ import { nip19 } from 'nostr-tools'; import { getEventHash, signEvent, getUserMetadata, type NostrProfile } from '$lib/utils/nostrUtils'; import { standardRelays, fallbackRelays } from '$lib/consts'; - import { userRelays } from '$lib/stores/relayStore'; - import { get } from 'svelte/store'; + import { userStore } from '$lib/stores/userStore'; import { goto } from '$app/navigation'; import type { NDKEvent } from '$lib/utils/nostrUtils'; import { onMount } from 'svelte'; const props = $props<{ event: NDKEvent; - userPubkey: string; - userRelayPreference: boolean; }>(); let content = $state(''); @@ -24,11 +21,13 @@ let showOtherRelays = $state(false); let showFallbackRelays = $state(false); let userProfile = $state(null); + let user = $state($userStore); + userStore.subscribe(val => user = val); // Fetch user profile on mount onMount(async () => { - if (props.userPubkey) { - const npub = nip19.npubEncode(props.userPubkey); + if (user.signedIn && user.pubkey) { + const npub = nip19.npubEncode(user.pubkey); userProfile = await getUserMetadata(npub); } }); @@ -92,6 +91,11 @@ } async function handleSubmit(useOtherRelays = false, useFallbackRelays = false) { + if (!user.signedIn || !user.pubkey) { + error = 'You must be signed in to comment'; + return; + } + isSubmitting = true; error = null; success = null; @@ -135,7 +139,7 @@ created_at: Math.floor(Date.now() / 1000), tags, content, - pubkey: props.userPubkey + pubkey: user.pubkey }; const id = getEventHash(eventToSign); @@ -147,10 +151,10 @@ sig }; - // Determine which relays to use - let relays = props.userRelayPreference ? get(userRelays) : standardRelays; + // Determine which relays to use based on user's relay preference + let relays = user.relays.inbox.length > 0 ? user.relays.inbox : standardRelays; if (useOtherRelays) { - relays = props.userRelayPreference ? standardRelays : get(userRelays); + relays = user.relays.inbox.length > 0 ? standardRelays : user.relays.inbox; } if (useFallbackRelays) { relays = fallbackRelays; @@ -282,16 +286,16 @@ /> {/if} - {userProfile.displayName || userProfile.name || nip19.npubEncode(props.userPubkey).slice(0, 8) + '...'} + {userProfile.displayName || userProfile.name || (user.pubkey ? nip19.npubEncode(user.pubkey).slice(0, 8) + '...' : 'Unknown')} {/if} - {#if !props.userPubkey} + {#if !user.signedIn} Please sign in to post comments. Your comments will be signed with your current account. diff --git a/src/lib/components/Login.svelte b/src/lib/components/Login.svelte deleted file mode 100644 index 8ea7dda..0000000 --- a/src/lib/components/Login.svelte +++ /dev/null @@ -1,296 +0,0 @@ - - -
-
- {#if !npub} -
-

Welcome to Alexandria

-

Connect with Amber to start reading and publishing

-
- - {#if !showQrCode} - - -
-

Click to generate a QR code for your mobile Amber app

-
- {:else} -
-
-

Scan with Amber

-

Open Amber on your phone and scan this QR code

-
- - - {#if qrCodeDataUrl} -
- Nostr Connect QR Code -
- {/if} - - -
- -
- - -
-
- -
-

1. Open Amber on your phone

-

2. Scan the QR code above

-

3. Approve the connection in Amber

-
-
- {/if} - {:else} -
-
✅ Connected to Amber
-
{npub}
-
- -
- - - -
- {/if} - - {#if result} -
- {result} -
- {/if} -
-
diff --git a/src/lib/components/LoginMenu.svelte b/src/lib/components/LoginMenu.svelte index b7b8c74..36c7e68 100644 --- a/src/lib/components/LoginMenu.svelte +++ b/src/lib/components/LoginMenu.svelte @@ -1,55 +1,24 @@
- {#if !npub} + {#if !user.signedIn}
-

{profileHandle || shortenNpub(npub)}

+

{user.profile?.displayName || user.profile?.name || (user.npub ? shortenNpub(user.npub) : 'Unknown')}

  • @@ -431,24 +244,22 @@

    Scan with Amber

    Open Amber on your phone and scan this QR code

    -
    Nostr Connect QR Code
    -
    -

    1. Open Amber on your phone

    2. Scan the QR code above

    3. Approve the connection in Amber

    -