fix(ios): stop RN loading overlay sticking after license renewal - #55
fix(ios): stop RN loading overlay sticking after license renewal#55Balamurugan-100 wants to merge 1 commit into
Conversation
ff38ae4 to
862d6c9
Compare
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
|
Claude finished @Balamurugan-100's task in 2m 45s —— View job Todo
SummaryReviewed
Root cause check: The old bug is real — Threading: All mutations of Regression risk: Low. Online (non-offline) mid-stream buffering/token-refresh stalls will no longer trigger the RN bridge overlay (only the native SDK's own buffering UI will be visible), which matches the PR's stated intent that the bridge overlay is for initial setup only and the native SDK spinner already handles in-flight buffering/renewal recovery. Worth confirming visually that there's no jarring gap: on initial load the overlay now hides as soon as Pre-existing (not introduced by this PR): In Not verified: No Swift toolchain/build available in this environment, so the change wasn't compiled or run on-device/simulator. The logic was verified by static reading only; recommend the manual test plan in the PR description (short-lived offline license expiry → renewal → confirm overlay behavior) be executed before merge. Final VerdictThe fix is correctly scoped, addresses the stated root cause, and introduces no thread-safety or lifecycle regressions. The two notes above (initial-load hide timing, pre-existing duplicate KVO observer) are non-blocking — worth a look but not reasons to hold this PR. |
862d6c9 to
3f9d8e0
Compare
|
Claude finished @Balamurugan-100's task in 2m 0s —— View job Todo
SummaryReviewed
Root cause fix: Correct and well-scoped. Findings (non-blocking):
Thread-safety: All mutations of Regression risk: Low. Online (non-offline) mid-stream buffering/token-refresh stalls no longer trigger the RN bridge overlay post-initial-load — intended per the PR description, since the native SDK's own spinner covers in-flight buffering/renewal recovery. Not verified: No Swift toolchain/Xcode available in this CI environment, so the change wasn't compiled or run on-device/simulator — review is static-reading only. Recommend executing the manual test plan (short-lived offline license expiry → renewal → confirm overlay behavior, plus finding #1 above) before merge. Final VerdictThe fix correctly targets the stated root cause and introduces no thread-safety or lifecycle regressions. The three notes above are non-blocking — #1 is worth a quick manual confirmation given it touches the initial-offline-load path, and #2/#3 are pre-existing/low-risk observations, not reasons to hold this PR. |
3f9d8e0 to
2694112
Compare
|
Claude finished @Balamurugan-100's task in 2m 2s —— View job Todo
SummaryReviewed
Root cause: Correctly diagnosed and fixed. Findings (non-blocking):
Thread-safety: All mutations of Regression risk: Low. Online (non-offline) mid-stream buffering/token-refresh stalls no longer trigger the RN bridge overlay post-initial-load — this is intentional per the PR description, since the native SDK's own buffering UI handles that window. Not verified: No Swift toolchain/Xcode available in this environment, so the change wasn't compiled or run on-device/simulator — review is static-reading only. Recommend the manual test plan (short-lived offline license expiry → renewal → confirm overlay behavior, plus finding #1 above) before merge. Final VerdictThe fix correctly targets the stated root cause and introduces no thread-safety or lifecycle regressions. Finding #1 is worth a quick manual confirmation since it touches the initial-offline-load path; finding #2 is pre-existing and non-blocking. |
…wal on iOS - Offline DRM renewal during playback caused the React Native loading overlay to remain visible indefinitely, blocking the player UI. - The old `isPlayerReady` flag was set on every `.readyToPlay` event, which fires during both initial load and DRM renewal, causing the overlay gate to open and close at the wrong times. - Replaced `isPlayerReady` with a one-way `hasCompletedInitialLoad` flag that gates the RN overlay exclusively for the first load. Mid-playback buffering and DRM renewal rely on the native SDK spinner instead.
2694112 to
5258a83
Compare
|
Claude finished @Balamurugan-100's task in 1m 36s —— View job Todo
SummaryReviewed the updated commit on
Logic re-verified: Thread-safety: all mutation of Regression risk: Low, and lower than the previous revision — the two edge cases identified in earlier review rounds (duplicate observer starvation, premature hide on early renewal) are now closed. Behavior for online playback, non-DRM offline playback, and the normal CI: passing (build/lint job green; this progress-tracking workflow run itself still in progress at review time). Not verified: No Swift toolchain/Xcode available in this environment, so still static-reading only — no on-device build. Recommend the PR's own manual test plan (short-lived offline license expiry → renewal, plus first-play-with-stale-cached-credentials) be run before merge, though the logic now correctly handles both. Final Verdict✅ APPROVED No blocking issues found. This revision directly addresses both non-blocking suggestions from earlier review rounds on this PR (duplicate KVO observer, premature overlay hide on early renewal), and the core fix correctly resolves the stated root cause without introducing new thread-safety, lifecycle, or regression risk. |
Summary
timeControlStatus == .waitingToPlayAtSpecifiedRateduring playback/renewalsetNewAccessTokenafter offline DRM renewal credentials are deliveredWhy
After offline DRM license expiry, JS refreshes the token and native renewal succeeds, but the RN overlay spinner (added in
ba94ee0) stays stuck. The native SDK spinner recovers correctly viaAVPlayerItembuffer KVO; the bridge overlay does not.Back-navigation works because remounting restarts the initial-load spinner cycle.