From 0c8a2dc140365a07210783fabe63cf95f8886e7d Mon Sep 17 00:00:00 2001 From: nayan9617 Date: Wed, 29 Apr 2026 07:11:39 +0530 Subject: [PATCH] feat(members): throttle merged profile derivation in SpaceMembers to reduce reactive invalidation --- src/app/components/Profile.svelte | 21 ++++++++-- src/app/components/SpaceMembers.svelte | 58 +++++++++++++++++++++++++- src/app/components/SpaceMenu.svelte | 8 ++-- src/app/core/state.ts | 7 +++- src/routes/spaces/create/+page.svelte | 2 +- 5 files changed, 85 insertions(+), 11 deletions(-) diff --git a/src/app/components/Profile.svelte b/src/app/components/Profile.svelte index a144cf15..59f8d150 100644 --- a/src/app/components/Profile.svelte +++ b/src/app/components/Profile.svelte @@ -3,6 +3,7 @@ import {removeUndefined} from "@welshman/lib" import {displayPubkey} from "@welshman/util" import {deriveHandleForPubkey, displayHandle, deriveProfileDisplay} from "@welshman/app" + import {readable, type Readable} from "svelte/store" import Icon from "@lib/components/Icon.svelte" import Button from "@lib/components/Button.svelte" import ProfileCircle from "@app/components/ProfileCircle.svelte" @@ -18,13 +19,27 @@ showPubkey?: boolean avatarSize?: number inert?: boolean + profileDisplayValue?: string + handleValue?: unknown } - const {pubkey, url, showPubkey, inert, avatarSize = 10}: Props = $props() + const { + pubkey, + url, + showPubkey, + inert, + avatarSize = 10, + profileDisplayValue, + handleValue, + }: Props = $props() const relays = removeUndefined([url]) - const profileDisplay = deriveProfileDisplay(pubkey, relays) - const handle = deriveHandleForPubkey(pubkey) + const profileDisplay: Readable = + profileDisplayValue !== undefined + ? readable(profileDisplayValue) + : deriveProfileDisplay(pubkey, relays) + const handle: Readable = + handleValue !== undefined ? readable(handleValue) : deriveHandleForPubkey(pubkey) const openProfile = () => { pushModal(ProfileDetail, {pubkey, url}) diff --git a/src/app/components/SpaceMembers.svelte b/src/app/components/SpaceMembers.svelte index 8733c826..be391523 100644 --- a/src/app/components/SpaceMembers.svelte +++ b/src/app/components/SpaceMembers.svelte @@ -1,6 +1,13 @@ @@ -126,7 +176,11 @@
- +
{#if canBan || canUnallow}
diff --git a/src/app/components/SpaceMenu.svelte b/src/app/components/SpaceMenu.svelte index 8d078ade..d37a0292 100644 --- a/src/app/components/SpaceMenu.svelte +++ b/src/app/components/SpaceMenu.svelte @@ -1,6 +1,6 @@