Severity: Medium
Labels: bug, frontend, P2
Location: frontend/src/components/screens/Calendar.tsx:82-98 (load)
Description
On initial-fetch failure (getAllAssignments/getCourses reject — only getCalendarStatus is individually .catch-guarded), load() does catch { console.error(...) } then clears loading. There's no error state, toast, or retry — the user sees a fully rendered calendar with "0 assignments" and "No assignments yet.", indistinguishable from a genuinely empty account, so they may think their assignments were deleted.
Steps to reproduce
- Force the assignments/courses fetch to fail (offline/5xx) and open Calendar.
- See an empty-but-normal calendar with no error indication.
Expected vs actual
- Expected: an error/retry state distinct from the legitimate empty state.
- Actual: failure masked as empty success.
Suggested fix
Add an error state set in the catch; render an error/retry view (and/or toast.error); guard each call so a courses failure doesn't blank assignments.
Acceptance criteria
- A failed calendar load shows a distinct error + retry, not an empty calendar.
Severity: Medium
Labels: bug, frontend, P2
Location:
frontend/src/components/screens/Calendar.tsx:82-98(load)Description
On initial-fetch failure (
getAllAssignments/getCoursesreject — onlygetCalendarStatusis individually.catch-guarded),load()doescatch { console.error(...) }then clearsloading. There's no error state, toast, or retry — the user sees a fully rendered calendar with "0 assignments" and "No assignments yet.", indistinguishable from a genuinely empty account, so they may think their assignments were deleted.Steps to reproduce
Expected vs actual
Suggested fix
Add an
errorstate set in the catch; render an error/retry view (and/ortoast.error); guard each call so a courses failure doesn't blank assignments.Acceptance criteria