import { useMutation } from '@tanstack/react-query'; import { api, isConfirmationRequired } from '../../api/client'; import type { PrinterStatus } from '../../api/client'; import { useState } from 'react'; import { ConfirmModal } from '../ConfirmModal'; interface BedControlsProps { printerId: number; status: PrinterStatus | null | undefined; disabled?: boolean; } export function BedControls({ printerId, status, disabled = false }: BedControlsProps) { const isConnected = (status?.connected ?? false) && !disabled; const [confirmModal, setConfirmModal] = useState<{ token: string; warning: string; distance: number; } | null>(null); const moveMutation = useMutation({ mutationFn: ({ distance, token }: { distance: number; token?: string }) => api.moveAxis(printerId, 'Z', distance, 1000, token), onSuccess: (result, variables) => { if (isConfirmationRequired(result)) { setConfirmModal({ token: result.token, warning: result.warning, distance: variables.distance, }); } }, }); const handleMove = (distance: number) => { moveMutation.mutate({ distance }); }; const handleConfirm = () => { if (confirmModal) { moveMutation.mutate({ distance: confirmModal.distance, token: confirmModal.token }); setConfirmModal(null); } }; const isDisabled = !isConnected || moveMutation.isPending; return ( <>
Bed
{/* Confirmation Modal */} {confirmModal && ( setConfirmModal(null)} /> )} ); }