diff options
Diffstat (limited to 'packages/app/src/components/server')
| -rw-r--r-- | packages/app/src/components/server/server-row.tsx | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/packages/app/src/components/server/server-row.tsx b/packages/app/src/components/server/server-row.tsx index b43c07882..f93bdb33b 100644 --- a/packages/app/src/components/server/server-row.tsx +++ b/packages/app/src/components/server/server-row.tsx @@ -1,5 +1,5 @@ import { Tooltip } from "@opencode-ai/ui/tooltip" -import { JSXElement, ParentProps, Show, createEffect, createSignal, onCleanup, onMount } from "solid-js" +import { JSXElement, ParentProps, Show, createEffect, createMemo, createSignal, onCleanup, onMount } from "solid-js" import { serverDisplayName } from "@/context/server" import type { ServerHealth } from "@/utils/server-health" @@ -17,6 +17,7 @@ export function ServerRow(props: ServerRowProps) { const [truncated, setTruncated] = createSignal(false) let nameRef: HTMLSpanElement | undefined let versionRef: HTMLSpanElement | undefined + const name = createMemo(() => serverDisplayName(props.url)) const check = () => { const nameTruncated = nameRef ? nameRef.scrollWidth > nameRef.clientWidth : false @@ -25,25 +26,24 @@ export function ServerRow(props: ServerRowProps) { } createEffect(() => { + name() props.url props.status?.version - if (typeof requestAnimationFrame === "function") { - requestAnimationFrame(check) - return - } - check() + queueMicrotask(check) }) onMount(() => { check() - if (typeof window === "undefined") return - window.addEventListener("resize", check) - onCleanup(() => window.removeEventListener("resize", check)) + if (typeof ResizeObserver !== "function") return + const observer = new ResizeObserver(check) + if (nameRef) observer.observe(nameRef) + if (versionRef) observer.observe(versionRef) + onCleanup(() => observer.disconnect()) }) const tooltipValue = () => ( <span class="flex items-center gap-2"> - <span>{serverDisplayName(props.url)}</span> + <span>{name()}</span> <Show when={props.status?.version}> <span class="text-text-invert-base">{props.status?.version}</span> </Show> @@ -62,7 +62,7 @@ export function ServerRow(props: ServerRowProps) { }} /> <span ref={nameRef} class={props.nameClass ?? "truncate"}> - {serverDisplayName(props.url)} + {name()} </span> <Show when={props.status?.version}> <span ref={versionRef} class={props.versionClass ?? "text-text-weak text-14-regular truncate"}> |
