feat: add resource for first login

This commit is contained in:
jialin
2025-12-11 17:50:39 +08:00
parent b38bc8a207
commit 3dbb0de683
11 changed files with 227 additions and 82 deletions
@@ -0,0 +1,92 @@
import { clusterListAtom, workerListAtom } from '@/atoms/models';
import { queryClusterList } from '@/pages/cluster-management/apis';
import { queryWorkersList } from '@/pages/resources/apis';
import { useAtom } from 'jotai';
import { useState } from 'react';
/**
* Currently fetch the cluster list and worker list for checking resource existence.
* If there is no cluster or no worker, introduct the use to create/add them.
* @returns
*/
export default function useClusterList() {
const [clusterList, setClusterList] = useState<
{
label: string;
value: number;
id: number;
state: string;
provider: string;
}[]
>([]);
const [workerList, setWorkerList] = useState<
{
cluster_id: number;
state: string;
label: string;
value: number;
id: number;
labels: { [key: string]: string };
name: string;
}[]
>([]);
const [, setClusterListAtom] = useAtom(clusterListAtom);
const [, setWorkerListAtom] = useAtom(workerListAtom);
const fetchClusterList = async () => {
try {
const res = await queryClusterList({ page: -1 });
const list = res?.items?.map((item: any) => ({
label: item.name,
value: item.id,
id: item.id,
state: item.state,
provider: item.provider
}));
return list;
} catch (error) {
return [];
}
};
const fetchWorkerList = async () => {
try {
const res = await queryWorkersList({ page: -1 });
const list = res?.items?.map((item: any) => ({
cluster_id: item.cluster_id,
state: item.state,
label: item.name,
value: item.id,
id: item.id,
labels: item.labels || {},
name: item.name
}));
return list;
} catch (error) {
return [];
}
};
const fetchAll = async () => {
const [clusters, workers] = await Promise.all([
fetchClusterList(),
fetchWorkerList()
]);
setClusterList(clusters);
setWorkerList(workers);
setClusterListAtom(clusters);
setWorkerListAtom(workers);
return {
hasClusters: clusters.length > 0,
hasWorkers: workers.length > 0
};
};
return {
clusterList,
workerList,
fetchAll,
fetchWorkerList,
fetchClusterList
};
}