diff --git a/lib/classes/chat_call_kit.dart b/lib/classes/chat_call_kit.dart index 802a746..8dd777f 100644 --- a/lib/classes/chat_call_kit.dart +++ b/lib/classes/chat_call_kit.dart @@ -29,7 +29,6 @@ class ChatVoipCall { ChatVoipCall._internal(); factory ChatVoipCall() => _instance; - late ChatProviderModel prov; late ChatCallProvider cProv; dynamic inCallData; @@ -72,13 +71,7 @@ class ChatVoipCall { textDecline: 'Decline', textMissedCall: 'Missed call', textCallback: 'Call back', - extra: { - "loginDetails": autoLoginData.toJson(), - "callerDetails": callerData.toJson(), - 'isIncomingCall': true, - 'isUserOnline': isUserOnline, - 'callType' : data!.data["callType"] - }, + extra: {"loginDetails": autoLoginData.toJson(), "callerDetails": callerData.toJson(), 'isIncomingCall': true, 'isUserOnline': isUserOnline, 'callType': data!.data["callType"]}, android: const AndroidParams( isCustomNotification: true, isShowLogo: false, @@ -179,9 +172,11 @@ class ChatVoipCall { } Future declineCall() async { - if (isUserOnline && chatHubConnection != null) { + if (isUserOnline) { + HubConnection hc = await makeHub(); + await hc.start(); print("Connection State ===" + chatHubConnection.state.toString()); - if (chatHubConnection.state == HubConnectionState.Connected) { + if (hc.state == HubConnectionState.Connected) { if (sessionData?.extra != null) { chatHubConnection.invoke("HangUpAsync", args: [ int.parse(sessionData.extra!.callerDetails!.currentUserId.toString()), @@ -191,15 +186,12 @@ class ChatVoipCall { int.parse(sessionData.extra!.callerDetails!.currentUserId.toString()), 1, ]); - FlutterCallkitIncoming.endCall(sessionData.id!); + chatHubConnection = hc; } } } else { - HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); - HubConnection hc = HubConnectionBuilder() - .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${sessionData.extra!.loginDetails!.id}&source=Desktop&access_token=${sessionData.extra?.loginDetails!.token}", options: httpOp) - .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]).build(); + HubConnection hc = await makeHub(); await hc.start(); await hc.invoke( "HangUpAsync", @@ -216,4 +208,12 @@ class ChatVoipCall { } } } + + Future makeHub() async { + HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); + HubConnection hc = HubConnectionBuilder() + .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${sessionData.extra!.loginDetails!.id}&source=Desktop&access_token=${sessionData.extra?.loginDetails!.token}", options: httpOp) + .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]).build(); + return hc; + } } diff --git a/lib/classes/notifications.dart b/lib/classes/notifications.dart index 3abecc6..1fd76e3 100644 --- a/lib/classes/notifications.dart +++ b/lib/classes/notifications.dart @@ -18,6 +18,7 @@ final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterL class AppNotifications { static final AppNotifications _instance = AppNotifications._internal(); + AppNotifications._internal(); factory AppNotifications() => _instance; @@ -46,7 +47,6 @@ class AppNotifications { // if (Platform.isAndroid) { // hmsApiAvailability = HmsApiAvailability(); // } - await requestPermissions(); AppState().setDeviceToken = firebaseToken; await Permission.notification.isDenied.then((bool value) { @@ -122,7 +122,7 @@ class AppNotifications { Utils.saveStringFromPrefs("notificationData", message.data["user_chat_history_response"].toString()); } else if (message.data.isNotEmpty && message.data["messageType"] == 'call') { logger.d(message.data); - ChatVoipCall().showCallkitIncoming(uuid: const Uuid().v4(), data: message); + ChatVoipCall().showCallkitIncoming(uuid: const Uuid().v4(), data: message); } } @@ -135,17 +135,14 @@ class AppNotifications { } } - Future backgroundMessageHandler(RemoteMessage message) async { - - //await Firebase.initializeApp(); + await Firebase.initializeApp(); print("res: ------background message--------"); - logger.w(message); if (message.data.isNotEmpty && message.data["messageType"] == 'chat') { Utils.saveStringFromPrefs("isAppOpendByChat", "false"); Utils.saveStringFromPrefs("notificationData", message.data["user_chat_history_response"].toString()); } else if (message.data.isNotEmpty && message.data["messageType"] == 'call') { logger.d(message.data); - ChatVoipCall().showCallkitIncoming(uuid: const Uuid().v4(), data: message, background: true); + ChatVoipCall().showCallkitIncoming(uuid: const Uuid().v4(), data: message, background: true); } }