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