diff --git a/components/calender/CalenderNav.tsx b/components/calender/CalenderNav.tsx index a73e63a..bcd2e65 100644 --- a/components/calender/CalenderNav.tsx +++ b/components/calender/CalenderNav.tsx @@ -3,11 +3,14 @@ import { useRouter } from "next/router"; import { HStack, IconButton } from "@chakra-ui/react"; import { Icon } from "@iconify/react"; import { sub, add, format, isSameMonth } from "date-fns"; +import findValidDateRange from "../../lib/findValidDateRange" import DatePicker from "./DatePicker"; import { CalenderContext } from "../../contexts/CalenderContext"; const CalenderNav = (): JSX.Element => { - const { selectedDate, validDateRange } = useContext(CalenderContext); + const { selectedDate } = useContext(CalenderContext); + + const validDateRange = findValidDateRange(); const { start: validStart, end: validEnd } = validDateRange; const router = useRouter(); diff --git a/contexts/CalenderContext.tsx b/contexts/CalenderContext.tsx index 54b2fe9..6feecc2 100644 --- a/contexts/CalenderContext.tsx +++ b/contexts/CalenderContext.tsx @@ -206,19 +206,6 @@ const CalenderContextProvider = ({ setSelectedMonthInfo(output); }; - const setValidDateRange = (): ValidDateRange => { - const currDate = new Date(); // Current date. - const startDate = startOfMonth(currDate); // Will eventually be the creation date of the account or the creation date of the oldest chart within the account. Whichever is older. - const endDate = endOfMonth(currDate); // Always needs to be the last day on the current month within the current year. - - return { - start: startDate, - end: endDate - }; - }; - - const [validDateRange] = useState(setValidDateRange()); - // TODO: Add a function that validated if a date has at least one sticker in it. Use that within the nav function (when filter is enabled). // TODO: Add a function that will give the closest date, if available, when the nav func detects an empty month. @@ -257,7 +244,6 @@ const CalenderContextProvider = ({ selectedDate, title: selectedDateInfo.title, layout: selectedDateInfo.layout, - validDateRange, updateDate }; diff --git a/lib/findValidDateRange.ts b/lib/findValidDateRange.ts new file mode 100644 index 0000000..6aa6359 --- /dev/null +++ b/lib/findValidDateRange.ts @@ -0,0 +1,22 @@ +import { + startOfMonth, + endOfMonth +} from "date-fns"; + +interface ValidDateRange { + start: Date; + end: Date; +} + +const validDateRange = (): ValidDateRange => { + const currDate = new Date(); // Current date. + const startDate = startOfMonth(currDate); // Will eventually be the creation date of the account or the creation date of the oldest chart within the account. Whichever is older. + const endDate = endOfMonth(currDate); // Always needs to be the last day on the current month within the current year. + + return { + start: startDate, + end: endDate + }; +}; + +export default validDateRange \ No newline at end of file diff --git a/pages/calendar/[...date].tsx b/pages/calendar/[...date].tsx index 38d136d..21108d6 100644 --- a/pages/calendar/[...date].tsx +++ b/pages/calendar/[...date].tsx @@ -1,7 +1,8 @@ -import React, { useEffect, useState } from "react"; +import React, { useEffect, useState, useContext } from "react"; import { Box } from "@chakra-ui/react"; import { useRouter } from "next/router"; import { endOfMonth, getDay } from "date-fns"; +import findValidDateRange from "../../lib/findValidDateRange" import ErrorPage from "next/error"; import Calender from "../../components/calender"; import { CalenderContextProvider } from "../../contexts/CalenderContext"; @@ -11,6 +12,9 @@ const DateRoute: React.FC = () => { const router = useRouter(); const { date: slug } = router.query; + const validDateRange = findValidDateRange(); + const { start: validStart, end: validEnd } = validDateRange; + const [date, setDate] = useState(null); const [error, setError] = useState(false); @@ -54,7 +58,11 @@ const DateRoute: React.FC = () => { return date; }; - useEffect(() => { + // const validateDateRange = () => { + + // } + + useEffect(() => {2 if (slug && slug.length === 1 && slug[0] !== "now") { setError(true); return console.warn("improper date input"); @@ -75,7 +83,9 @@ const DateRoute: React.FC = () => { }); } } - }, [slug]); + + console.info("Context:", calenderContext) + }, [slug, calenderContext]); if (router.isFallback) { return ; diff --git a/types/CalenderContext.d.ts b/types/CalenderContext.d.ts index 1072376..2f31de4 100644 --- a/types/CalenderContext.d.ts +++ b/types/CalenderContext.d.ts @@ -48,11 +48,6 @@ interface MonthContext extends MonthInfo { layout: MonthLayout; } -interface ValidDateRange { - start: Date; - end: Date; -} - interface UpdateCalendarProps { year: number; month: number;