Skip to content

[MBL-19717][Student] Add offline dashboard support for courses widget#3525

Merged
hermannakos merged 6 commits intomasterfrom
MBL-19717-offline-dashboard-support
Feb 20, 2026
Merged

[MBL-19717][Student] Add offline dashboard support for courses widget#3525
hermannakos merged 6 commits intomasterfrom
MBL-19717-offline-dashboard-support

Conversation

@hermannakos
Copy link
Collaborator

@hermannakos hermannakos commented Feb 13, 2026

Test plan

  1. Enable offline mode for a course in Settings > Offline Content
  2. Sync the course data
  3. Turn on airplane mode
  4. Open the Student app and navigate to the Dashboard
  5. Verify all courses display — synced courses are fully interactive, unsynced courses appear in an inactive state
  6. Verify groups section is hidden when offline
  7. Verify announcement badges display for synced courses
  8. Turn off airplane mode and verify the dashboard loads normally from the network

refs: MBL-19717
affects: Student
release note: Dashboard courses widget now supports offline mode, displaying synced courses when there is no network connection.

  • Follow-up e2e test ticket created or not needed
  • Tested in dark mode
  • Tested in light mode
  • Test in landscape mode and/or tablet
  • A11y checked
  • Approve from product

hermannakos and others added 2 commits February 13, 2026 14:45
…get repositories

Add DataSource pattern to Course, Group, and Announcement repositories in pandautils
for offline dashboard support. Local datasources use CourseFacade, DashboardCardDao,
and DiscussionTopicHeaderFacade. Non-synced courses are constructed from dashboard cards
so all courses display in inactive state when offline.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add comprehensive tests for the new DataSource pattern and replace
obsolete repository tests that used old constructor signatures.
Also fix SpeedGraderContentViewModelTest date formatting for JDK 21
compatibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link

github-actions bot commented Feb 13, 2026

📊 Code Coverage Report

✅ Student

  • PR Coverage: 43.08%
  • Master Coverage: 42.98%
  • Delta: +0.10%

✅ Teacher

  • PR Coverage: 25.39%
  • Master Coverage: 25.39%
  • Delta: +0.00%

✅ Pandautils

  • PR Coverage: 23.73%
  • Master Coverage: 23.61%
  • Delta: +0.12%

📈 Overall Average

  • PR Coverage: 30.73%
  • Master Coverage: 30.66%
  • Delta: +0.07%

@github-actions
Copy link

github-actions bot commented Feb 13, 2026

🧪 Unit Test Results

✅ 📱 Student App

  • Tests: 1251 total, 0 failed, 0 skipped
  • Duration: 0.000s
  • Success Rate: 100%

✅ 🌅 Horizon

  • Tests: 623 total, 0 failed, 0 skipped
  • Duration: 38.684s
  • Success Rate: 100%

✅ 📦 Submodules

  • Tests: 3107 total, 0 failed, 0 skipped
  • Duration: 54.110s
  • Success Rate: 100%

📊 Summary

  • Total Tests: 4981
  • Failed: 0
  • Skipped: 0
  • Status: ✅ All tests passed!

Last updated: Thu, 19 Feb 2026 13:52:17 GMT

@github-actions
Copy link

github-actions bot commented Feb 13, 2026

Student Install Page

Copy link
Contributor

@kdeakinstructure kdeakinstructure left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • When the offline sync started, the dashboard notification is "hidden", it displayed at the top and may the user won't recognize it. I think it should be automatically visible for the user (because now if the user does not scrolling to the top it cannot be seen). The best would be if the dashboard automatically scrolled to the top when this notification is displayed, thus the user can easily see it's started.
  • In offline mode, if the user does a refresh on the dashboard, the weekly summary (Forecast) widget won't be displayed anymore. It would be better if it could keep it's synced state even after refresh.
Screen_recording_20260216_194621.mp4

None of these are blocker or major issues but would be smoother and more comfortable for the end user if they'd work like this.

hermannakos and others added 2 commits February 17, 2026 13:03
Filter dashboard widgets by network state: when offline, only show
Courses, Course Invitations, and Institutional Announcements widgets.
Disable accept/decline buttons on course invitations when offline.
Update courses widget to reactively hide groups and disable unsynced
courses when connectivity changes. Fix course card shadow clipping
by applying alpha to content instead of the card container.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ashboard-support

# Conflicts:
#	apps/student/src/main/java/com/instructure/student/features/dashboard/compose/DashboardViewModel.kt
#	apps/student/src/test/java/com/instructure/student/features/dashboard/compose/DashboardViewModelTest.kt
# Conflicts:
#	apps/student/src/main/java/com/instructure/student/features/dashboard/compose/DashboardScreen.kt
#	apps/student/src/main/java/com/instructure/student/features/dashboard/compose/DashboardViewModel.kt
#	libs/pandautils/src/main/java/com/instructure/pandautils/features/dashboard/widget/courseinvitation/CourseInvitationsWidget.kt
#	libs/pandautils/src/main/java/com/instructure/pandautils/features/dashboard/widget/courses/CoursesWidgetViewModel.kt
Copy link
Contributor

@kdeakinstructure kdeakinstructure left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QA 👍

@hermannakos hermannakos merged commit 79a2d4f into master Feb 20, 2026
27 of 28 checks passed
@hermannakos hermannakos deleted the MBL-19717-offline-dashboard-support branch February 20, 2026 09:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants