import type { ButtonHTMLAttributes, MouseEventHandler } from 'react'; import { useState } from 'react'; import type { AddIncomeItemFormValues } from '@/entity/incomes/item'; import type { IncomeList } from '@/entity/incomes/list'; import { useAddIncomeItem } from '@/entity/incomes/item'; type UseAddIncomeItemButtonArgs = { listId: IncomeList['id']; onClick?: ButtonHTMLAttributes['onClick']; }; export const useAddIncomeItemButton = (args: UseAddIncomeItemButtonArgs) => { const { listId, onClick } = args; const [isOpen, setIsOpen] = useState(false); const { isPending, mutateAsync: addIncomeItemMutation } = useAddIncomeItem({ id: listId }); const onCloseModalHandler = () => { setIsOpen(false); }; const onClickHandler: MouseEventHandler = (event) => { setIsOpen(true); onClick?.(event); }; const onFormSubmitHandler = async (data: AddIncomeItemFormValues) => { // todo добавить обработку ошибок (код + тест) await addIncomeItemMutation(data); setIsOpen(false); }; return { isOpen, isPending, onClickHandler, onCloseModalHandler, onFormSubmitHandler, }; };