1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-11-26 14:59:22 +00:00

Handle call closed event

This commit is contained in:
Pierre HUBERT 2020-04-20 14:32:57 +02:00
parent 08d357fc72
commit 456df166b1
3 changed files with 23 additions and 0 deletions

View File

@ -86,6 +86,13 @@ class UserLeftCallEvent {
UserLeftCallEvent(this.callID, this.userID); UserLeftCallEvent(this.callID, this.userID);
} }
/// Call closed event
class CallClosedEvent {
final int callID;
CallClosedEvent(this.callID);
}
class EventsHelper { class EventsHelper {
static EventBus _mgr = EventBus(); static EventBus _mgr = EventBus();

View File

@ -173,6 +173,11 @@ class WebSocketHelper {
UserLeftCallEvent(msg.data["callID"], msg.data["userID"])); UserLeftCallEvent(msg.data["callID"], msg.data["userID"]));
break; break;
// The call has been close
case "call_closed":
EventsHelper.emit(CallClosedEvent(msg.data));
break;
default: default:
throw Exception("Unknown message type: ${msg.title}"); throw Exception("Unknown message type: ${msg.title}");
} }

View File

@ -7,6 +7,7 @@ import 'package:comunic/lists/users_list.dart';
import 'package:comunic/models/call_config.dart'; import 'package:comunic/models/call_config.dart';
import 'package:comunic/models/call_member.dart'; import 'package:comunic/models/call_member.dart';
import 'package:comunic/models/conversation.dart'; import 'package:comunic/models/conversation.dart';
import 'package:comunic/ui/routes/main_route.dart';
import 'package:comunic/ui/widgets/comunic_back_button_widget.dart'; import 'package:comunic/ui/widgets/comunic_back_button_widget.dart';
import 'package:comunic/ui/widgets/safe_state.dart'; import 'package:comunic/ui/widgets/safe_state.dart';
import 'package:comunic/utils/account_utils.dart'; import 'package:comunic/utils/account_utils.dart';
@ -88,12 +89,17 @@ class _CallScreenState extends SafeState<CallScreen> {
this.listen<UserLeftCallEvent>((e) { this.listen<UserLeftCallEvent>((e) {
if (e.callID == convID) _removeMember(e.userID); if (e.callID == convID) _removeMember(e.userID);
}); });
this.listen<CallClosedEvent>((e) {
if (e.callID == convID) _leaveCall();
});
} catch (e, stack) { } catch (e, stack) {
print("Could not initialize call! $e\n$stack"); print("Could not initialize call! $e\n$stack");
setState(() => _error = true); setState(() => _error = true);
} }
} }
// Do clean up operations when call screen is destroyed
void _endCall() async { void _endCall() async {
try { try {
// Leave the call // Leave the call
@ -103,6 +109,11 @@ class _CallScreenState extends SafeState<CallScreen> {
} }
} }
// Make us leave the call
void _leaveCall() {
MainController.of(context).popPage();
}
void _removeMember(int memberID) { void _removeMember(int memberID) {
_membersList.removeUser(memberID); _membersList.removeUser(memberID);
setState(() {}); setState(() {});