1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-22 11:18:20 +02:00
unleash.unleash/frontend/src/hooks/api/getters/useConnectedInstances/useConnectedInstances.ts
2025-09-19 11:24:17 +02:00

46 lines
1.2 KiB
TypeScript

import type { SWRConfiguration } from 'swr';
import { formatApiPath } from 'utils/formatPath';
import handleErrorResponses from '../httpErrorResponseHandler.js';
import { useConditionalSWR } from '../useConditionalSWR/useConditionalSWR.js';
type ConnectedInstancesSchema = {
instances: {
instanceId: string;
sdk: string;
clientIp: string;
lastSeen: string;
}[];
};
export const useConnectedInstances = (
application: string,
environment?: string,
options: SWRConfiguration = {},
) => {
const encodedApplication = encodeURIComponent(application);
const path = formatApiPath(
`api/admin/metrics/instances/${encodedApplication}/environment/${environment}`,
);
const { data, error } = useConditionalSWR<ConnectedInstancesSchema>(
Boolean(environment),
{ instances: [] },
path,
fetcher,
options,
);
return {
data: data || { instances: [] },
error,
loading: !error && !data,
};
};
const fetcher = async (path: string): Promise<ConnectedInstancesSchema> => {
const res = await fetch(path).then(
handleErrorResponses('Connected instances'),
);
const data = await res.json();
return data;
};