Limit remote overlay to single QR

This commit is contained in:
Shantur Rathore
2025-12-03 21:54:11 +00:00
parent 94cb741c7f
commit b0fd63ead5

View File

@@ -18,7 +18,7 @@ export function RemoteAccessOverlay(props: RemoteAccessOverlayProps) {
const [meta, setMeta] = createSignal<ServerMeta | null>(null) const [meta, setMeta] = createSignal<ServerMeta | null>(null)
const [loading, setLoading] = createSignal(false) const [loading, setLoading] = createSignal(false)
const [qrCodes, setQrCodes] = createSignal<Record<string, string>>({}) const [qrCodes, setQrCodes] = createSignal<Record<string, string>>({})
const [expanded, setExpanded] = createSignal<Set<string>>(new Set()) const [expandedUrl, setExpandedUrl] = createSignal<string | null>(null)
const [error, setError] = createSignal<string | null>(null) const [error, setError] = createSignal<string | null>(null)
const addresses = createMemo<NetworkAddress[]>(() => meta()?.addresses ?? []) const addresses = createMemo<NetworkAddress[]>(() => meta()?.addresses ?? [])
@@ -45,14 +45,11 @@ export function RemoteAccessOverlay(props: RemoteAccessOverlayProps) {
}) })
const toggleExpanded = async (url: string) => { const toggleExpanded = async (url: string) => {
const next = new Set(expanded()) if (expandedUrl() === url) {
if (next.has(url)) { setExpandedUrl(null)
next.delete(url)
setExpanded(next)
return return
} }
next.add(url) setExpandedUrl(url)
setExpanded(next)
if (!qrCodes()[url]) { if (!qrCodes()[url]) {
try { try {
const dataUrl = await toDataURL(url, { margin: 1, scale: 4 }) const dataUrl = await toDataURL(url, { margin: 1, scale: 4 })
@@ -184,7 +181,7 @@ export function RemoteAccessOverlay(props: RemoteAccessOverlayProps) {
<div class="remote-address-list"> <div class="remote-address-list">
<For each={addresses()}> <For each={addresses()}>
{(address) => { {(address) => {
const expandedState = () => expanded().has(address.url) const expandedState = () => expandedUrl() === address.url
const qr = () => qrCodes()[address.url] const qr = () => qrCodes()[address.url]
return ( return (
<div class="remote-address"> <div class="remote-address">