From 9c31b12d486f3049f415aaebcda62ddd736442d8 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Thu, 17 Oct 2024 13:56:53 -0700 Subject: [PATCH] Add wot to discover --- src/app/commands.ts | 14 +++- src/app/components/RelayAdd.svelte | 3 - src/app/state.ts | 21 +++-- src/routes/discover/+page.svelte | 97 +++++++++++++++++------- src/routes/home/people/+page.svelte | 6 +- src/routes/settings/profile/+page.svelte | 34 +++++---- src/routes/settings/relays/+page.svelte | 9 ++- 7 files changed, 119 insertions(+), 65 deletions(-) diff --git a/src/app/commands.ts b/src/app/commands.ts index 530d180f..d83705af 100644 --- a/src/app/commands.ts +++ b/src/app/commands.ts @@ -17,8 +17,9 @@ import { removeFromListByPredicate, getListTags, getRelayTags, + isShareableRelayUrl, } from "@welshman/util" -import type {TrustedEvent, EventTemplate} from "@welshman/util" +import type {TrustedEvent, EventTemplate, List} from "@welshman/util" import type {SubscribeRequestWithHandlers} from "@welshman/net" import {PublishStatus, AuthStatus, ConnectionStatus} from "@welshman/net" import {Nip59, stamp} from "@welshman/signer" @@ -96,6 +97,7 @@ export const loadUserData = ( await sleep(300) for (const pubkey of pubkeys) { + loadMembership(pubkey), loadProfile(pubkey) loadFollows(pubkey) loadMutes(pubkey) @@ -106,6 +108,16 @@ export const loadUserData = ( return promise } +export const discoverRelays = (lists: List[]) => { + const urls = uniq(lists.flatMap(getRelayUrls)) + + for (const url of urls) { + if (isShareableRelayUrl(url)) { + loadRelay(url) + } + } +} + // Synchronization export const broadcastUserData = async (relays: string[]) => { diff --git a/src/app/components/RelayAdd.svelte b/src/app/components/RelayAdd.svelte index 767ffb47..b28c4f63 100644 --- a/src/app/components/RelayAdd.svelte +++ b/src/app/components/RelayAdd.svelte @@ -6,7 +6,6 @@ import Icon from "@lib/components/Icon.svelte" import Button from "@lib/components/Button.svelte" import RelayItem from "@app/components/RelayItem.svelte" - import {discoverRelays} from "@app/state" export let relays: Readable export let addRelay: (url: string) => void @@ -16,7 +15,6 @@ let element: Element onMount(() => { - const sub = discoverRelays() const scroller = createScroller({ delay: 300, element: element.closest(".modal-box")!, @@ -26,7 +24,6 @@ }) return () => { - sub.close() scroller.stop() } }) diff --git a/src/app/state.ts b/src/app/state.ts index 7026102e..5447d0b0 100644 --- a/src/app/state.ts +++ b/src/app/state.ts @@ -14,6 +14,7 @@ import { max, pushToMapKey, nthEq, + shuffle, } from "@welshman/lib" import { getIdFilters, @@ -54,6 +55,7 @@ import { hasNegentropy, pull, createSearch, + userFollows, } from "@welshman/app" import type {AppSyncOpts} from "@welshman/app" import type {SubscribeRequestWithHandlers} from "@welshman/net" @@ -123,6 +125,13 @@ export const entityLink = (entity: string) => `https://coracle.social/${entity}` export const tagRoom = (room: string, url: string) => [ROOM, room, url] +export const getDefaultPubkeys = () => { + const appPubkeys = import.meta.env.VITE_DEFAULT_PUBKEYS.split(",") + const userPubkeys = shuffle(getPubkeyTagValues(getListTags(get(userFollows)))) + + return userPubkeys.length > 5 ? userPubkeys : [...userPubkeys, ...appPubkeys] +} + export const ensureUnwrapped = async (event: TrustedEvent) => { if (event.kind !== WRAP) { return event @@ -428,15 +437,3 @@ export const displayReaction = (content: string) => { if (content === "-") return "👎" return content } - -export const discoverRelays = () => - subscribe({ - filters: [{kinds: [RELAYS]}], - onEvent: (event: TrustedEvent) => { - for (const url of getRelayTagValues(event.tags)) { - if (isShareableRelayUrl(url)) { - loadRelay(url) - } - } - }, - }) diff --git a/src/routes/discover/+page.svelte b/src/routes/discover/+page.svelte index b1731f84..8a80a319 100644 --- a/src/routes/discover/+page.svelte +++ b/src/routes/discover/+page.svelte @@ -1,7 +1,10 @@
@@ -58,16 +62,16 @@
- +
- {displayProfile(profile, pubkeyDisplay)} + {displayProfile(display, pubkeyDisplay)}
- {profile?.nip05 ? displayNip05(profile.nip05) : pubkeyDisplay} + {display?.nip05 ? displayNip05(display.nip05) : pubkeyDisplay}
@@ -75,20 +79,20 @@
- {#key profile.about} - + {#key display?.about} + {/key}
{#if editing}
- +

Username

@@ -96,14 +100,14 @@