56 lines · 1.8 KB · TypeScript
RawDownload
import { useAtomValue } from "@effect/atom-react";import {  connectionCatalogDisplayUrl,  type EnvironmentPresentation as BaseEnvironmentPresentation,} from "@t3tools/client-runtime/connection";import type { EnvironmentId } from "@t3tools/contracts";import { useMemo } from "react"; import { environmentCatalog } from "../connection/catalog";import { environmentPresentations } from "./presentation";import { useEnvironmentQuery } from "./query"; export interface EnvironmentPresentation extends BaseEnvironmentPresentation {  readonly environmentId: EnvironmentId;  readonly label: string;  readonly displayUrl: string | null;  readonly relayManaged: boolean;} export function projectEnvironmentPresentation(  environmentId: EnvironmentId,  presentation: BaseEnvironmentPresentation,): EnvironmentPresentation {  return {    ...presentation,    environmentId,    label: presentation.entry.target.label,    displayUrl: connectionCatalogDisplayUrl(presentation.entry),    relayManaged: presentation.entry.target._tag === "RelayConnectionTarget",  };} export function useEnvironments() {  const catalog = useAtomValue(environmentCatalog.catalogValueAtom);  const networkStatus = useAtomValue(environmentCatalog.networkStatusValueAtom);  const presentationById = useAtomValue(environmentPresentations.presentationsAtom);   const environments = useMemo(    () =>      [...presentationById.entries()].map(([environmentId, presentation]) =>        projectEnvironmentPresentation(environmentId, presentation),      ),    [presentationById],  );   return {    isReady: catalog.isReady,    networkStatus,    environments,    presentationById,  };} export function useEnvironmentConnectionState(environmentId: EnvironmentId) {  return useEnvironmentQuery(environmentCatalog.stateAtom(environmentId));}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t