Files
BrowserOS/packages/browseros-agent/apps/agent/lib/browseros/useBrowserOSProviders.ts
Dani Akash 290ee91a8b Add 'packages/browseros-agent/' from commit '90bd4be3008285bf3825aad3702aff98f872671a'
git-subtree-dir: packages/browseros-agent
git-subtree-mainline: 8f148d0918
git-subtree-split: 90bd4be300
2026-03-13 21:22:09 +05:30

49 lines
1.1 KiB
TypeScript

import { useEffect, useState } from 'react'
import { getAgentServerUrl } from './helpers'
import { useCapabilities } from './useCapabilities'
interface UseAgentServerUrlResult {
baseUrl: string | null
isLoading: boolean
error: Error | null
}
/**
* @public
*/
export function useAgentServerUrl(): UseAgentServerUrlResult {
const { isLoading: capabilitiesLoading } = useCapabilities()
const [baseUrl, setBaseUrl] = useState<string | null>(null)
const [isLoading, setIsLoading] = useState(true)
const [error, setError] = useState<Error | null>(null)
useEffect(() => {
if (capabilitiesLoading) return
let cancelled = false
async function loadUrl() {
try {
const url = await getAgentServerUrl()
if (!cancelled) {
setBaseUrl(url)
setIsLoading(false)
}
} catch (e) {
if (!cancelled) {
setError(e instanceof Error ? e : new Error(String(e)))
setIsLoading(false)
}
}
}
loadUrl()
return () => {
cancelled = true
}
}, [capabilitiesLoading])
return { baseUrl, isLoading: isLoading || capabilitiesLoading, error }
}