Skip to content

Commit ff33295

Browse files
authored
fix(llc): Leave call when failing to join (#1005)
* Leave call when failing to join * Return joinedResult instead of old result object
1 parent 6eae680 commit ff33295

File tree

2 files changed

+7
-16
lines changed

2 files changed

+7
-16
lines changed

packages/stream_video/lib/src/call/call.dart

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -719,7 +719,6 @@ class Call {
719719
_logger.e(() => '[join] waiting failed: $result');
720720

721721
await reject(reason: CallRejectReason.timeout());
722-
_stateManager.lifecycleCallTimeout();
723722

724723
return result;
725724
}
@@ -738,8 +737,8 @@ class Call {
738737
_logger.e(() => '[join] coordinator joining failed: $joinedResult');
739738

740739
final error = (joinedResult as Failure).error;
741-
_stateManager.lifecycleCallConnectFailed(error: error);
742-
return result;
740+
await leave(reason: DisconnectReason.failure(error));
741+
return joinedResult;
743742
}
744743

745744
_credentials = joinedResult.data;
@@ -794,7 +793,7 @@ class Call {
794793
_logger.e(() => '[join] sfu session start failed: $sessionResult');
795794

796795
final error = (sessionResult as Failure).error;
797-
_stateManager.lifecycleCallConnectFailed(error: error);
796+
await leave(reason: DisconnectReason.failure(error));
798797
return sessionResult;
799798
}
800799
} else {
@@ -1420,6 +1419,10 @@ class Call {
14201419
/// - [reason]: optional reason for leaving the call
14211420
Future<Result<None>> leave({DisconnectReason? reason}) async {
14221421
try {
1422+
if (_leaveCallTriggered) {
1423+
_logger.w(() => '[leave] rejected (already leaving call)');
1424+
return const Result.success(none);
1425+
}
14231426
_leaveCallTriggered = true;
14241427

14251428
final state = this.state.value;

packages/stream_video/lib/src/call/state/mixins/state_lifecycle_mixin.dart

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -192,18 +192,6 @@ mixin StateLifecycleMixin on StateNotifier<CallState> {
192192
);
193193
}
194194

195-
void lifecycleCallTimeout() {
196-
_logger.e(() => '[lifecycleCallTimeout] state: $state');
197-
lifecycleCallDisconnected(reason: const DisconnectReason.timeout());
198-
}
199-
200-
void lifecycleCallConnectFailed({
201-
required VideoError error,
202-
}) {
203-
_logger.e(() => '[lifecycleCallConnectFailed] state: $state');
204-
lifecycleCallDisconnected(reason: DisconnectReason.failure(error));
205-
}
206-
207195
void lifecycleCallConnecting({
208196
required int attempt,
209197
SfuReconnectionStrategy? strategy,

0 commit comments

Comments
 (0)