Skip to content

[MBL-19756][Student] Fix NullPointerException when displaying conference recordings with null length#3503

Merged
kristofnemere merged 2 commits intomasterfrom
MBL-19756-fix-conference-playback-format-null-length
Feb 5, 2026
Merged

[MBL-19756][Student] Fix NullPointerException when displaying conference recordings with null length#3503
kristofnemere merged 2 commits intomasterfrom
MBL-19756-fix-conference-playback-format-null-length

Conversation

@kristofnemere
Copy link
Contributor

@kristofnemere kristofnemere commented Feb 4, 2026

Test plan

  1. Navigate to a course that has BigBlueButton conferences
  2. Open a conference that has recordings with playback formats where the length field is null (e.g., recordings with type=notes)
  3. Click on the conference to view details
  4. Verify the app does not crash with NullPointerException
  5. Verify recordings are displayed and can be played

Root cause: The API sometimes returns PlaybackFormat objects with length: null (specifically for recordings with type: "notes"). The Kotlin auto-generated hashCode() method attempted to call .hashCode() on the null length field, causing a crash when the Conference object was used in hash-based collections during Mobius state updates.

Fix: Changed PlaybackFormat.length from non-nullable String to nullable String? to properly handle API responses.

refs: MBL-19756
affects: Student
release note: Fixed crash when viewing conference recordings

  • 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

…nce recordings with null length

Make PlaybackFormat.length field nullable to handle API responses where the length field is null (e.g., recordings with type=notes). This prevents crashes when computing hashCode for Conference objects containing such recordings.

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

github-actions bot commented Feb 4, 2026

📊 Code Coverage Report

⚠️ Student

  • PR Coverage: 43.27%
  • Master Coverage: 43.29%
  • Delta: -0.02%

✅ Teacher

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

✅ Pandautils

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

📈 Overall Average

  • PR Coverage: 30.58%
  • Master Coverage: 30.59%
  • Delta: -0.01%

@github-actions
Copy link

github-actions bot commented Feb 4, 2026

🧪 Unit Test Results

✅ 📱 Student App

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

✅ 🌅 Horizon

  • Tests: 531 total, 0 failed, 0 skipped
  • Duration: 34.552s
  • Success Rate: 100%

✅ 📦 Submodules

  • Tests: 2797 total, 0 failed, 0 skipped
  • Duration: 48.911s
  • Success Rate: 100%

📊 Summary

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

Last updated: Thu, 05 Feb 2026 10:21:50 GMT

@github-actions
Copy link

github-actions bot commented Feb 4, 2026

Student Install Page

Copy link
Contributor

@adamNagy56 adamNagy56 left a comment

Choose a reason for hiding this comment

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

  • When I try to open a recording that is supposed to load for playback, it doesn’t load at all, so I’m unable to view it.

See attached video.

Screen_Recording_20260204_164759_Samsung.Internet.mp4

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 👍 (Works on my sandbox, but I've checked Adam's as well at it really does not load there, so that should be investigated).

When displaying conference recordings, prioritize "presentation" type playback formats over "notes" since the API can return them in different orders. Falls back to first format if presentation type is not found.

Added test to verify presentation type is selected even when notes appears first in the list.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Copy link
Contributor

@adamNagy56 adamNagy56 left a comment

Choose a reason for hiding this comment

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

QA +1

@kristofnemere kristofnemere merged commit d01c75a into master Feb 5, 2026
27 checks passed
@kristofnemere kristofnemere deleted the MBL-19756-fix-conference-playback-format-null-length branch February 5, 2026 11:18
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.

4 participants