SIGN IN SIGN UP

refactor: convert outline tab from Redux to React Query (#1997)

Make OutlineTab self-wrapping — it owns useCourseHomeMeta + a new
useOutlineTabData query and renders TabWithTimer itself, mirroring the
dates-tab conversion. The heavy body moves into an OutlineTabContent
component so the useModel('outline') reads never run against the empty
model during the loading phase.

Subtree courseId reads move from the courseHome slice (directly, or via
useContextId in section-outline) to useParams, since the outline route
no longer runs a fetch thunk to populate state.courseHome.courseId.

ShiftDatesAlert now invalidates both datesTab and outlineTab and drops
its fetch/useDispatch. The outline-only POST writers dismissWelcomeMessage
and saveWeeklyLearningGoal become useDismissWelcomeMessage /
useSaveWeeklyLearningGoal mutations, and the fetchOutlineTab thunk is
deleted. proctoringPanelStatus stays in Redux (client UI state).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
B
Brian Smith committed
591d116ba0219f55361c509cf33df49e8390e565
Parent: 5fe995a
Committed by GitHub <noreply@github.com> on 8/21/2026, 7:04:56 PM