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