From a324dad2ba89517c8a0e06c6f882f8fcf2791168 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Thu, 30 Oct 2025 15:36:14 -0700 Subject: [PATCH] Rename channel to room --- CONTRIBUTING.md | 2 +- pnpm-lock.yaml | 28 +++++------ src/app/components/AlertAdd.svelte | 14 +++--- src/app/components/AlertItem.svelte | 4 +- src/app/components/Alerts.svelte | 6 +-- .../components/CalendarEventActions.svelte | 4 +- src/app/components/CalendarEventItem.svelte | 4 +- src/app/components/ChannelName.svelte | 7 --- src/app/components/ConversationCard.svelte | 4 +- src/app/components/EventShare.svelte | 14 +++--- src/app/components/GoalActions.svelte | 4 +- src/app/components/GoalItem.svelte | 4 +- src/app/components/MenuSpace.svelte | 2 +- src/app/components/MenuSpaceRoomItem.svelte | 4 +- ...annelCompose.svelte => RoomCompose.svelte} | 0 ...poseEdit.svelte => RoomComposeEdit.svelte} | 0 ...Parent.svelte => RoomComposeParent.svelte} | 0 src/app/components/RoomEdit.svelte | 6 +-- .../{ChannelItem.svelte => RoomItem.svelte} | 24 +++++----- ...Member.svelte => RoomItemAddMember.svelte} | 0 ...mContent.svelte => RoomItemContent.svelte} | 4 +- ...tton.svelte => RoomItemEmojiButton.svelte} | 0 ...nelItemMenu.svelte => RoomItemMenu.svelte} | 0 ...utton.svelte => RoomItemMenuButton.svelte} | 4 +- ...obile.svelte => RoomItemMenuMobile.svelte} | 4 +- ...ber.svelte => RoomItemRemoveMember.svelte} | 0 ...Button.svelte => RoomItemZapButton.svelte} | 0 .../{ChannelLink.svelte => RoomLink.svelte} | 4 +- src/app/components/RoomName.svelte | 7 +++ ...hImage.svelte => RoomNameWithImage.svelte} | 14 +++--- src/app/components/ThreadActions.svelte | 4 +- src/app/components/ThreadItem.svelte | 4 +- src/app/core/state.ts | 48 +++++++++---------- src/app/util/routes.ts | 2 +- src/routes/spaces/[relay]/[h]/+page.svelte | 42 ++++++++-------- src/routes/spaces/[relay]/chat/+page.svelte | 28 +++++------ 36 files changed, 148 insertions(+), 148 deletions(-) delete mode 100644 src/app/components/ChannelName.svelte rename src/app/components/{ChannelCompose.svelte => RoomCompose.svelte} (100%) rename src/app/components/{ChannelComposeEdit.svelte => RoomComposeEdit.svelte} (100%) rename src/app/components/{ChannelComposeParent.svelte => RoomComposeParent.svelte} (100%) rename src/app/components/{ChannelItem.svelte => RoomItem.svelte} (87%) rename src/app/components/{ChannelItemAddMember.svelte => RoomItemAddMember.svelte} (100%) rename src/app/components/{ChannelItemContent.svelte => RoomItemContent.svelte} (83%) rename src/app/components/{ChannelItemEmojiButton.svelte => RoomItemEmojiButton.svelte} (100%) rename src/app/components/{ChannelItemMenu.svelte => RoomItemMenu.svelte} (100%) rename src/app/components/{ChannelItemMenuButton.svelte => RoomItemMenuButton.svelte} (91%) rename src/app/components/{ChannelItemMenuMobile.svelte => RoomItemMenuMobile.svelte} (96%) rename src/app/components/{ChannelItemRemoveMember.svelte => RoomItemRemoveMember.svelte} (100%) rename src/app/components/{ChannelItemZapButton.svelte => RoomItemZapButton.svelte} (100%) rename src/app/components/{ChannelLink.svelte => RoomLink.svelte} (82%) create mode 100644 src/app/components/RoomName.svelte rename src/app/components/{ChannelNameWithImage.svelte => RoomNameWithImage.svelte} (66%) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fa54362e..85c74d1b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -69,7 +69,7 @@ Here are a few important domain objects: - Spaces are relays used as community groups. Their `url`s are core to a lot of data and components, and are frequently passed around from place to place. - Chats are direct message conversations. There is currently some ambiguity in routing, since relays that don't support NIP 29 also have a "chat" tab, which uses vanilla NIP-C7. -- NIP 29 groups are variously called "rooms" and "channels". Conventionally, a "room" is a group id, while a "channel" as an object representing the group's metadata. +- NIP 29 groups are variously called "rooms" and "rooms". Conventionally, a "room" is a group id, while a "room" as an object representing the group's metadata. - "Alerts" are records of requests the user has made to be notified, following [this NIP](https://github.com/nostr-protocol/nips/pull/1796) `app/core/requests` contains utilities related to loading data from the nostr network. This might include feed manager utilities, loaders, or listeners. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bce21d67..d9055eda 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4179,19 +4179,19 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - side-channel-list@1.0.0: + side-room-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} - side-channel-map@1.0.1: + side-room-map@1.0.1: resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} engines: {node: '>= 0.4'} - side-channel-weakmap@1.0.2: + side-room-weakmap@1.0.2: resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} engines: {node: '>= 0.4'} - side-channel@1.1.0: + side-room@1.1.0: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} @@ -8136,7 +8136,7 @@ snapshots: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.1.0 + side-room: 1.1.0 is-array-buffer@3.0.5: dependencies: @@ -9334,33 +9334,33 @@ snapshots: shebang-regex@3.0.0: {} - side-channel-list@1.0.0: + side-room-list@1.0.0: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 - side-channel-map@1.0.1: + side-room-map@1.0.1: dependencies: call-bound: 1.0.4 es-errors: 1.3.0 get-intrinsic: 1.3.0 object-inspect: 1.13.4 - side-channel-weakmap@1.0.2: + side-room-weakmap@1.0.2: dependencies: call-bound: 1.0.4 es-errors: 1.3.0 get-intrinsic: 1.3.0 object-inspect: 1.13.4 - side-channel-map: 1.0.1 + side-room-map: 1.0.1 - side-channel@1.1.0: + side-room@1.1.0: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 + side-room-list: 1.0.0 + side-room-map: 1.0.1 + side-room-weakmap: 1.0.2 signal-exit@3.0.7: {} @@ -9483,7 +9483,7 @@ snapshots: internal-slot: 1.1.0 regexp.prototype.flags: 1.5.4 set-function-name: 2.0.2 - side-channel: 1.1.0 + side-room: 1.1.0 string.prototype.trim@1.2.10: dependencies: diff --git a/src/app/components/AlertAdd.svelte b/src/app/components/AlertAdd.svelte index b8f9210d..dcbc627c 100644 --- a/src/app/components/AlertAdd.svelte +++ b/src/app/components/AlertAdd.svelte @@ -21,7 +21,7 @@ type Props = { url?: string - channel?: string + room?: string notifyChat?: boolean notifyThreads?: boolean notifyCalendar?: boolean @@ -30,7 +30,7 @@ let { url = "", - channel = "email", + room = "email", notifyChat = true, notifyThreads = true, notifyCalendar = true, @@ -50,7 +50,7 @@ const back = () => history.back() const submit = async () => { - if (channel === "email" && !email.includes("@")) { + if (room === "email" && !email.includes("@")) { return pushToast({ theme: "error", message: "Please provide an email address", @@ -100,7 +100,7 @@ feed: makeIntersectionFeed(feedFromFilters(filters), makeRelayFeed(url)), claims: claim ? {[url]: claim} : {}, description: `for ${displayList(display)} on ${displayRelayUrl(url)}`, - email: channel === "email" ? {cron, email} : undefined, + email: room === "email" ? {cron, email} : undefined, }) if (error) { @@ -116,7 +116,7 @@ onMount(() => { if (!canSendPushNotifications()) { - channel = "email" + room = "email" } }) @@ -136,14 +136,14 @@

