Address some PR feedback

This commit is contained in:
mplorentz
2026-03-27 13:40:13 -04:00
parent 02da8dc811
commit 54316db039
2 changed files with 31 additions and 48 deletions
+30 -26
View File
@@ -1,7 +1,8 @@
<script lang="ts">
import {derived, get} from "svelte/store"
import {readable} from "svelte/store"
import {fly} from "svelte/transition"
import {goto} from "$app/navigation"
import {page} from "$app/stores"
import {displayRelayUrl} from "@welshman/util"
import Microphone from "@assets/icons/microphone.svg?dataurl"
import MicrophoneOff from "@assets/icons/microphone-off.svg?dataurl"
@@ -11,7 +12,7 @@
import Icon from "@lib/components/Icon.svelte"
import Button from "@lib/components/Button.svelte"
import VoiceRoomJoinDialog from "@app/components/VoiceRoomJoinDialog.svelte"
import {deriveDisplayedRoom, displayRoom, getRoomType, RoomType} from "@app/core/state"
import {decodeRelay, deriveRoom, displayRoom, getRoomType, RoomType} from "@app/core/state"
import {pushModal} from "@app/util/modal"
import {makeRoomPath} from "@app/util/routes"
import {
@@ -24,37 +25,40 @@
cancelJoinVoiceRoom,
} from "@app/voice"
const targetRoom = derived(
[voiceState, currentVoiceRoom, deriveDisplayedRoom],
([voiceState, currentVoiceRoom, routeDisplayedRoom]) => {
if (voiceState === VoiceState.Joining || voiceState === VoiceState.Connected) {
return currentVoiceRoom
}
if (voiceState === VoiceState.Disconnected) {
if (routeDisplayedRoom) {
if (getRoomType(routeDisplayedRoom) === RoomType.Voice) {
return {url: routeDisplayedRoom.url, h: routeDisplayedRoom.h}
}
return undefined
}
return currentVoiceRoom
}
return currentVoiceRoom
},
const {relay, h} = $derived($page.params)
const url = $derived(relay ? decodeRelay(relay) : undefined)
const displayedRoomStore = $derived(
url && h && typeof h === "string" ? deriveRoom(url, h) : readable(undefined),
)
const routeDisplayedRoom = $derived($displayedRoomStore)
const roomName = $derived($targetRoom ? displayRoom($targetRoom.url, $targetRoom.h) : "")
const spaceName = $derived($targetRoom ? displayRelayUrl($targetRoom.url) : "")
const targetRoom = $derived.by(() => {
if ($voiceState === VoiceState.Joining || $voiceState === VoiceState.Connected) {
return $currentVoiceRoom
}
if ($voiceState === VoiceState.Disconnected) {
if (routeDisplayedRoom) {
if (getRoomType(routeDisplayedRoom) === RoomType.Voice) {
return {url: routeDisplayedRoom.url, h: routeDisplayedRoom.h}
}
return undefined
}
return $currentVoiceRoom
}
return $currentVoiceRoom
})
const roomName = $derived(targetRoom ? displayRoom(targetRoom.url, targetRoom.h) : "")
const spaceName = $derived(targetRoom ? displayRelayUrl(targetRoom.url) : "")
const openJoinDialog = async () => {
const target = get(targetRoom)
if (!target) return
await goto(makeRoomPath(target.url, target.h))
pushModal(VoiceRoomJoinDialog, {url: target.url, h: target.h})
if (!targetRoom) return
await goto(makeRoomPath(targetRoom.url, targetRoom.h))
pushModal(VoiceRoomJoinDialog, {url: targetRoom.url, h: targetRoom.h})
}
</script>
{#if $targetRoom}
{#if targetRoom}
<div
in:fly={{y: 60, duration: 350}}
out:fly={{y: 60, duration: 250}}
+1 -22
View File
@@ -1,9 +1,7 @@
import twColors from "tailwindcss/colors"
import {context as pomadeContext} from "@pomade/core"
import {Capacitor} from "@capacitor/core"
import {page} from "$app/stores"
import type {Page} from "@sveltejs/kit"
import {derived, readable, writable, type Readable} from "svelte/store"
import {derived, readable, writable} from "svelte/store"
import * as nip19 from "nostr-tools/nip19"
import {
on,
@@ -809,25 +807,6 @@ export const deriveOtherRooms = (url: string) =>
},
)
export const parseDisplayedRoomParams = (params: Page["params"]): RoomRef | undefined => {
const relay = params.relay
const h = params.h
if (!relay || !h || typeof h !== "string") return undefined
return {url: decodeRelay(relay), h}
}
export const deriveDisplayedRoom = derived(
derived(page, $p => parseDisplayedRoomParams($p.params)),
($p, set) => {
if (!$p) {
set(undefined)
return () => {}
}
const inner = deriveRoom($p.url, $p.h)
return inner.subscribe(set)
},
) as Readable<(RoomMeta & {url: string; id: string}) | undefined>
// Space/room memberships
export const deriveSpaceMembers = (url: string) =>