All checks were successful
continuous-integration/drone/push Build is passing
32 lines
851 B
TypeScript
32 lines
851 B
TypeScript
import { useCallback, useState } from 'react';
|
|
|
|
export function useSubmitState<TStatus = string | null>(initialStatus: TStatus) {
|
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
const [submitError, setSubmitError] = useState<string | null>(null);
|
|
const [status, setStatus] = useState<TStatus>(initialStatus);
|
|
|
|
const startSubmitting = useCallback(() => {
|
|
setIsSubmitting(true);
|
|
}, []);
|
|
|
|
const finishSubmitting = useCallback(() => {
|
|
setIsSubmitting(false);
|
|
}, []);
|
|
|
|
const clearFeedback = useCallback(() => {
|
|
setSubmitError(null);
|
|
setStatus(initialStatus);
|
|
}, [initialStatus]);
|
|
|
|
return {
|
|
isSubmitting,
|
|
submitError,
|
|
status,
|
|
startSubmitting,
|
|
finishSubmitting,
|
|
setSubmitError,
|
|
setStatus,
|
|
clearFeedback,
|
|
};
|
|
}
|