import { RenumberCues } from 'ontime-types'; import { useForm } from 'react-hook-form'; import { create } from 'zustand'; import { maybeAxiosError } from '../../../common/api/utils'; import Button from '../../../common/components/buttons/Button'; import Dialog from '../../../common/components/dialog/Dialog'; import Input from '../../../common/components/input/input/Input'; import { useEntryActionsContext } from '../../../common/context/EntryActionsContext'; import useRundown from '../../../common/hooks-query/useRundown'; import { orderEntries } from '../rundown.utils'; import { useEventSelection } from '../useEventSelection'; import style from './RenumberCuesDialog.module.scss'; type RenumberCueData = Pick; export default function RenumberCuesDialog() { 'use memo'; const { data } = useRundown(); const { flatOrder } = data; const { onClose, isOpen } = useRenumberCuesDialogStore(); const { renumberCues } = useEntryActionsContext(); const selectedEvents = useEventSelection((state) => state.selectedEvents); const { register, handleSubmit, setError, clearErrors, formState: { errors, isSubmitting }, } = useForm(); const onSubmit = async (data: RenumberCueData) => { clearErrors(); try { const { prefix, start, increment } = data; const orderedEvents = orderEntries(Array.from(selectedEvents), flatOrder); await renumberCues(orderedEvents, prefix, start, increment); onClose(); } catch (error) { const message = maybeAxiosError(error); setError('root', { message }); } }; return (
{errors.root &&

{errors.root.message}

} } footerElements={ <> } /> ); } interface RenumberCuesDialogState { isOpen: boolean; onClose: () => void; onOpen: () => void; } export const useRenumberCuesDialogStore = create()((set) => ({ isOpen: false, onClose: () => { set({ isOpen: false }); }, onOpen: () => { set({ isOpen: true }); }, }));