From 4f3437cba9460e3b87247f95baacf79bd254ebfe Mon Sep 17 00:00:00 2001 From: Aamir Imac Date: Wed, 26 Jul 2023 10:14:39 +0300 Subject: [PATCH] Ios Voip Kit --- lib/models/chat/call.dart | 3 ++ lib/ui/login/login_screen.dart | 54 ++++++++++++++++++++-------------- 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/lib/models/chat/call.dart b/lib/models/chat/call.dart index f433d3d..3a9a3f2 100644 --- a/lib/models/chat/call.dart +++ b/lib/models/chat/call.dart @@ -141,6 +141,7 @@ class IosCallPayload { String? incomingCallerName; String? callData; String? uuid; + bool? isIncomingCall; IosCallPayload({ this.incomingCallType, @@ -148,6 +149,7 @@ class IosCallPayload { this.incomingCallerName, this.callData, this.uuid, + this.isIncomingCall, }); factory IosCallPayload.fromRawJson(String str) => IosCallPayload.fromJson(json.decode(str)); @@ -160,6 +162,7 @@ class IosCallPayload { incomingCallerName: json["incoming_caller_name"], callData: json["call_data"], uuid: json["uuid"], + isIncomingCall: true, ); Map toJson() => { diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 600ebc3..2f8d1ef 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -38,10 +38,13 @@ import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/member_login_list_model.dart'; import 'package:mohem_flutter_app/models/privilege_list_model.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/call/chat_incoming_call_screen.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/hmg_connectivity_button.dart'; import 'package:mohem_flutter_app/widgets/input_widget.dart'; +import 'package:provider/provider.dart'; +import 'package:signalr_netcore/hub_connection.dart'; // import 'package:safe_device/safe_device.dart'; import 'package:wifi_iot/wifi_iot.dart'; @@ -93,7 +96,9 @@ class _LoginScreenState extends State with WidgetsBindingObserver { callListeners(); checkAndNavigationCallingPage(); } - setupVoIPCallBacks(); + if (Platform.isIOS) { + setupVoIPCallBacks(); + } } // IOS Voip Call @@ -114,8 +119,8 @@ class _LoginScreenState extends State with WidgetsBindingObserver { Map payload, ) async { _iosCallPayload = IosCallPayload.fromJson(payload); - isIncomingCall = true; - _timeOut(); + isIncomingCall = _iosCallPayload!.isIncomingCall!; + // _timeOut(); }; voIPKit.onDidRejectIncomingCall = ( @@ -131,10 +136,11 @@ class _LoginScreenState extends State with WidgetsBindingObserver { String callerId, ) async { var callerID = "did accept call $callerId"; - timeOutTimer.cancel(); + isIncomingCall = true; await connectCall(); await voIPKit.acceptIncomingCall(callerState: CallStateType.calling); await voIPKit.callConnected(); + //await voIPKit. }; } @@ -153,14 +159,27 @@ class _LoginScreenState extends State with WidgetsBindingObserver { Future connectCall() async { try { - BuildContext context = AppRoutes.navigatorKey.currentContext!; - Utils.hideLoading(context); - Utils.saveStringFromPrefs("iosCallPayload", jsonEncode(_iosCallPayload)); - var pageRoute = MaterialPageRoute(builder: (context) => StartCallPage()); - Navigator.push(context, pageRoute).whenComplete(() { - checkFirebaseToken(); - }); + // Utils.showToast("Connect " + isIncomingCall.toString(),longDuration: true); + if (isIncomingCall) { + Future.delayed(Duration(seconds: 3),(){ + BuildContext context = AppRoutes.navigatorKey.currentContext!; + Utils.hideLoading(context); + if(context !=null) { + Utils.showToast("Connect ---- Conn" , longDuration: true); + } + + _iosCallPayload!.isIncomingCall = false; + Utils.saveStringFromPrefs("iosCallPayload", jsonEncode(_iosCallPayload)); + var pageRoute = MaterialPageRoute(builder: (context) => StartCallPage()); + Navigator.push(context, pageRoute).whenComplete(() { + // checkFirebaseToken(); + }); + }); + + } } catch (e) { + Utils.showToast("Connect " + e.toString(),longDuration: true); + logger.d(e); } } @@ -180,17 +199,6 @@ class _LoginScreenState extends State with WidgetsBindingObserver { // print(error); // } // } - // Future connectCall() async { - // try { - // UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserCallToken(userid: _iosCallPayload!.incomingCallerId!.split("-").last); - // if (userLoginResponse.response != null) { - // AppState().setchatUserDetails = userLoginResponse; - // Utils.saveStringFromPrefs("userLoginChatDetails", jsonEncode(userLoginResponse.response)); - // } - // } catch (e) { - // logger.d(e); - // } - // } Future callListeners() async { try { @@ -392,6 +400,8 @@ class _LoginScreenState extends State with WidgetsBindingObserver { Utils.showLoading(context); Future.delayed(const Duration(seconds: 2)).whenComplete(() { if (!isIncomingCall) { + // isIncomingCall=true; + Utils.showToast("Incoming + $isIncomingCall", longDuration: true); if (isAppOpenBySystem!) checkFirebaseToken(); } });