From dac9ef8e4edbcc24ae2ff3b269867da9374d003b Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Fri, 13 Jun 2025 15:17:20 -0700 Subject: [PATCH] Move some stuff to welshman, broadcast profile updates --- src/app/commands.ts | 33 ------------------- src/app/components/ProfileEdit.svelte | 8 +++-- src/app/components/RoomCreate.svelte | 3 +- src/app/state.ts | 2 -- src/routes/spaces/[relay]/[room]/+page.svelte | 13 ++------ 5 files changed, 10 insertions(+), 49 deletions(-) diff --git a/src/app/commands.ts b/src/app/commands.ts index 976b152..d45b29f 100644 --- a/src/app/commands.ts +++ b/src/app/commands.ts @@ -12,10 +12,6 @@ import { FOLLOWS, REACTION, AUTH_JOIN, - GROUP_JOIN, - GROUP_LEAVE, - GROUP_CREATE, - GROUP_EDIT_META, GROUPS, COMMENT, isSignedEvent, @@ -55,7 +51,6 @@ import { getThunkError, } from "@welshman/app" import { - tagRoom, PROTECTED, userMembership, INDEXER_RELAYS, @@ -126,34 +121,6 @@ export const broadcastUserData = async (relays: string[]) => { } } -// NIP 29 stuff - -export const createRoom = (url: string, room: string) => { - const event = makeEvent(GROUP_CREATE, {tags: [tagRoom(room, url)]}) - - return publishThunk({event, relays: [url]}) -} - -export const editRoom = (url: string, room: string, meta: Record) => { - const event = makeEvent(GROUP_EDIT_META, { - tags: [tagRoom(room, url), ...Object.entries(meta)], - }) - - return publishThunk({event, relays: [url]}) -} - -export const joinRoom = (url: string, room: string) => { - const event = makeEvent(GROUP_JOIN, {tags: [tagRoom(room, url)]}) - - return publishThunk({event, relays: [url]}) -} - -export const leaveRoom = (url: string, room: string) => { - const event = makeEvent(GROUP_LEAVE, {tags: [tagRoom(room, url)]}) - - return publishThunk({event, relays: [url]}) -} - // List updates export const addSpaceMembership = async (url: string) => { diff --git a/src/app/components/ProfileEdit.svelte b/src/app/components/ProfileEdit.svelte index e9617a1..3309cdc 100644 --- a/src/app/components/ProfileEdit.svelte +++ b/src/app/components/ProfileEdit.svelte @@ -9,7 +9,7 @@ isPublishedProfile, uniqTags, } from "@welshman/util" - import {Router} from "@welshman/router" + import {Router, addMaximalFallbacks} from "@welshman/router" import {pubkey, profilesByPubkey, publishThunk} from "@welshman/app" import Button from "@lib/components/Button.svelte" import ProfileEditForm from "@app/components/ProfileEditForm.svelte" @@ -28,7 +28,11 @@ const relays = [...getMembershipUrls($userMembership)] if (shouldBroadcast) { - relays.push(...Router.get().FromUser().getUrls()) + const router = Router.get() + + relays.push( + ...router.merge([router.FromUser(), router.Index()]).policy(addMaximalFallbacks).getUrls(), + ) } else { template.tags = uniqTags([...template.tags, PROTECTED]) } diff --git a/src/app/components/RoomCreate.svelte b/src/app/components/RoomCreate.svelte index 0a5195c..673c5f8 100644 --- a/src/app/components/RoomCreate.svelte +++ b/src/app/components/RoomCreate.svelte @@ -2,7 +2,7 @@ import {goto} from "$app/navigation" import {randomId} from "@welshman/lib" import {displayRelayUrl} from "@welshman/util" - import {deriveRelay, getThunkError} from "@welshman/app" + import {deriveRelay, getThunkError, createRoom, editRoom, joinRoom} from "@welshman/app" import {preventDefault} from "@lib/html" import Field from "@lib/components/Field.svelte" import Spinner from "@lib/components/Spinner.svelte" @@ -11,7 +11,6 @@ import ModalHeader from "@lib/components/ModalHeader.svelte" import ModalFooter from "@lib/components/ModalFooter.svelte" import {hasNip29, loadChannel} from "@app/state" - import {createRoom, editRoom, joinRoom} from "@app/commands" import {makeSpacePath} from "@app/routes" import {pushToast} from "@app/toast" diff --git a/src/app/state.ts b/src/app/state.ts index 0ab0858..1fbc936 100644 --- a/src/app/state.ts +++ b/src/app/state.ts @@ -171,8 +171,6 @@ export const entityLink = (entity: string) => `https://coracle.social/${entity}` export const pubkeyLink = (pubkey: string, relays = Router.get().FromPubkeys([pubkey]).getUrls()) => entityLink(nip19.nprofileEncode({pubkey, relays})) -export const tagRoom = (room: string, url: string) => [ROOM, room] - export const getDefaultPubkeys = () => { const appPubkeys = DEFAULT_PUBKEYS.split(",") const userPubkeys = shuffle(getPubkeyTagValues(getListTags(get(userFollows)))) diff --git a/src/routes/spaces/[relay]/[room]/+page.svelte b/src/routes/spaces/[relay]/[room]/+page.svelte index dc91099..b44b5bd 100644 --- a/src/routes/spaces/[relay]/[room]/+page.svelte +++ b/src/routes/spaces/[relay]/[room]/+page.svelte @@ -15,7 +15,7 @@ GROUP_ADD_USER, GROUP_REMOVE_USER, } from "@welshman/util" - import {pubkey, publishThunk, getThunkError} from "@welshman/app" + import {pubkey, publishThunk, getThunkError, joinRoom, leaveRoom} from "@welshman/app" import {slide, fade, fly} from "@lib/transition" import Icon from "@lib/components/Icon.svelte" import Button from "@lib/components/Button.svelte" @@ -32,20 +32,13 @@ userRoomsByUrl, userSettingValues, decodeRelay, - tagRoom, getEventsForUrl, deriveUserMembershipStatus, deriveChannel, MembershipStatus, } from "@app/state" import {setChecked, checked} from "@app/notifications" - import { - joinRoom, - leaveRoom, - addRoomMembership, - removeRoomMembership, - prependParent, - } from "@app/commands" + import {addRoomMembership, removeRoomMembership, prependParent} from "@app/commands" import {PROTECTED} from "@app/state" import {makeFeed} from "@app/requests" import {popKey} from "@app/implicit" @@ -108,7 +101,7 @@ } const onSubmit = ({content, tags}: EventContent) => { - tags.push(tagRoom(room, url)) + tags.push(["h", room]) tags.push(PROTECTED) let template = {content, tags}