From 339e53e50621a5f97b8332506f6278cf6f1212fc Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Wed, 11 Sep 2024 11:09:25 -0700 Subject: [PATCH] Lint, rename chat compose stuff --- src/app.css | 2 +- src/app/commands.ts | 45 ++++++++++++--- ...GroupCompose.svelte => ChatCompose.svelte} | 0 ...Bolt11.svelte => ChatComposeBolt11.svelte} | 0 ...seEvent.svelte => ChatComposeEvent.svelte} | 0 ...seImage.svelte => ChatComposeImage.svelte} | 0 ...poseLink.svelte => ChatComposeLink.svelte} | 4 +- ...ntion.svelte => ChatComposeMention.svelte} | 0 ...s.svelte => ChatComposeSuggestions.svelte} | 6 +- ...seVideo.svelte => ChatComposeVideo.svelte} | 0 .../{GroupNote.svelte => ChatMessage.svelte} | 0 ...on.svelte => ChatSuggestionProfile.svelte} | 0 src/app/components/GroupComposeTopic.svelte | 18 ------ .../GroupComposeTopicSuggestion.svelte | 5 -- src/app/components/InfoRelay.svelte | 3 - src/app/components/LogIn.svelte | 2 +- src/app/components/RoomCreate.svelte | 12 +--- src/app/components/SpaceJoin.svelte | 7 +-- src/app/editor.ts | 56 +++++++++---------- src/app/routes.ts | 7 ++- src/app/state.ts | 23 +------- src/routes/+layout.svelte | 6 +- src/routes/discover/+page.svelte | 4 +- src/routes/settings/relays/+page.svelte | 5 +- src/routes/spaces/[nrelay]/+layout.svelte | 8 +-- .../spaces/[nrelay]/[[topic]]/+page.svelte | 12 ++-- 26 files changed, 94 insertions(+), 131 deletions(-) rename src/app/components/{GroupCompose.svelte => ChatCompose.svelte} (100%) rename src/app/components/{GroupComposeBolt11.svelte => ChatComposeBolt11.svelte} (100%) rename src/app/components/{GroupComposeEvent.svelte => ChatComposeEvent.svelte} (100%) rename src/app/components/{GroupComposeImage.svelte => ChatComposeImage.svelte} (100%) rename src/app/components/{GroupComposeLink.svelte => ChatComposeLink.svelte} (83%) rename src/app/components/{GroupComposeMention.svelte => ChatComposeMention.svelte} (100%) rename src/app/components/{GroupComposeSuggestions.svelte => ChatComposeSuggestions.svelte} (83%) rename src/app/components/{GroupComposeVideo.svelte => ChatComposeVideo.svelte} (100%) rename src/app/components/{GroupNote.svelte => ChatMessage.svelte} (100%) rename src/app/components/{GroupComposeProfileSuggestion.svelte => ChatSuggestionProfile.svelte} (100%) delete mode 100644 src/app/components/GroupComposeTopic.svelte delete mode 100644 src/app/components/GroupComposeTopicSuggestion.svelte diff --git a/src/app.css b/src/app.css index d1d65e74f..1f033e6a5 100644 --- a/src/app.css +++ b/src/app.css @@ -105,7 +105,7 @@ } .link-content { - @apply inline-block max-w-full overflow-hidden text-ellipsis whitespace-nowrap rounded bg-neutral px-1 text-sm text-neutral-content no-underline; + @apply max-w-full overflow-hidden text-ellipsis whitespace-nowrap rounded bg-neutral px-1 text-neutral-content no-underline; } .link-content.link-content-selected { diff --git a/src/app/commands.ts b/src/app/commands.ts index 425476ce5..ddfe9e0bc 100644 --- a/src/app/commands.ts +++ b/src/app/commands.ts @@ -1,19 +1,18 @@ -import {uniqBy, equals, uniq, now, choice} from "@welshman/lib" -import {getRelayTagValues, createEvent, displayProfile} from "@welshman/util" -import {PublishStatus} from "@welshman/net" +import {uniqBy, sleep, chunk, equals, choice} from "@welshman/lib" +import {getPubkeyTagValues, createEvent, displayProfile} from "@welshman/util" +import type {SubscribeRequestWithHandlers} from "@welshman/net" import { pubkey, repository, - load, makeThunk, publishThunk, loadProfile, profilesByPubkey, relaySelectionsByPubkey, - loadRelaySelections, getWriteRelayUrls, loadFollows, loadMutes, + followsByPubkey, } from "@welshman/app" import {MEMBERSHIPS, INDEXER_RELAYS} from "@app/state" @@ -49,8 +48,32 @@ export const makeIMeta = (url: string, data: Record) => [ // Loaders -export const loadUserData = (pubkey: string, hints: string[] = []) => - Promise.all([loadProfile(pubkey), loadFollows(pubkey), loadMutes(pubkey)]) +export const loadUserData = ( + pubkey: string, + request: Partial = {}, +) => { + const promise = Promise.all([ + loadProfile(pubkey, request), + loadFollows(pubkey, request), + loadMutes(pubkey, request), + ]) + + // Load followed profiles slowly in the background without clogging other stuff up + promise.then(async () => { + const followsList = followsByPubkey.get().get(pubkey) + const follows = getPubkeyTagValues(followsList?.event.tags || []) + + for (const pubkeys of chunk(50, follows)) { + await sleep(300) + + for (const pubkey of pubkeys) { + loadProfile(pubkey) + } + } + }) + + return promise +} // Updates @@ -73,10 +96,14 @@ export const addSpaceMembership = (url: string) => updateList(MEMBERSHIPS, (tags: string[][]) => uniqBy(t => t.join(""), [...tags, ["r", url]])) export const addRoomMembership = (url: string, topic: string) => - updateList(MEMBERSHIPS, (tags: string[][]) => uniqBy(t => t.join(""), [...tags, ["t", topic, url]])) + updateList(MEMBERSHIPS, (tags: string[][]) => + uniqBy(t => t.join(""), [...tags, ["t", topic, url]]), + ) export const removeSpaceMembership = (url: string) => - updateList(MEMBERSHIPS, (tags: string[][]) => tags.filter(t => !equals(["r", url], t) && t[2] !== url)) + updateList(MEMBERSHIPS, (tags: string[][]) => + tags.filter(t => !equals(["r", url], t) && t[2] !== url), + ) export const removeRoomMembership = (url: string, topic: string) => updateList(MEMBERSHIPS, (tags: string[][]) => tags.filter(t => !equals(["t", topic, url], t))) diff --git a/src/app/components/GroupCompose.svelte b/src/app/components/ChatCompose.svelte similarity index 100% rename from src/app/components/GroupCompose.svelte rename to src/app/components/ChatCompose.svelte diff --git a/src/app/components/GroupComposeBolt11.svelte b/src/app/components/ChatComposeBolt11.svelte similarity index 100% rename from src/app/components/GroupComposeBolt11.svelte rename to src/app/components/ChatComposeBolt11.svelte diff --git a/src/app/components/GroupComposeEvent.svelte b/src/app/components/ChatComposeEvent.svelte similarity index 100% rename from src/app/components/GroupComposeEvent.svelte rename to src/app/components/ChatComposeEvent.svelte diff --git a/src/app/components/GroupComposeImage.svelte b/src/app/components/ChatComposeImage.svelte similarity index 100% rename from src/app/components/GroupComposeImage.svelte rename to src/app/components/ChatComposeImage.svelte diff --git a/src/app/components/GroupComposeLink.svelte b/src/app/components/ChatComposeLink.svelte similarity index 83% rename from src/app/components/GroupComposeLink.svelte rename to src/app/components/ChatComposeLink.svelte index e25b6c86f..a777a88c1 100644 --- a/src/app/components/GroupComposeLink.svelte +++ b/src/app/components/ChatComposeLink.svelte @@ -10,12 +10,12 @@ export let selected: NodeViewProps["selected"] - + - + {displayUrl(node.attrs.url)} diff --git a/src/app/components/GroupComposeMention.svelte b/src/app/components/ChatComposeMention.svelte similarity index 100% rename from src/app/components/GroupComposeMention.svelte rename to src/app/components/ChatComposeMention.svelte diff --git a/src/app/components/GroupComposeSuggestions.svelte b/src/app/components/ChatComposeSuggestions.svelte similarity index 83% rename from src/app/components/GroupComposeSuggestions.svelte rename to src/app/components/ChatComposeSuggestions.svelte index 7a1793b5b..a0dcdfc06 100644 --- a/src/app/components/GroupComposeSuggestions.svelte +++ b/src/app/components/ChatComposeSuggestions.svelte @@ -65,10 +65,10 @@ data-theme={$theme} bind:this={element} transition:slide|local={{duration: 100}} - class="mt-2 flex max-h-[350px] flex-col overflow-y-auto overflow-x-hidden shadow-xl"> + class="mt-2 max-h-[350px] overflow-y-auto overflow-x-hidden shadow-xl"> {#if term && allowCreate}