import React, { useCallback, useState } from 'react'; import SpinnerOverlay from '@/components/elements/SpinnerOverlay'; import tw from 'twin.macro'; import Button from '@/components/elements/Button'; import { triggerScheduleExecution } from '@/api/server/schedules'; import { ServerContext } from '@/state/server'; import useFlash from '@/plugins/useFlash'; import { Schedule } from '@definitions/user'; const RunScheduleButton = ({ schedule }: { schedule: Schedule }) => { const [ loading, setLoading ] = useState(false); const { clearFlashes, clearAndAddHttpError } = useFlash(); const id = ServerContext.useStoreState(state => state.server.data!.id); const appendSchedule = ServerContext.useStoreActions(actions => actions.schedules.appendSchedule); const onTriggerExecute = useCallback(() => { clearFlashes('schedule'); setLoading(true); triggerScheduleExecution(id, schedule.id) .then(() => { setLoading(false); appendSchedule({ ...schedule, isProcessing: true }); }) .catch(error => { console.error(error); clearAndAddHttpError({ key: 'schedules', error }); }) .then(() => setLoading(false)); }, []); return ( <> ); }; export default RunScheduleButton;