diff --git a/src/components/wired/views/conditions/WiredConditionDateRangeView.tsx b/src/components/wired/views/conditions/WiredConditionDateRangeView.tsx index 8eedbf3..394c931 100644 --- a/src/components/wired/views/conditions/WiredConditionDateRangeView.tsx +++ b/src/components/wired/views/conditions/WiredConditionDateRangeView.tsx @@ -13,35 +13,34 @@ export const WiredConditionDateRangeView: FC<{}> = props => const save = () => { - let startDateMili = 0; - let endDateMili = 0; - const startDateInstance = new Date(startDate); const endDateInstance = new Date(endDate); - if(startDateInstance && endDateInstance) - { - startDateMili = startDateInstance.getTime() / 1000; - endDateMili = endDateInstance.getTime() / 1000; - } + // new Date('garbage') is a truthy *Invalid Date*, not null — the old + // `if(startDateInstance && endDateInstance)` was always true, so an + // unparseable input wrote NaN as the int param. Guard on getTime(). + const startDateMili = isNaN(startDateInstance.getTime()) ? 0 : Math.floor(startDateInstance.getTime() / 1000); + const endDateMili = isNaN(endDateInstance.getTime()) ? 0 : Math.floor(endDateInstance.getTime() / 1000); setIntParams([ startDateMili, endDateMili ]); }; useEffect(() => { + // Seed both inputs (default "now") even for a never-configured furni so + // the first save can't send new Date('') → NaN. + let startDate = new Date(); + let endDate = new Date(); + if(trigger.intData.length >= 2) { - let startDate = new Date(); - let endDate = new Date(); - if(trigger.intData[0] > 0) startDate = new Date((trigger.intData[0] * 1000)); if(trigger.intData[1] > 0) endDate = new Date((trigger.intData[1] * 1000)); - - setStartDate(WiredDateToString(startDate)); - setEndDate(WiredDateToString(endDate)); } + + setStartDate(WiredDateToString(startDate)); + setEndDate(WiredDateToString(endDate)); }, [ trigger ]); return (