|  |  |  | @ -91,18 +91,18 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { | 
		
	
		
			
				|  |  |  |  |         .build(); | 
		
	
		
			
				|  |  |  |  |     hubConnection.onclose( | 
		
	
		
			
				|  |  |  |  |       ({Exception? error}) { | 
		
	
		
			
				|  |  |  |  |         logger.d(error); | 
		
	
		
			
				|  |  |  |  |         //  logger.d(error); | 
		
	
		
			
				|  |  |  |  |       }, | 
		
	
		
			
				|  |  |  |  |     ); | 
		
	
		
			
				|  |  |  |  |     hubConnection.onreconnecting( | 
		
	
		
			
				|  |  |  |  |       ({Exception? error}) { | 
		
	
		
			
				|  |  |  |  |         logger.d(error); | 
		
	
		
			
				|  |  |  |  |         logger.d("Reconnecting"); | 
		
	
		
			
				|  |  |  |  |         // logger.d(error); | 
		
	
		
			
				|  |  |  |  |         // logger.d("Reconnecting"); | 
		
	
		
			
				|  |  |  |  |       }, | 
		
	
		
			
				|  |  |  |  |     ); | 
		
	
		
			
				|  |  |  |  |     hubConnection.onreconnected( | 
		
	
		
			
				|  |  |  |  |       ({String? connectionId}) { | 
		
	
		
			
				|  |  |  |  |         logger.d("Reconnected"); | 
		
	
		
			
				|  |  |  |  |         // logger.d("Reconnected"); | 
		
	
		
			
				|  |  |  |  |       }, | 
		
	
		
			
				|  |  |  |  |     ); | 
		
	
		
			
				|  |  |  |  |     if (hubConnection.state != HubConnectionState.Connected) { | 
		
	
	
		
			
				
					|  |  |  | @ -110,23 +110,39 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { | 
		
	
		
			
				|  |  |  |  |       hubConnection.on("OnUpdateUserStatusAsync", changeStatus); | 
		
	
		
			
				|  |  |  |  |       hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |       // hubConnection.on("OnUserTypingAsync", onUserTyping); | 
		
	
		
			
				|  |  |  |  |       hubConnection.on("OnUserTypingAsync", onUserTyping); | 
		
	
		
			
				|  |  |  |  |       // hubConnection.on("OnUserCountAsync", userCountAsync); | 
		
	
		
			
				|  |  |  |  |       // hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); | 
		
	
		
			
				|  |  |  |  |       // hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); | 
		
	
		
			
				|  |  |  |  |       hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |       hubConnection.on("OnUpdateUserStatusAsync", changeStatus); | 
		
	
		
			
				|  |  |  |  |       hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |       // hubConnection.on("OnUserTypingAsync", onUserTyping); | 
		
	
		
			
				|  |  |  |  |       hubConnection.on("OnUserTypingAsync", onUserTyping); | 
		
	
		
			
				|  |  |  |  |       // hubConnection.on("OnUserCountAsync", userCountAsync); | 
		
	
		
			
				|  |  |  |  |       // hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); | 
		
	
		
			
				|  |  |  |  |       // hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); | 
		
	
		
			
				|  |  |  |  |       hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     isLoading = false; | 
		
	
		
			
				|  |  |  |  |     notifyListeners(); | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   void updateUserChatStatus(List<Object?>? args) { | 
		
	
		
			
				|  |  |  |  |     dynamic items = args!.toList(); | 
		
	
		
			
				|  |  |  |  |     for (dynamic cItem in items[0]) { | 
		
	
		
			
				|  |  |  |  |       for (SingleUserChatModel chat in userChatHistory) { | 
		
	
		
			
				|  |  |  |  |         if (chat.userChatHistoryId.toString() == cItem["userChatHistoryId"].toString()) { | 
		
	
		
			
				|  |  |  |  |           logger.d(jsonEncode(chat)); | 
		
	
		
			
				|  |  |  |  |           chat.isSeen = cItem["isSeen"]; | 
		
	
		
			
				|  |  |  |  |           chat.isDelivered = cItem["isDelivered"]; | 
		
	
		
			
				|  |  |  |  |           notifyListeners(); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   void userCountAsync(List<Object?>? args) { | 
		
	
		
			
				|  |  |  |  |     List items = args!.toList(); | 
		
	
		
			
				|  |  |  |  |     print("---------------------------------User Count Async -------------------------------------"); | 
		
	
	
		
			
				
					|  |  |  | @ -166,7 +182,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { | 
		
	
		
			
				|  |  |  |  |   void changeStatus(List<Object?>? args) { | 
		
	
		
			
				|  |  |  |  |     //  print("================= Status Online // Offline  ===================="); | 
		
	
		
			
				|  |  |  |  |     List items = args!.toList(); | 
		
	
		
			
				|  |  |  |  |     logger.d(items); | 
		
	
		
			
				|  |  |  |  |     // logger.d(items); | 
		
	
		
			
				|  |  |  |  |     for (ChatUser user in searchedChats!) { | 
		
	
		
			
				|  |  |  |  |       if (user.id == items.first["id"]) { | 
		
	
		
			
				|  |  |  |  |         user.userStatus = items.first["userStatus"]; | 
		
	
	
		
			
				
					|  |  |  | @ -192,9 +208,14 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   Future<void> onMsgReceived(List<Object?>? parameters) async { | 
		
	
		
			
				|  |  |  |  |     List<SingleUserChatModel> data = []; | 
		
	
		
			
				|  |  |  |  |     List<SingleUserChatModel> temp = []; | 
		
	
		
			
				|  |  |  |  |     for (dynamic msg in parameters!) { | 
		
	
		
			
				|  |  |  |  |       data = getSingleUserChatModel(jsonEncode(msg)); | 
		
	
		
			
				|  |  |  |  |       logger.d(msg); | 
		
	
		
			
				|  |  |  |  |       temp = getSingleUserChatModel(jsonEncode(msg)); | 
		
	
		
			
				|  |  |  |  |       data.first.targetUserId = temp.first.currentUserId; | 
		
	
		
			
				|  |  |  |  |       data.first.targetUserName = temp.first.currentUserName; | 
		
	
		
			
				|  |  |  |  |       data.first.currentUserId = temp.first.targetUserId; | 
		
	
		
			
				|  |  |  |  |       data.first.currentUserName = temp.first.targetUserName; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     userChatHistory.add(data.first); | 
		
	
		
			
				|  |  |  |  |     notifyListeners(); | 
		
	
	
		
			
				
					|  |  |  | @ -207,11 +228,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { | 
		
	
		
			
				|  |  |  |  |     for (ChatUser user in searchedChats!) { | 
		
	
		
			
				|  |  |  |  |       if (user.id == parameters![1] && parameters[0] == true) { | 
		
	
		
			
				|  |  |  |  |         user.isTyping = parameters[0] as bool?; | 
		
	
		
			
				|  |  |  |  |       } else { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         Future.delayed( | 
		
	
		
			
				|  |  |  |  |           const Duration(milliseconds: 500), | 
		
	
		
			
				|  |  |  |  |           const Duration(seconds: 2), | 
		
	
		
			
				|  |  |  |  |           () { | 
		
	
		
			
				|  |  |  |  |             user.isTyping = false; | 
		
	
		
			
				|  |  |  |  |             notifyListeners(); | 
		
	
		
			
				|  |  |  |  |           }, | 
		
	
		
			
				|  |  |  |  |         ); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
	
		
			
				
					|  |  |  | 
 |