FPSMS-frontend
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

33 lines
991 B

  1. import { useCallback, useMemo, useState } from "react";
  2. import dayjs from "dayjs";
  3. import { dayjsToDateString } from "@/app/utils/formatUtil";
  4. import {
  5. JoCreatePlanStartPrefs,
  6. loadJoCreatePlanStartPrefs,
  7. saveJoCreatePlanStartPrefs,
  8. } from "@/utils/joCreatePlanStartPrefs";
  9. export function useJoCreatePlanStartPrefs() {
  10. const [prefs, setPrefs] = useState<JoCreatePlanStartPrefs>(loadJoCreatePlanStartPrefs);
  11. const defaultPlanStartForCreate = useMemo(
  12. () => prefs.planStart ?? dayjsToDateString(dayjs(), "input"),
  13. [prefs.planStart],
  14. );
  15. const handleRememberPlanStartChange = useCallback((checked: boolean, selectedDate: string | null) => {
  16. const next: JoCreatePlanStartPrefs = {
  17. enabled: checked,
  18. planStart: checked && selectedDate ? selectedDate : null,
  19. };
  20. setPrefs(next);
  21. saveJoCreatePlanStartPrefs(next);
  22. }, []);
  23. return {
  24. rememberPlanStart: prefs.enabled,
  25. defaultPlanStartForCreate,
  26. handleRememberPlanStartChange,
  27. };
  28. }