27 lines
1,010 B
TypeScript
27 lines
1,010 B
TypeScript
import useSWR, { ConfigInterface } from 'swr';
|
|
import http, { FractalResponseList } from '@/api/http';
|
|
import { rawDataToServerEggVariable } from '@/api/transformers';
|
|
import { ServerEggVariable } from '@/api/server/types';
|
|
|
|
interface Response {
|
|
invocation: string;
|
|
variables: ServerEggVariable[];
|
|
dockerImages: Record<string, string>;
|
|
}
|
|
|
|
export default (uuid: string, initialData?: Response | null, config?: ConfigInterface<Response>) =>
|
|
useSWR(
|
|
[uuid, '/startup'],
|
|
async (): Promise<Response> => {
|
|
const { data } = await http.get(`/api/client/servers/${uuid}/startup`);
|
|
|
|
const variables = ((data as FractalResponseList).data || []).map(rawDataToServerEggVariable);
|
|
|
|
return {
|
|
variables,
|
|
invocation: data.meta.startup_command,
|
|
dockerImages: data.meta.docker_images || {},
|
|
};
|
|
},
|
|
{ initialData: initialData || undefined, errorRetryCount: 3, ...(config || {}) }
|
|
);
|