Make voice rooms in sidebar reactive
This commit is contained in:
@@ -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 @@
|
||||
<SecondaryNavHeader>Your Rooms</SecondaryNavHeader>
|
||||
{/if}
|
||||
{#each $userRooms as h (h)}
|
||||
{#if !roomIsNoText(url, h)}
|
||||
{#if !$roomsNoText.has(h)}
|
||||
<SpaceMenuRoomItem notify {replaceState} {url} {h} />
|
||||
{/if}
|
||||
{#if roomHasLivekit(url, h)}
|
||||
{#if $roomsWithLivekit.has(h)}
|
||||
<VoiceRoomItem {url} {h} />
|
||||
{/if}
|
||||
{/each}
|
||||
@@ -284,10 +286,10 @@
|
||||
</label>
|
||||
{/if}
|
||||
{#each $roomSearch.searchValues(term) as h (h)}
|
||||
{#if !roomIsNoText(url, h)}
|
||||
{#if !$roomsNoText.has(h)}
|
||||
<SpaceMenuRoomItem {replaceState} {url} {h} />
|
||||
{/if}
|
||||
{#if roomHasLivekit(url, h)}
|
||||
{#if $roomsWithLivekit.has(h)}
|
||||
<VoiceRoomItem {url} {h} />
|
||||
{/if}
|
||||
{/each}
|
||||
|
||||
@@ -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<string>()
|
||||
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<string>()
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user