Alert Type*

{/snippet} {#snippet input()} - {/snippet} {/if} - {#if channel === "email"} + {#if room === "email"} {#snippet label()}

Email Address*

diff --git a/src/app/components/AlertItem.svelte b/src/app/components/AlertItem.svelte index 4adab9c4..d83035dc 100644 --- a/src/app/components/AlertItem.svelte +++ b/src/app/components/AlertItem.svelte @@ -17,14 +17,14 @@ const {alert}: Props = $props() const cron = $derived(getTagValue("cron", alert.tags)) - const channel = $derived(getTagValue("channel", alert.tags)) + const room = $derived(getTagValue("room", alert.tags)) const feeds = $derived(getTagValues("feed", alert.tags)) const description = $derived( getTagValue("description", alert.tags) || [ `${cron?.endsWith("1") ? "Weekly" : "Daily"} alert for events`, displayFeeds(feeds.map(parseJson)), - `sent via ${channel}.`, + `sent via ${room}.`, ].join(" "), ) diff --git a/src/app/components/Alerts.svelte b/src/app/components/Alerts.svelte index 7ef417e1..56622c31 100644 --- a/src/app/components/Alerts.svelte +++ b/src/app/components/Alerts.svelte @@ -24,11 +24,11 @@ type Props = { url?: string - channel?: string + room?: string hideSpaceField?: boolean } - const {url = "", channel = "push", hideSpaceField = false}: Props = $props() + const {url = "", room = "push", hideSpaceField = false}: Props = $props() const dmStatus = $derived($dmAlert ? deriveAlertStatus(getAddress($dmAlert.event)) : undefined) @@ -46,7 +46,7 @@ }), ) - const startAlert = () => pushModal(AlertAdd, {url, channel, hideSpaceField}) + const startAlert = () => pushModal(AlertAdd, {url, room, hideSpaceField}) const uncheckDmAlert = async (message: string) => { await sleep(100) diff --git a/src/app/components/CalendarEventActions.svelte b/src/app/components/CalendarEventActions.svelte index 1d6979c7..92d094ff 100644 --- a/src/app/components/CalendarEventActions.svelte +++ b/src/app/components/CalendarEventActions.svelte @@ -5,7 +5,7 @@ import Icon from "@lib/components/Icon.svelte" import Button from "@lib/components/Button.svelte" import Link from "@lib/components/Link.svelte" - import ChannelName from "@app/components/ChannelName.svelte" + import RoomName from "@app/components/RoomName.svelte" import ReactionSummary from "@app/components/ReactionSummary.svelte" import ThunkStatusOrDeleted from "@app/components/ThunkStatusOrDeleted.svelte" import EventActivity from "@app/components/EventActivity.svelte" @@ -41,7 +41,7 @@
{#if h && showRoom} - Posted in # + Posted in # {/if} diff --git a/src/app/components/CalendarEventItem.svelte b/src/app/components/CalendarEventItem.svelte index 5dfb2052..503b9e51 100644 --- a/src/app/components/CalendarEventItem.svelte +++ b/src/app/components/CalendarEventItem.svelte @@ -5,7 +5,7 @@ import CalendarEventActions from "@app/components/CalendarEventActions.svelte" import CalendarEventHeader from "@app/components/CalendarEventHeader.svelte" import ProfileLink from "@app/components/ProfileLink.svelte" - import ChannelLink from "@app/components/ChannelLink.svelte" + import RoomLink from "@app/components/RoomLink.svelte" import {makeCalendarPath} from "@app/util/routes" type Props = { @@ -24,7 +24,7 @@ Posted by {#if h} - in + in {/if} diff --git a/src/app/components/ChannelName.svelte b/src/app/components/ChannelName.svelte deleted file mode 100644 index 246ce720..00000000 --- a/src/app/components/ChannelName.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - -{$channelsById.get(makeChannelId(url, h))?.name || h} diff --git a/src/app/components/ConversationCard.svelte b/src/app/components/ConversationCard.svelte index 9701577f..32dc8d57 100644 --- a/src/app/components/ConversationCard.svelte +++ b/src/app/components/ConversationCard.svelte @@ -8,7 +8,7 @@ import ProfileCircle from "@app/components/ProfileCircle.svelte" import ProfileCircles from "@app/components/ProfileCircles.svelte" import {goToEvent} from "@app/util/routes" - import {displayChannel} from "@app/core/state" + import {displayRoom} from "@app/core/state" type Props = { url: string @@ -30,7 +30,7 @@
{#if h} - #{displayChannel(url, h)} + #{displayRoom(url, h)} {/if} diff --git a/src/app/components/EventShare.svelte b/src/app/components/EventShare.svelte index 2e0abe99..5e52b043 100644 --- a/src/app/components/EventShare.svelte +++ b/src/app/components/EventShare.svelte @@ -9,8 +9,8 @@ import Button from "@lib/components/Button.svelte" import ModalHeader from "@lib/components/ModalHeader.svelte" import ModalFooter from "@lib/components/ModalFooter.svelte" - import ChannelName from "@app/components/ChannelName.svelte" - import {channelsByUrl} from "@app/core/state" + import RoomName from "@app/components/RoomName.svelte" + import {roomsByUrl} from "@app/core/state" import {makeRoomPath} from "@app/util/routes" const {url, noun, event}: {url: string; noun: string; event: TrustedEvent} = $props() @@ -39,14 +39,14 @@ {/snippet}
- {#each $channelsByUrl.get(url) || [] as channel (channel.h)} + {#each $roomsByUrl.get(url) || [] as room (room.h)} {/each}
diff --git a/src/app/components/GoalActions.svelte b/src/app/components/GoalActions.svelte index 88d660c7..33202647 100644 --- a/src/app/components/GoalActions.svelte +++ b/src/app/components/GoalActions.svelte @@ -6,7 +6,7 @@ import ThunkStatusOrDeleted from "@app/components/ThunkStatusOrDeleted.svelte" import EventActivity from "@app/components/EventActivity.svelte" import EventActions from "@app/components/EventActions.svelte" - import ChannelName from "@app/components/ChannelName.svelte" + import RoomName from "@app/components/RoomName.svelte" import {publishDelete, publishReaction, canEnforceNip70} from "@app/core/commands" import {makeGoalPath, makeSpacePath} from "@app/util/routes" @@ -33,7 +33,7 @@
{#if h && showRoom} - Posted in # + Posted in # {/if} diff --git a/src/app/components/GoalItem.svelte b/src/app/components/GoalItem.svelte index 07af75a7..a8ad3007 100644 --- a/src/app/components/GoalItem.svelte +++ b/src/app/components/GoalItem.svelte @@ -6,7 +6,7 @@ import ProfileLink from "@app/components/ProfileLink.svelte" import GoalActions from "@app/components/GoalActions.svelte" import GoalSummary from "@app/components/GoalSummary.svelte" - import ChannelLink from "@app/components/ChannelLink.svelte" + import RoomLink from "@app/components/RoomLink.svelte" import {makeGoalPath} from "@app/util/routes" type Props = { @@ -33,7 +33,7 @@ Posted by {#if h} - in + in {/if} diff --git a/src/app/components/MenuSpace.svelte b/src/app/components/MenuSpace.svelte index 9db7c971..c5360b45 100644 --- a/src/app/components/MenuSpace.svelte +++ b/src/app/components/MenuSpace.svelte @@ -98,7 +98,7 @@ const manageAlerts = () => { const component = hasAlerts ? Alerts : AlertAdd - const params = {url, channel: "push", hideSpaceField: true} + const params = {url, room: "push", hideSpaceField: true} pushModal(component, params, {replaceState}) } diff --git a/src/app/components/MenuSpaceRoomItem.svelte b/src/app/components/MenuSpaceRoomItem.svelte index ae468cdf..c392f8da 100644 --- a/src/app/components/MenuSpaceRoomItem.svelte +++ b/src/app/components/MenuSpaceRoomItem.svelte @@ -1,6 +1,6 @@
diff --git a/src/app/components/ChannelItemEmojiButton.svelte b/src/app/components/RoomItemEmojiButton.svelte similarity index 100% rename from src/app/components/ChannelItemEmojiButton.svelte rename to src/app/components/RoomItemEmojiButton.svelte diff --git a/src/app/components/ChannelItemMenu.svelte b/src/app/components/RoomItemMenu.svelte similarity index 100% rename from src/app/components/ChannelItemMenu.svelte rename to src/app/components/RoomItemMenu.svelte diff --git a/src/app/components/ChannelItemMenuButton.svelte b/src/app/components/RoomItemMenuButton.svelte similarity index 91% rename from src/app/components/ChannelItemMenuButton.svelte rename to src/app/components/RoomItemMenuButton.svelte index 9b7a95ac..4cb321be 100644 --- a/src/app/components/ChannelItemMenuButton.svelte +++ b/src/app/components/RoomItemMenuButton.svelte @@ -5,7 +5,7 @@ import Icon from "@lib/components/Icon.svelte" import Button from "@lib/components/Button.svelte" import Tippy from "@lib/components/Tippy.svelte" - import ChannelItemMenu from "@app/components/ChannelItemMenu.svelte" + import RoomItemMenu from "@app/components/RoomItemMenu.svelte" const {url, event} = $props() @@ -34,7 +34,7 @@
diff --git a/src/app/components/ChannelItemMenuMobile.svelte b/src/app/components/RoomItemMenuMobile.svelte similarity index 96% rename from src/app/components/ChannelItemMenuMobile.svelte rename to src/app/components/RoomItemMenuMobile.svelte index 9574d077..168bdda2 100644 --- a/src/app/components/ChannelItemMenuMobile.svelte +++ b/src/app/components/RoomItemMenuMobile.svelte @@ -17,7 +17,7 @@ import EventDeleteConfirm from "@app/components/EventDeleteConfirm.svelte" import {ENABLE_ZAPS} from "@app/core/state" import {publishReaction, canEnforceNip70} from "@app/core/commands" - import {getChannelItemPath} from "@app/util/routes" + import {getRoomItemPath} from "@app/util/routes" import {pushModal} from "@app/util/modal" type Props = { @@ -28,7 +28,7 @@ const {url, event, reply}: Props = $props() - const path = getChannelItemPath(url, event) + const path = getRoomItemPath(url, event) const shouldProtect = canEnforceNip70(url) diff --git a/src/app/components/ChannelItemRemoveMember.svelte b/src/app/components/RoomItemRemoveMember.svelte similarity index 100% rename from src/app/components/ChannelItemRemoveMember.svelte rename to src/app/components/RoomItemRemoveMember.svelte diff --git a/src/app/components/ChannelItemZapButton.svelte b/src/app/components/RoomItemZapButton.svelte similarity index 100% rename from src/app/components/ChannelItemZapButton.svelte rename to src/app/components/RoomItemZapButton.svelte diff --git a/src/app/components/ChannelLink.svelte b/src/app/components/RoomLink.svelte similarity index 82% rename from src/app/components/ChannelLink.svelte rename to src/app/components/RoomLink.svelte index b56fbe5d..ce283d34 100644 --- a/src/app/components/ChannelLink.svelte +++ b/src/app/components/RoomLink.svelte @@ -1,7 +1,7 @@ - # + # diff --git a/src/app/components/RoomName.svelte b/src/app/components/RoomName.svelte new file mode 100644 index 00000000..29dce01d --- /dev/null +++ b/src/app/components/RoomName.svelte @@ -0,0 +1,7 @@ + + +{$roomsById.get(makeRoomId(url, h))?.name || h} diff --git a/src/app/components/ChannelNameWithImage.svelte b/src/app/components/RoomNameWithImage.svelte similarity index 66% rename from src/app/components/ChannelNameWithImage.svelte rename to src/app/components/RoomNameWithImage.svelte index f86f646d..0ffc80e3 100644 --- a/src/app/components/ChannelNameWithImage.svelte +++ b/src/app/components/RoomNameWithImage.svelte @@ -2,8 +2,8 @@ import Lock from "@assets/icons/lock-keyhole.svg?dataurl" import Hashtag from "@assets/icons/hashtag.svg?dataurl" import Icon from "@lib/components/Icon.svelte" - import ChannelName from "@app/components/ChannelName.svelte" - import {deriveChannel} from "@app/core/state" + import RoomName from "@app/components/RoomName.svelte" + import {deriveRoom} from "@app/core/state" interface Props { url: any @@ -12,21 +12,21 @@ const {url, h}: Props = $props() - const channel = deriveChannel(url, h) + const room = deriveRoom(url, h) -{#if $channel?.picture} - {@const src = $channel.picture} +{#if $room?.picture} + {@const src = $room.picture} {#if src.match("\.(png|svg)$") || src.match("image/(png|svg)")} {:else} Room icon {/if} -{:else if $channel?.closed || $channel?.private} +{:else if $room?.closed || $room?.private} {:else} {/if}
- +
diff --git a/src/app/components/ThreadActions.svelte b/src/app/components/ThreadActions.svelte index 9a852dea..a37724fb 100644 --- a/src/app/components/ThreadActions.svelte +++ b/src/app/components/ThreadActions.svelte @@ -2,7 +2,7 @@ import type {TrustedEvent, EventContent} from "@welshman/util" import {getTagValue} from "@welshman/util" import Link from "@lib/components/Link.svelte" - import ChannelName from "@app/components/ChannelName.svelte" + import RoomName from "@app/components/RoomName.svelte" import ReactionSummary from "@app/components/ReactionSummary.svelte" import ThunkStatusOrDeleted from "@app/components/ThunkStatusOrDeleted.svelte" import EventActivity from "@app/components/EventActivity.svelte" @@ -33,7 +33,7 @@
{#if h && showRoom} - Posted in # + Posted in # {/if} diff --git a/src/app/components/ThreadItem.svelte b/src/app/components/ThreadItem.svelte index c14a8b8f..2e15ef35 100644 --- a/src/app/components/ThreadItem.svelte +++ b/src/app/components/ThreadItem.svelte @@ -6,7 +6,7 @@ import Content from "@app/components/Content.svelte" import ProfileLink from "@app/components/ProfileLink.svelte" import ThreadActions from "@app/components/ThreadActions.svelte" - import ChannelLink from "@app/components/ChannelLink.svelte" + import RoomLink from "@app/components/RoomLink.svelte" import {makeThreadPath} from "@app/util/routes" type Props = { @@ -39,7 +39,7 @@ Posted by {#if h} - in + in {/if} diff --git a/src/app/core/state.ts b/src/app/core/state.ts index 95213f7b..39d36a04 100644 --- a/src/app/core/state.ts +++ b/src/app/core/state.ts @@ -530,11 +530,11 @@ export const chatSearch = derived(chats, $chats => }), ) -// Channels +// Rooms export const messages = deriveEvents(repository, {filters: [{kinds: [MESSAGE]}]}) -export type Channel = { +export type Room = { id: string url: string h: string @@ -546,17 +546,17 @@ export type Channel = { about?: string } -export const makeChannelId = (url: string, h: string) => `${url}'${h}` +export const makeRoomId = (url: string, h: string) => `${url}'${h}` -export const splitChannelId = (id: string) => id.split("'") +export const splitRoomId = (id: string) => id.split("'") export const hasNip29 = (relay?: RelayProfile) => relay?.supported_nips?.map?.(String)?.includes?.("29") -export const channels = derived( +export const rooms = derived( [deriveEvents(repository, {filters: [{kinds: [ROOM_META, ROOM_DELETE]}]}), getUrlsForEvent], ([$events, $getUrlsForEvent]) => { - const result = new Map() + const result = new Map() for (const event of sortBy(e => e.created_at, $events)) { for (const url of $getUrlsForEvent(event.id)) { @@ -565,7 +565,7 @@ export const channels = derived( const h = meta.d if (h) { - const id = makeChannelId(url, h) + const id = makeRoomId(url, h) result.set(id, { id, @@ -583,7 +583,7 @@ export const channels = derived( if (event.kind === ROOM_DELETE) { for (const h of getTagValues("h", event.tags)) { - result.delete(makeChannelId(url, h)) + result.delete(makeRoomId(url, h)) } } } @@ -593,18 +593,18 @@ export const channels = derived( }, ) -export const channelsByUrl = derived(channels, $channels => groupBy(c => c.url, $channels)) +export const roomsByUrl = derived(rooms, $rooms => groupBy(c => c.url, $rooms)) export const { - indexStore: channelsById, - deriveItem: _deriveChannel, - loadItem: _loadChannel, + indexStore: roomsById, + deriveItem: _deriveRoom, + loadItem: _loadRoom, } = collection({ - name: "channels", - store: channels, - getKey: channel => channel.id, + name: "rooms", + store: rooms, + getKey: room => room.id, load: async (id: string) => { - const [url, h] = splitChannelId(id) + const [url, h] = splitRoomId(id) await load({ relays: [url], @@ -613,12 +613,12 @@ export const { }, }) -export const deriveChannel = (url: string, h: string) => _deriveChannel(makeChannelId(url, h)) +export const deriveRoom = (url: string, h: string) => _deriveRoom(makeRoomId(url, h)) -export const displayChannel = (url: string, h: string) => - channelsById.get().get(makeChannelId(url, h))?.name || h +export const displayRoom = (url: string, h: string) => + roomsById.get().get(makeRoomId(url, h))?.name || h -export const roomComparator = (url: string) => (h: string) => displayChannel(url, h).toLowerCase() +export const roomComparator = (url: string) => (h: string) => displayRoom(url, h).toLowerCase() // User space/room selections @@ -701,11 +701,11 @@ export const loadUserGroupSelections = makeUserLoader(loadGroupSelections) export const userSpaceUrls = derived(userGroupSelections, getSpaceUrlsFromGroupSelections) export const deriveUserRooms = (url: string) => - derived([userGroupSelections, channelsById], ([$userGroupSelections, $channelsById]) => { + derived([userGroupSelections, roomsById], ([$userGroupSelections, $roomsById]) => { const rooms: string[] = [] for (const h of getSpaceRoomsFromGroupSelections(url, $userGroupSelections)) { - if ($channelsById.has(makeChannelId(url, h))) { + if ($roomsById.has(makeRoomId(url, h))) { rooms.push(h) } } @@ -714,10 +714,10 @@ export const deriveUserRooms = (url: string) => }) export const deriveOtherRooms = (url: string) => - derived([deriveUserRooms(url), channelsByUrl], ([$userRooms, $channelsByUrl]) => { + derived([deriveUserRooms(url), roomsByUrl], ([$userRooms, $roomsByUrl]) => { const rooms: string[] = [] - for (const {h} of $channelsByUrl.get(url) || []) { + for (const {h} of $roomsByUrl.get(url) || []) { if (!$userRooms.includes(h)) { rooms.push(h) } diff --git a/src/app/util/routes.ts b/src/app/util/routes.ts index f6fc1ac2..938960ef 100644 --- a/src/app/util/routes.ts +++ b/src/app/util/routes.ts @@ -149,7 +149,7 @@ export const getEventPath = async (event: TrustedEvent, urls: string[]) => { return entityLink(nip19.neventEncode({id: event.id, relays: urls})) } -export const getChannelItemPath = (url: string, event: TrustedEvent) => { +export const getRoomItemPath = (url: string, event: TrustedEvent) => { switch (event.kind) { case THREAD: return makeThreadPath(url, event.id) diff --git a/src/routes/spaces/[relay]/[h]/+page.svelte b/src/routes/spaces/[relay]/[h]/+page.svelte index 047bb50a..12967873 100644 --- a/src/routes/spaces/[relay]/[h]/+page.svelte +++ b/src/routes/spaces/[relay]/[h]/+page.svelte @@ -32,19 +32,19 @@ import ThunkToast from "@app/components/ThunkToast.svelte" import MenuSpaceButton from "@app/components/MenuSpaceButton.svelte" import RoomEdit from "@app/components/RoomEdit.svelte" - import ChannelName from "@app/components/ChannelName.svelte" - import ChannelItem from "@app/components/ChannelItem.svelte" - import ChannelItemAddMember from "@src/app/components/ChannelItemAddMember.svelte" - import ChannelItemRemoveMember from "@src/app/components/ChannelItemRemoveMember.svelte" - import ChannelCompose from "@app/components/ChannelCompose.svelte" - import ChannelComposeEdit from "@src/app/components/ChannelComposeEdit.svelte" - import ChannelComposeParent from "@app/components/ChannelComposeParent.svelte" + import RoomName from "@app/components/RoomName.svelte" + import RoomItem from "@app/components/RoomItem.svelte" + import RoomItemAddMember from "@src/app/components/RoomItemAddMember.svelte" + import RoomItemRemoveMember from "@src/app/components/RoomItemRemoveMember.svelte" + import RoomCompose from "@app/components/RoomCompose.svelte" + import RoomComposeEdit from "@src/app/components/RoomComposeEdit.svelte" + import RoomComposeParent from "@app/components/RoomComposeParent.svelte" import { deriveUserRooms, userSettingsValues, decodeRelay, deriveUserRoomMembershipStatus, - deriveChannel, + deriveRoom, MembershipStatus, PROTECTED, MESSAGE_KINDS, @@ -67,7 +67,7 @@ const mounted = now() const lastChecked = $checked[$page.url.pathname] const url = decodeRelay(relay) - const channel = deriveChannel(url, h) + const room = deriveRoom(url, h) const shouldProtect = canEnforceNip70(url) const userRooms = deriveUserRooms(url) const userIsAdmin = deriveUserIsRoomAdmin(url, h) @@ -204,7 +204,7 @@ let showScrollButton = $state(false) let cleanup: () => void let events: Readable = $state(readable([])) - let compose: ChannelCompose | undefined = $state() + let compose: RoomCompose | undefined = $state() let eventToEdit: TrustedEvent | undefined = $state() const elements = $derived.by(() => { @@ -334,7 +334,7 @@ {/snippet} {#snippet title()} - + {/snippet} {#snippet action()} @@ -386,7 +386,7 @@
- {#if $channel?.private && $membershipStatus !== MembershipStatus.Granted} + {#if $room?.private && $membershipStatus !== MembershipStatus.Granted}

You aren't currently a member of this room.

@@ -423,12 +423,12 @@ {:else} {@const event = $state.snapshot(value as TrustedEvent)} {#if event.kind === ROOM_ADD_MEMBER} - + {:else if event.kind === ROOM_REMOVE_MEMBER} - + {:else}
-
- {#if $channel?.private && $membershipStatus !== MembershipStatus.Granted} + {#if $room?.private && $membershipStatus !== MembershipStatus.Granted} - {:else if $channel?.closed && $membershipStatus !== MembershipStatus.Granted} + {:else if $room?.closed && $membershipStatus !== MembershipStatus.Granted}

Only members are allowed to post to this room.

{#if $membershipStatus === MembershipStatus.Pending} @@ -474,17 +474,17 @@ {:else}
{#if parent} - + {/if} {#if share} - + {/if} {#if eventToEdit} - + {/if}
{#key eventToEdit} - void let events: Readable = $state(readable([])) - let compose: ChannelCompose | undefined = $state() + let compose: RoomCompose | undefined = $state() let eventToEdit: TrustedEvent | undefined = $state() const elements = $derived.by(() => { @@ -274,12 +274,12 @@ {:else} {@const event = $state.snapshot(value as TrustedEvent)} {#if event.kind === RELAY_ADD_MEMBER} - + {:else if event.kind === RELAY_REMOVE_MEMBER} - + {:else}
-
{#if parent} - + {/if} {#if share} - + {/if} {#if eventToEdit} - + {/if}
{#key eventToEdit} -