Files
gpustack-ui/src/pages/gpu-service/instances/hooks/use-create-instance.ts
T
2026-05-25 22:42:02 +08:00

106 lines
2.4 KiB
TypeScript

import { PageAction } from '@/config';
import type { PageActionType } from '@/config/types';
import useBodyScroll from '@/hooks/use-body-scroll';
import { useIntl } from '@umijs/max';
import { useState } from 'react';
import type { ListItem } from '../config/types';
const useCreateInstance = () => {
const intl = useIntl();
const { saveScrollHeight, restoreScrollHeight } = useBodyScroll();
const [openModalStatus, setOpenModalStatus] = useState<{
action: PageActionType;
open: boolean;
title: string;
currentData?: ListItem | null;
width?: number | string;
realAction?: string;
}>({
action: PageAction.CREATE,
title: '',
open: false,
width: undefined,
currentData: null,
realAction: undefined
});
const openModal = (
action: PageActionType,
title: string,
currentData?: ListItem | null,
width?: number | string,
realAction?: string
) => {
setOpenModalStatus({
action,
title,
open: true,
currentData,
width,
realAction
});
saveScrollHeight();
};
const openCreateInstanceModal = () => {
openModal(
PageAction.CREATE,
intl.formatMessage({ id: 'gpuservice.instance.add' }),
null,
'calc(100vw - 220px)'
);
};
const openEditInstanceModal = (row: ListItem) => {
openModal(
PageAction.EDIT,
intl.formatMessage({ id: 'gpuservice.instance.edit' }),
row,
600
);
};
const openViewInstanceModal = (row: ListItem) => {
openModal(
PageAction.VIEW,
intl.formatMessage({ id: 'common.button.view' }),
row,
600
);
};
const openRecreateInstanceModal = (row: ListItem) => {
openModal(
PageAction.EDIT,
intl.formatMessage({ id: 'common.button.recreate' }),
row,
'calc(100vw - 220px)',
PageAction.CREATE
);
};
const closeModal = () => {
setOpenModalStatus({
...openModalStatus,
title: '',
open: false,
currentData: null,
realAction: undefined
});
restoreScrollHeight();
};
return {
openInstanceModalStatus: openModalStatus,
setOpenInstanceModalStatus: setOpenModalStatus,
openInstanceModal: openModal,
openCreateInstanceModal,
openEditInstanceModal,
openViewInstanceModal,
openRecreateInstanceModal,
closeInstanceModal: closeModal
};
};
export default useCreateInstance;