mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 12:14:11 +00:00 
			
		
		
		
	Handle call closed event
This commit is contained in:
		@@ -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();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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}");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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(() {});
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user