42 lines
1.0 KiB
TypeScript
42 lines
1.0 KiB
TypeScript
import { backendOptionsAtom } from '@/atoms/models';
|
|
import { useAtom } from 'jotai';
|
|
import { useEffect } from 'react';
|
|
import { queryBackendList } from '../apis';
|
|
|
|
export default function useQueryBackends() {
|
|
const [backendOptions, setBackendOptions] = useAtom(backendOptionsAtom);
|
|
|
|
const getBackendOptions = async () => {
|
|
try {
|
|
const res = await queryBackendList();
|
|
const list = res?.items?.map((item) => {
|
|
return {
|
|
value: item.backend_name,
|
|
label: item.backend_show_name,
|
|
default_backend_param: item.default_backend_param || [],
|
|
default_version: item.default_version,
|
|
versions: (item.versions || []).map((version) => ({
|
|
label: version,
|
|
value: version
|
|
}))
|
|
};
|
|
});
|
|
if (res?.items) {
|
|
setBackendOptions(list || []);
|
|
}
|
|
} catch (error) {
|
|
// ignore
|
|
setBackendOptions([]);
|
|
}
|
|
};
|
|
|
|
useEffect(() => {
|
|
getBackendOptions();
|
|
}, []);
|
|
|
|
return {
|
|
backendOptions,
|
|
getBackendOptions
|
|
};
|
|
}
|