import { useToast } from '@theorchard/suite-components';
import { useParams } from 'react-router-dom';
import { useUpdateContractFlowthrough } from 'src/apollo/mutations/contract-flowthrough';
import type { AbacusContractFlowthroughUpdate } from 'src/apollo/definitions/globalTypes';

export const useSaveHandler = () => {
    const { contractId } = useParams<{ contractId: string }>();
    const updateContractFlowthrough = useUpdateContractFlowthrough(contractId);
    const toast = useToast();
    const saveHandler = async (
        contractFlowthrough: AbacusContractFlowthroughUpdate
    ) => {
        const variables = {
            input: {
                ...contractFlowthrough,
                calculationComment:
                    contractFlowthrough?.calculationComment?.trim() as
                        | string
                        | null,
                flowthroughRate: contractFlowthrough.flowthroughRate! as number,
                hasAutomaticShutoff:
                    contractFlowthrough.hasAutomaticShutoff! as boolean,
                recoupmentCap: contractFlowthrough.recoupmentCap
                    ? (contractFlowthrough.recoupmentCap as number)
                    : null,
                referenceFlowthroughCalculationId:
                    contractFlowthrough.referenceFlowthroughCalculationId! as string,
                contractFlowthroughId:
                    contractFlowthrough.contractFlowthroughId! as string,
            },
        };
        const updatedContractFlowthrough = await updateContractFlowthrough({
            variables,
        });

        if (updatedContractFlowthrough) {
            toast(`Flowthrough information has been successfully updated.`);
        }
    };
    return saveHandler;
};
