MCPcopy
hub / github.com/aspen-cloud/triplit / useClient

Function useClient

packages/console/src/components/client-context.tsx:41–76  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

39}
40
41export function useClient() {
42 const { serverClients, selectedClient, setSelectedClient } =
43 React.useContext(ClientContext);
44 const updateClientOptions = useCallback(
45 async (params: { serverUrl?: string; token?: string } | undefined) => {
46 if (!params) {
47 // delete
48 setSelectedClient(undefined);
49 return;
50 }
51 // No changes
52 let { serverUrl, token } = params;
53 serverUrl = serverUrl ?? selectedClient?.serverUrl;
54 token = token ?? selectedClient?.token;
55 if (!serverUrl || !token) {
56 throw new Error('Both serverUrl and token must be provided');
57 }
58 const clientId = createClientId(serverUrl, token);
59 if (!serverClients.has(clientId)) {
60 const serverSchema = await fetchSchema(serverUrl);
61 const newClient = new TriplitClient({
62 token,
63 serverUrl,
64 schema: serverSchema?.collections,
65 roles: serverSchema?.roles,
66 });
67 if (newClient.awaitReady) await newClient.awaitReady;
68 serverClients.set(clientId, newClient);
69 }
70 setSelectedClient(serverClients.get(clientId));
71 },
72 [selectedClient]
73 );
74
75 return [selectedClient, updateClientOptions] as const;
76}

Callers 2

ServerViewerPageFunction · 0.85
ServerViewerFunction · 0.85

Calls 5

createClientIdFunction · 0.85
fetchSchemaFunction · 0.85
hasMethod · 0.80
setMethod · 0.65
getMethod · 0.65

Tested by

no test coverage detected