41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { useQuery } from "@tanstack/react-query";
|
|
import { getDesktopDaemonStatus, shouldUseDesktopDaemon } from "@/desktop/daemon/desktop-daemon";
|
|
|
|
const DESKTOP_DAEMON_SERVER_ID_QUERY_KEY = ["desktop-daemon-server-id"] as const;
|
|
|
|
interface DesktopDaemonServerIdResult {
|
|
serverId: string | null;
|
|
}
|
|
|
|
async function loadDesktopDaemonServerId(): Promise<DesktopDaemonServerIdResult> {
|
|
const status = await getDesktopDaemonStatus();
|
|
const serverId = status.serverId.trim();
|
|
return {
|
|
serverId: serverId.length > 0 ? serverId : null,
|
|
};
|
|
}
|
|
|
|
export function useIsLocalDaemon(serverId: string): boolean {
|
|
const normalizedServerId = serverId.trim();
|
|
const isDesktopApp = shouldUseDesktopDaemon();
|
|
|
|
const query = useQuery({
|
|
queryKey: DESKTOP_DAEMON_SERVER_ID_QUERY_KEY,
|
|
queryFn: loadDesktopDaemonServerId,
|
|
enabled: isDesktopApp,
|
|
staleTime: Infinity,
|
|
gcTime: Infinity,
|
|
refetchInterval: (query) => (query.state.data?.serverId ? false : 1000),
|
|
refetchOnMount: false,
|
|
refetchOnReconnect: false,
|
|
refetchOnWindowFocus: false,
|
|
retry: false,
|
|
});
|
|
|
|
if (!isDesktopApp || normalizedServerId.length === 0) {
|
|
return false;
|
|
}
|
|
|
|
return query.data?.serverId === normalizedServerId;
|
|
}
|