Repository navigation
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## feat/flu-863-call-ringing-controller #1439 +/- ##
========================================================================
+ Coverage 44.55% 44.74% +0.19%
========================================================================
Files 422 423 +1
Lines 31543 31568 +25
========================================================================
+ Hits 14054 14126 +72
+ Misses 17489 17442 -47 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
renefloor
added this pull request to stack #1442
October 9, 2026 06:12
renefloor
force-pushed
the
feat/flu-858-app-lifecycle-controller
branch
from
October 9, 2026 12:27
dd8da4e to
8f8f4f8
Compare
renefloor
force-pushed
the
feat/flu-858-app-lifecycle-controller
branch
2 times, most recently
from
October 9, 2026 12:58
eb997b1 to
b56a48b
Compare
renefloor
force-pushed
the
feat/flu-858-app-lifecycle-controller
branch
2 times, most recently
from
October 9, 2026 13:17
2f6d9b1 to
feee8c9
Compare
renefloor
force-pushed
the
feat/flu-858-app-lifecycle-controller
branch
2 times, most recently
from
October 9, 2026 14:35
1a44159 to
ff23b6c
Compare
renefloor
force-pushed
the
feat/flu-858-app-lifecycle-controller
branch
from
October 9, 2026 15:42
ff23b6c to
d374f26
Compare
The client keeps only the connection keep-alive: it closes the connection in the background with no active call, and reopens it when it closed it or the connection dropped. Each active call mutes and restores its own camera and microphone, so the per-cid mute maps in StreamVideo are gone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
renefloor
force-pushed
the
feat/flu-858-app-lifecycle-controller
branch
from
October 9, 2026 18:33
d374f26 to
539a29d
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes FLU-858
Part of FLU-859 · 24/26, stacked on #1438
What changed
AppLifecycleController(lib/src/lifecycle/,@internal) handles the client's side of the app lifecycle:state.appLifecycleState.keepConnectionsAliveWhenInBackgroundis set.isConnected, andcloseConnection/openConnectioncallbacks. The callbacks also drop and restore the event subscription.openConnection()and re-add the event subscription on every resume, even when nothing had closed the connection. It now reopens when the controller closed the connection, or when the client reports it is no longer connected: a connection kept alive can still drop in the background.Callfollowsstate.appLifecycleStatewhile it is active.LocalMediaController(B1) gainsonAppPausedandonAppResumed, with the camera and microphone flags of that one call, and_multitaskingCameraAccessSupportedmoves in with them._mutedCameraByStateChangeand_mutedAudioByStateChangemaps inStreamVideoare gone.device.stateChangetrace moves with them.try/catchused to swallow the whole handler, so a failed close or a failed mute skipped everything after it. Now a failed close or reopen is logged and the controller goes on, and each call logs its own mute failures.Decisions to check
appLifecycleState, not the raw lifecycle stream.Callalready has the client state, and B6'sCallHostexposes it. The emitter replays its value when the call starts following it, but the call is not active yet at that point (_initruns beforesetActiveCall), so that value is never acted on. One test pins it: a call joined while the app is in the background is muted only the next time the app goes there.LocalMediaControllerhas no reconnect-specific path to pin.Tests
test/src/lifecycle/app_lifecycle_controller_test.dart(6), on the C2 fixture:test/src/call/call_background_mute_test.dart(5):setupMockClientStatestubsappLifecycleState.stream_video: 1309 passed;stream_video_push_notification: 67;stream_video_flutterwithout goldens: 729.🤖 Generated with Claude Code