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

2
src/lib/ndk.ts

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

35
src/routes/+page.svelte

@ -1,19 +1,40 @@ @@ -1,19 +1,40 @@
<script lang="ts">
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 count: number = 10;
// TODO: Add more filter parameters to customize the event feed.
async function loadEvents() {
const eventlist = await $ndk.fetchEvents({ kinds: [kind] });
return eventlist;
async function loadEvents(user?: NDKUser) {
if (user == null) {
return $ndk.fetchEvents(
{ 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>
<div class='leather flex flex-col flex-grow-0 space-y-4 overflow-y-auto w-max'>
{#await eventlist}
{#await eventList}
<p>Loading...</p>
{:then events}
{#each Array.from(events) as event}

Loading…
Cancel
Save