diff --git a/package-lock.json b/package-lock.json index 4132e94..ee8919c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -774,37 +774,16 @@ } }, "node_modules/@nostr-dev-kit/ndk-svelte": { - "version": "2.4.10", - "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk-svelte/-/ndk-svelte-2.4.10.tgz", - "integrity": "sha512-meBNrgcVXqM/VFPO8LykhiSncMbqvfMWqbtRF4SOsLwDMbK7IigRKtuUUJoHvalEn+3OB2TZYp/FV9EIMHQ00w==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk-svelte/-/ndk-svelte-2.4.11.tgz", + "integrity": "sha512-HCHFVQJ0lJBaGmMooJzmUhpTCATMtssbZsyYDLs729xl2xO//fOOGkiV3IUePhk0nKS85TfalP0aCXouQG/XMQ==", "dependencies": { - "@nostr-dev-kit/ndk": "2.14.4" + "@nostr-dev-kit/ndk": "2.14.5" }, "peerDependencies": { "svelte": "*" } }, - "node_modules/@nostr-dev-kit/ndk-svelte/node_modules/@nostr-dev-kit/ndk": { - "version": "2.14.4", - "resolved": "https://registry.npmjs.org/@nostr-dev-kit/ndk/-/ndk-2.14.4.tgz", - "integrity": "sha512-mh7IoKvzDXoh6PJNyvrNVAMm6Zor1xyEKjnVfXQ11WTDXCwOA8Ksff1qxVQOn7u6ZlxlZN4wHBeUwWswuD9FSA==", - "dependencies": { - "@noble/curves": "^1.6.0", - "@noble/hashes": "^1.5.0", - "@noble/secp256k1": "^2.1.0", - "@scure/base": "^1.1.9", - "debug": "^4.3.6", - "light-bolt11-decoder": "^3.2.0", - "tseep": "^1.3.1", - "typescript-lru-cache": "^2" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "nostr-tools": "^2" - } - }, "node_modules/@polka/url": { "version": "1.0.0-next.29", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", diff --git a/src/lib/components/Comment.svelte b/src/lib/components/Comment.svelte index 459bb53..124d8c8 100644 --- a/src/lib/components/Comment.svelte +++ b/src/lib/components/Comment.svelte @@ -3,17 +3,14 @@ import { onMount } from 'svelte'; import { NDKEvent } from '@nostr-dev-kit/ndk'; - import { ndk, ndkReady, user } from '$lib/stores'; + import { ndk } from '$lib/stores'; import { writable } from 'svelte/store'; - import { login } from '$lib'; import { Carta, Markdown, MarkdownEditor } from 'carta-md'; import 'carta-md/default.css'; /* Default theme */ import DOMPurify from 'dompurify'; - import { Confetti } from "svelte-confetti" - - - console.log("show reactions", showReactions, event) + import { Confetti } from 'svelte-confetti'; + console.log('show reactions', showReactions, event); // Create a new instance of Carta (you might also want to add a sanitizer if you're processing user input) let carta = new Carta({ @@ -21,7 +18,7 @@ }); let reactions = writable([]); let reacted = writable(window.localStorage.getItem(event.id)); - let reaction = writable({}) + let reaction = writable({}); let clicked = writable(false); async function sendReaction() { @@ -31,28 +28,28 @@ tags: [['e', event.id]] }); await reactionEvent.publish(); - $reaction = reactionEvent; + $reaction = reactionEvent; const r = await $ndk.fetchEvents({ kinds: [7], '#e': [event.id] }); console.log('r', r); $reactions = Array.from(r); window.localStorage.setItem(event.id, 'true'); - $reacted = true; - $clicked = true + $reacted = 'true'; + $clicked = true; } - async function deleteVote() { - const deletionEvent = new NDKEvent($ndk, { - kind: 5, - content: "User deleted vote", - tags: [ - ["e", event.id], - ["k", 7] - ] - }) - await deletionEvent.publish() - window.localStorage.removeItem(event.id) - $reacted = false - } + async function deleteVote() { + const deletionEvent = new NDKEvent($ndk, { + kind: 5, + content: 'User deleted vote', + tags: [ + ['e', event.id], + ['k', 7] + ] + }); + await deletionEvent.publish(); + window.localStorage.removeItem(event.id); + $reacted = 'false'; + } onMount(async () => { const r = await $ndk.fetchEvents({ kinds: [7], '#e': [event.id] }); @@ -65,12 +62,12 @@ {/key} -
+
{#if $reacted} 👍 {$reactions.length} Danke für deinen Vote! - - {:else if showReactions === "true"} + + {:else if showReactions === 'true'} {$reactions.length} {/if} @@ -79,19 +76,20 @@ {/if}
+ diff --git a/src/lib/index.js b/src/lib/index.js index aa68255..221c4b5 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -1,15 +1,12 @@ import { NDKNip07Signer, NDKPrivateKeySigner } from "@nostr-dev-kit/ndk"; -import { ndk as ndkStore, user as userStore } from "$lib/stores"; +import { ndk } from "$lib/stores"; import { get } from "svelte/store"; export async function login() { - let ndk = get(ndkStore) - let user = get(userStore) if (window.nostr) { const signer = new NDKNip07Signer(); - ndk.signer = signer; - const signedUser = await signer.user(); - userStore.set(signedUser) + get(ndk).signer = signer; + signer.user(); } else { console.log("no extension") const storedPrivateKey = window.localStorage.getItem('nostrPrivateKey'); @@ -17,24 +14,20 @@ export async function login() { const privateKey = JSON.parse(storedPrivateKey); console.log("stored private key", privateKey) const signer = new NDKPrivateKeySigner(privateKey); - const signedUser = await signer.user(); - userStore.set(signedUser) - ndk.signer = signer; - console.log("ndk signer", ndk) - ndkStore.set(ndk) + ndk.update((ndk) => { + ndk.signer = signer; + return ndk; + }); + // get(ndk).signer = signer; + signer.user(); } else { console.log('No private key found, generating a new one...'); const privateKey = NDKPrivateKeySigner.generate(); const signer = new NDKPrivateKeySigner(privateKey.privateKey); console.log('Generated Private Key:', privateKey); - - const signedUser = await signer.user(); - userStore.set(signedUser) - + signer.user(); window.localStorage.setItem('nostrPrivateKey', JSON.stringify(privateKey.privateKey)); - ndk.signer = signer; - console.log("ndk signer", ndk) - ndkStore.set(ndk) + get(ndk).signer = signer; } } } diff --git a/src/lib/stores.js b/src/lib/stores.js index c575025..859bf31 100644 --- a/src/lib/stores.js +++ b/src/lib/stores.js @@ -1,27 +1,21 @@ import NDKSvelte from "@nostr-dev-kit/ndk-svelte"; import { writable, derived } from "svelte/store"; -import { NDKNip07Signer } from "@nostr-dev-kit/ndk"; +import { NDKUser } from "@nostr-dev-kit/ndk"; export let connected = writable(false); -export const ndk = writable(new NDKSvelte()); +const _ndk = new NDKSvelte({ + explicitRelayUrls: [ + 'wss://relay-rpi.edufeed.org' + ], +}); -export const ndkReady = derived(ndk, $ndk => $ndk !== null); +export const ndk = writable(_ndk) -export async function initializeNDK() { - const signer = new NDKNip07Signer - const ndkInstance = new NDKSvelte({ - explicitRelayUrls: [ - 'wss://relay-rpi.edufeed.org' - ], - }); - - await ndkInstance.connect(); - -// ndkInstance.signer = signer; - ndk.set(ndkInstance); - - return ndkInstance; -} - -export const user = writable(null); \ No newline at end of file +export const user = derived(ndk, $ndk => { + console.log("updating user") + if ($ndk.signer !== undefined) { + return new NDKUser($ndk.signer); + } + return undefined; +}); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 3d775f7..0c868c8 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,22 +1,19 @@
- - {#if !$user} - + + {#if $ndk?.signer === undefined} + {/if} {#if !$questionId} @@ -84,7 +64,9 @@ {#if $connected}
- +
{/if}
@@ -93,23 +75,36 @@

Eine Ideensammlung starten

{#if $connected} - {#key $questionId} - {#if $questionId === ''} -
- -
-
- {:else} -
-

Diese Sammlung teilen

-

{questionShortId}

-
- QR Code -

Diesen QR-Code oder Link teilen:

-

- {`${window.location.origin}/q/`}{questionShortId} -

- -
- {/if} +
+ {/if} - {#if votingEnabled} -
-

Abstimmung ist jetzt aktiv!

-

Es können jetzt Stimmen abgegeben werden.

-
- {/if} - {/key} + {#if votingEnabled} +
+

Abstimmung ist jetzt aktiv!

+

Es können jetzt Stimmen abgegeben werden.

+
+ {/if} + {/key} {/if}