diff --git a/src/app/components/PeopleItem.svelte b/src/app/components/PeopleItem.svelte index 8c02adf..6258747 100644 --- a/src/app/components/PeopleItem.svelte +++ b/src/app/components/PeopleItem.svelte @@ -2,15 +2,18 @@ import {onMount} from "svelte" import {formatTimestampRelative} from "@welshman/lib" import type {Filter} from "@welshman/util" + import {NOTE, GROUPS, MESSAGE, THREAD, COMMENT, getRelayTags, getListTags} from "@welshman/util" import {deriveEvents} from "@welshman/store" import {load} from "@welshman/net" import {Router} from "@welshman/router" import {repository, loadRelaySelections} from "@welshman/app" import Icon from "@lib/components/Icon.svelte" - import Link from "@lib/components/Link.svelte" + import Button from "@lib/components/Button.svelte" import Profile from "@app/components/Profile.svelte" import ProfileInfo from "@app/components/ProfileInfo.svelte" - import {pubkeyLink} from "@app/state" + import ProfileDetail from "@app/components/ProfileDetail.svelte" + import {membershipsByPubkey} from "@app/state" + import {pushModal} from "@app/modal" type Props = { pubkey: string @@ -18,17 +21,23 @@ } const {pubkey, url}: Props = $props() - const filters: Filter[] = [{authors: [pubkey], limit: 1}] const events = deriveEvents(repository, {filters}) + const membership = $derived($membershipsByPubkey.get(pubkey)) + const relays = $derived(getRelayTags(getListTags(membership))) + + const openProfile = () => pushModal(ProfileDetail, {pubkey, url}) onMount(async () => { // Make sure we have their relay selections before we load their posts await loadRelaySelections(pubkey) - // Load at least one note, regardless of time frame + // Load groups and at least one note, regardless of time frame load({ - filters: [{authors: [pubkey], limit: 1}], + filters: [ + {authors: [pubkey], kinds: [GROUPS]}, + {authors: [pubkey], limit: 1, kinds: [NOTE, MESSAGE, THREAD, COMMENT]}, + ], relays: Router.get().FromPubkeys([pubkey]).getUrls(), }) }) @@ -37,19 +46,27 @@
- +
- {#if $events.length > 0} -
- Last active {formatTimestampRelative($events[0].created_at)} -
- {/if} - +
+ {#if $events.length > 0} +
+ Last active {formatTimestampRelative($events[0].created_at)} +
+ {/if} + {#if relays.length > 0} +
+ {relays.length} + {relays.length === 1 ? "space" : "spaces"} +
+ {/if} +
+
diff --git a/src/app/components/Profile.svelte b/src/app/components/Profile.svelte index 63ad220..63d6e6e 100644 --- a/src/app/components/Profile.svelte +++ b/src/app/components/Profile.svelte @@ -1,11 +1,8 @@
@@ -52,7 +44,7 @@ - +
{#if $handle}
diff --git a/src/app/components/ProfileDetail.svelte b/src/app/components/ProfileDetail.svelte index 9e9a2d9..295f4a0 100644 --- a/src/app/components/ProfileDetail.svelte +++ b/src/app/components/ProfileDetail.svelte @@ -1,6 +1,7 @@ {#if $profile} - + {/if} diff --git a/src/lib/components/WotScore.svelte b/src/app/components/WotScore.svelte similarity index 74% rename from src/lib/components/WotScore.svelte rename to src/app/components/WotScore.svelte index 6ae4c9a..0211e17 100644 --- a/src/lib/components/WotScore.svelte +++ b/src/app/components/WotScore.svelte @@ -15,19 +15,21 @@
@@ -35,7 +26,7 @@
{$profileDisplay}
- +
{$handle ? displayHandle($handle) : displayPubkey(pubkey)} diff --git a/src/app/state.ts b/src/app/state.ts index c33aa95..0ab0858 100644 --- a/src/app/state.ts +++ b/src/app/state.ts @@ -405,7 +405,7 @@ export const memberships = deriveEventsMapped(repository, { }) export const { - indexStore: membershipByPubkey, + indexStore: membershipsByPubkey, deriveItem: deriveMembership, loadItem: loadMembership, } = collection({ @@ -593,12 +593,12 @@ export const userSettingValues = withGetter( export const getSetting = (key: keyof Settings["values"]) => userSettingValues.get()[key] as T export const userMembership = withGetter( - derived([pubkey, membershipByPubkey], ([$pubkey, $membershipByPubkey]) => { + derived([pubkey, membershipsByPubkey], ([$pubkey, $membershipsByPubkey]) => { if (!$pubkey) return undefined loadMembership($pubkey) - return $membershipByPubkey.get($pubkey) + return $membershipsByPubkey.get($pubkey) }), ) diff --git a/src/lib/components/ContentSearch.svelte b/src/lib/components/ContentSearch.svelte index 2a92b85..c07f3e4 100644 --- a/src/lib/components/ContentSearch.svelte +++ b/src/lib/components/ContentSearch.svelte @@ -14,7 +14,7 @@ {@render props.input?.()}
-
+
{@render props.content?.()}
diff --git a/src/routes/discover/+page.svelte b/src/routes/discover/+page.svelte index 8e13447..16add17 100644 --- a/src/routes/discover/+page.svelte +++ b/src/routes/discover/+page.svelte @@ -18,7 +18,7 @@ import SpaceCheck from "@app/components/SpaceCheck.svelte" import ProfileCircles from "@app/components/ProfileCircles.svelte" import { - membershipByPubkey, + membershipsByPubkey, getMembershipUrls, loadMembership, userRoomsByUrl, @@ -46,7 +46,7 @@ const scores = new Map>() for (const pubkey of getDefaultPubkeys()) { - for (const url of getMembershipUrls($membershipByPubkey.get(pubkey))) { + for (const url of getMembershipUrls($membershipsByPubkey.get(pubkey))) { addToMapKey(scores, url, pubkey) } } diff --git a/src/routes/people/+page.svelte b/src/routes/people/+page.svelte index 56efd25..1d4a56c 100644 --- a/src/routes/people/+page.svelte +++ b/src/routes/people/+page.svelte @@ -43,7 +43,7 @@ {/snippet} {#snippet content()} -
+
{#each pubkeys.slice(0, limit) as pubkey (pubkey)} {/each} diff --git a/static/coracle.png b/static/coracle.png new file mode 100644 index 0000000..12ed481 Binary files /dev/null and b/static/coracle.png differ