From cc2001565eca9db145cc126c350f0ae9d5679d04 Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Tue, 7 Jan 2025 14:31:07 -0700 Subject: [PATCH] calendar scroll position... --- .../[courseName]/calendar/CourseCalendar.tsx | 33 +++++++++++++++++-- .../context/CalendarItemsContextProvider.tsx | 1 + 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/app/course/[courseName]/calendar/CourseCalendar.tsx b/src/app/course/[courseName]/calendar/CourseCalendar.tsx index 4650487..c12a67f 100644 --- a/src/app/course/[courseName]/calendar/CourseCalendar.tsx +++ b/src/app/course/[courseName]/calendar/CourseCalendar.tsx @@ -3,8 +3,9 @@ import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; import { getMonthsBetweenDates } from "./calendarMonthUtils"; import { CalendarMonth } from "./CalendarMonth"; import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; -import { useMemo } from "react"; +import { useEffect, useMemo, useRef } from "react"; import CalendarItemsContextProvider from "../context/CalendarItemsContextProvider"; +import { SuspenseAndErrorHandling } from "@/components/SuspenseAndErrorHandling"; export default function CourseCalendar() { const [settings] = useLocalCourseSettingsQuery(); @@ -21,6 +22,24 @@ export default function CourseCalendar() { () => getMonthsBetweenDates(startDateTime, endDateTime), [endDateTime, startDateTime] ); + const divRef = useRef(null); + + useEffect(() => { + const storageKey = `courseScroll-${settings.name}`; + const scrollValue = localStorage.getItem(storageKey); + console.log("resetting scroll", scrollValue, divRef.current); + + const yValue = scrollValue ? parseInt(scrollValue) : 0; + + if (!divRef.current) console.log("cannot scroll, ref is null"); + else { + divRef.current.scroll({ + top: yValue, + left: 0, + // behavior: "smooth" + }); + } + }, [settings.name]); return (
-
+
{ + const storageKey = `courseScroll-${settings.name}`; + localStorage.setItem( + storageKey, + e.currentTarget.scrollTop.toString() + ); + }} + ref={divRef} + > {months.map((month) => ( diff --git a/src/app/course/[courseName]/context/CalendarItemsContextProvider.tsx b/src/app/course/[courseName]/context/CalendarItemsContextProvider.tsx index 4b392e4..6af6b7b 100644 --- a/src/app/course/[courseName]/context/CalendarItemsContextProvider.tsx +++ b/src/app/course/[courseName]/context/CalendarItemsContextProvider.tsx @@ -1,3 +1,4 @@ +"use client" import { ReactNode } from "react"; import { CalendarItemsContext,