diff --git a/src/app/components/SpaceMenu.svelte b/src/app/components/SpaceMenu.svelte
index dccff979..a4f402fc 100644
--- a/src/app/components/SpaceMenu.svelte
+++ b/src/app/components/SpaceMenu.svelte
@@ -47,6 +47,8 @@
deriveSpaceMembers,
deriveUserRooms,
deriveOtherRooms,
+ deriveRoomsWithLivekit,
+ deriveRoomsNoText,
userSpaceUrls,
hasNip29,
deriveUserCanCreateRoom,
@@ -55,8 +57,6 @@
notificationSettings,
deriveShouldNotify,
displayRoom,
- roomHasLivekit,
- roomIsNoText,
} from "@app/core/state"
import {setSpaceNotifications} from "@app/core/commands"
import {pushModal} from "@app/util/modal"
@@ -72,6 +72,8 @@
const calendarPath = makeSpacePath(url, "calendar")
const userRooms = deriveUserRooms(url)
const otherRooms = deriveOtherRooms(url)
+ const roomsWithLivekit = deriveRoomsWithLivekit(url)
+ const roomsNoText = deriveRoomsNoText(url)
const members = deriveSpaceMembers(url)
const userIsAdmin = deriveUserIsSpaceAdmin(url)
const reports = deriveEventsForUrl(url, [{kinds: [REPORT]}])
@@ -260,10 +262,10 @@
Your Rooms
{/if}
{#each $userRooms as h (h)}
- {#if !roomIsNoText(url, h)}
+ {#if !$roomsNoText.has(h)}
{/if}
- {#if roomHasLivekit(url, h)}
+ {#if $roomsWithLivekit.has(h)}
{/if}
{/each}
@@ -284,10 +286,10 @@
{/if}
{#each $roomSearch.searchValues(term) as h (h)}
- {#if !roomIsNoText(url, h)}
+ {#if !$roomsNoText.has(h)}
{/if}
- {#if roomHasLivekit(url, h)}
+ {#if $roomsWithLivekit.has(h)}
{/if}
{/each}
diff --git a/src/app/core/state.ts b/src/app/core/state.ts
index 8b25bf7e..365bc63b 100644
--- a/src/app/core/state.ts
+++ b/src/app/core/state.ts
@@ -663,6 +663,28 @@ export const displayRoom = (url: string, h: string) => getRoom(makeRoomId(url, h
export const roomComparator = (url: string) => (h: string) => displayRoom(url, h).toLowerCase()
+export const deriveRoomsWithLivekit = (url: string) =>
+ derived(roomsById, $roomsById => {
+ const set = new Set()
+ for (const room of $roomsById.values()) {
+ if (room.url === url && room.event?.tags?.some(t => t[0] === "livekit")) {
+ set.add(room.h)
+ }
+ }
+ return set
+ })
+
+export const deriveRoomsNoText = (url: string) =>
+ derived(roomsById, $roomsById => {
+ const set = new Set()
+ for (const room of $roomsById.values()) {
+ if (room.url === url && room.event?.tags?.some(t => t[0] === "no-text")) {
+ set.add(room.h)
+ }
+ }
+ return set
+ })
+
export const roomHasLivekit = (url: string, h: string) => {
const room = getRoom(makeRoomId(url, h))
return room?.event?.tags?.some(t => t[0] === "livekit") ?? false