Browse Source

Refresh home feed on sign-in

master
buttercat1791 2 years ago committed by limina1
parent
commit
83b8f1c9d6
  1. 14
      src/lib/components/Login.svelte
  2. 2
      src/lib/ndk.ts
  3. 35
      src/routes/+page.svelte

14
src/lib/components/Login.svelte

@ -1,9 +1,8 @@
<script lang='ts'> <script lang='ts'>
import { Avatar, Button, Popover } from 'flowbite-svelte'; import { Avatar, Button, Popover } from 'flowbite-svelte';
import NDK, { NDKNip07Signer, type NDKUserProfile } from '@nostr-dev-kit/ndk'; import NDK, { NDKNip07Signer, type NDKUserProfile } from '@nostr-dev-kit/ndk';
import { ndk } from '$lib/ndk'; import { signedIn, ndk } from '$lib/ndk';
let signedIn: boolean = false;
let profile: NDKUserProfile | null = null; let profile: NDKUserProfile | null = null;
const signInWithExtension = async () => { const signInWithExtension = async () => {
@ -14,15 +13,12 @@
$ndk.signer = signer; $ndk.signer = signer;
$ndk.activeUser = user; $ndk.activeUser = user;
const connectPromise = $ndk.connect(); await $ndk.connect();
const fetchProfilePromise = user.fetchProfile(); profile = await user.fetchProfile();
const [_, extensionUserProfile] = await Promise.all([connectPromise, fetchProfilePromise]);
profile = extensionUserProfile;
console.log('NDK signed in with extension and reconnected.'); console.log('NDK signed in with extension and reconnected.');
signedIn = true; $signedIn = true;
}; };
const signInWithBunker = () => { const signInWithBunker = () => {
@ -30,7 +26,7 @@
}; };
</script> </script>
{#if signedIn} {#if $signedIn}
<Avatar <Avatar
rounded rounded
class='h-6 w-6 m-4 cursor-pointer' class='h-6 w-6 m-4 cursor-pointer'

2
src/lib/ndk.ts

@ -29,3 +29,5 @@ export function getNdkInstance() {
} }
export const ndk: Writable<NDK> = writable(getNdkInstance()); export const ndk: Writable<NDK> = writable(getNdkInstance());
export const signedIn: Writable<boolean> = writable(false);

35
src/routes/+page.svelte

@ -1,19 +1,40 @@
<script lang="ts"> <script lang="ts">
import ArticleHeader from "$lib/ArticleHeader.svelte"; import ArticleHeader from "$lib/ArticleHeader.svelte";
import { ndk } from "$lib/ndk"; import { ndk, signedIn } from "$lib/ndk";
import { NDKRelaySet, type NDKUser } from "@nostr-dev-kit/ndk";
const kind = 30040; const kind = 30040;
const count: number = 10; const count: number = 10;
// TODO: Add more filter parameters to customize the event feed. async function loadEvents(user?: NDKUser) {
async function loadEvents() { if (user == null) {
const eventlist = await $ndk.fetchEvents({ kinds: [kind] }); return $ndk.fetchEvents(
return eventlist; { kinds: [kind] },
{ closeOnEose: true }
);
}
const relays = await user.relayList();
const relaySet = NDKRelaySet.fromRelayUrls(relays!.readRelayUrls, $ndk);
// TODO: Add more filter parameters to customize the event feed.
return $ndk.fetchEvents(
{ authors: [user.pubkey, ], kinds: [kind] },
{ closeOnEose: true },
relaySet,
);
} }
const eventlist = loadEvents();
$: eventList = loadEvents($ndk.activeUser);
signedIn.subscribe(async isSignedIn => {
if (isSignedIn) {
eventList = loadEvents();
}
});
</script> </script>
<div class='leather flex flex-col flex-grow-0 space-y-4 overflow-y-auto w-max'> <div class='leather flex flex-col flex-grow-0 space-y-4 overflow-y-auto w-max'>
{#await eventlist} {#await eventList}
<p>Loading...</p> <p>Loading...</p>
{:then events} {:then events}
{#each Array.from(events) as event} {#each Array.from(events) as event}

Loading…
Cancel
Save