import { useMemo } from "react"; import dayjs from "dayjs"; import { maintenanceWindowSchema, maintenanceWindowEditSchema, repeatOptions, type MaintenanceWindowFormData, } from "@/Validation/maintenanceWindow"; import type { MaintenanceWindow } from "@/Types/MaintenanceWindow"; interface UseMaintenanceWindowFormOptions { data?: MaintenanceWindow | null; } const getRepeatId = (repeatMs: number): string => { const option = repeatOptions.find((opt) => opt.value === repeatMs); return option?.id ?? "none"; }; export const useMaintenanceWindowForm = ({ data = null, }: UseMaintenanceWindowFormOptions = {}) => { return useMemo(() => { let defaults: MaintenanceWindowFormData; if (data) { const startDate = dayjs(data.start); defaults = { name: data.name, repeat: getRepeatId(data.repeat), startDate: startDate.format("YYYY-MM-DD"), startTime: startDate.format("HH:mm"), duration: data.duration ?? 0, durationUnit: data.durationUnit ?? "minutes", monitors: data.monitorIds, }; } else { const now = dayjs(); defaults = { name: "", repeat: "none", startDate: now.format("YYYY-MM-DD"), startTime: now.format("HH:mm"), duration: 0, durationUnit: "minutes", monitors: [], }; } return { schema: data ? maintenanceWindowEditSchema : maintenanceWindowSchema, defaults, }; }, [data]); };