sanity
Version:
Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches
34 lines (28 loc) • 863 B
text/typescript
import {useCallback, useState} from 'react'
import {type Schedule, type ScheduleFormData} from '../types'
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export default function useScheduleForm(schedule?: Schedule) {
const [isDirty, setIsDirty] = useState(false)
const [formData, setFormData] = useState<ScheduleFormData | null>(
schedule && schedule?.executeAt
? {
date: schedule.executeAt,
}
: null,
)
const handleFormChange = useCallback(
(form: ScheduleFormData) => {
const equalDates =
schedule?.executeAt &&
new Date(schedule.executeAt).getTime() === new Date(form?.date).getTime()
setFormData(form)
setIsDirty(!equalDates)
},
[schedule?.executeAt],
)
return {
formData,
isDirty,
onFormChange: handleFormChange,
}
}