From e598f3b5ad71d5c840129a46f260ff74d62baced Mon Sep 17 00:00:00 2001 From: WaseemAbbasi22 Date: Wed, 31 Dec 2025 09:39:36 +0300 Subject: [PATCH] chat bug fixes --- .../cx_module/chat/chat_api_client.dart | 35 ++----------------- lib/modules/cx_module/chat/chat_page.dart | 14 +++++--- lib/modules/cx_module/chat/chat_provider.dart | 18 ++-------- lib/modules/cx_module/chat/chat_widget.dart | 14 ++++---- 4 files changed, 21 insertions(+), 60 deletions(-) diff --git a/lib/modules/cx_module/chat/chat_api_client.dart b/lib/modules/cx_module/chat/chat_api_client.dart index 77770e83..639849a3 100644 --- a/lib/modules/cx_module/chat/chat_api_client.dart +++ b/lib/modules/cx_module/chat/chat_api_client.dart @@ -35,6 +35,7 @@ import 'model/user_chat_history_model.dart'; // import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as user; // import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; +//Need to refector this remove unused code. class ChatApiClient { static final ChatApiClient _instance = ChatApiClient._internal(); @@ -97,47 +98,17 @@ class ChatApiClient { Future resetCountApi(int moduleCode, int referenceNumber, String? employeeNumber) async { final Map payload = { - 'moduleCode': moduleCode, - 'ReferenceNumber': referenceNumber, + 'moduleCode': "$moduleCode", + 'ReferenceNumber': "$referenceNumber", }; - - // final headers = chatAckHeaders( - // apiKey: URLs.chatApiKey, - // employeeNumber: employeeNumber.toString(), - // origin: 'http://localhost:4400', - // referer: 'http://localhost:4400/', - // userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', - // ); - final Response response = await ApiClient().postJsonForResponse( URLs.resetMessageCount, payload, token: chatLoginResponse!.token, - // headers: headers, ); - // Response response = await ApiClient().postJsonForResponse( - // "${URLs.resetMessageCount}?moduleCode=$moduleCode&ReferenceNumber=$referenceNumber", {"moduleCode": moduleCode.toString(), "ReferenceNumber": referenceNumber.toString()}, - // token: chatLoginResponse!.token); - - return response.statusCode == 200; } - Map chatAckHeaders({ - required String apiKey, - required String employeeNumber, - required String origin, - required String referer, - required String userAgent, - String acceptLanguage = 'en-US,en;q=0.9', - }) { - return { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': 'application/json', - // 'X-API-Key': apiKey, - // 'X-Employee-Number': employeeNumber, - }; - } Future> viewAllDocuments(int moduleId, int referenceId) async { Response response = await ApiClient().getJsonForResponse("${URLs.chatHubUrlApi}/attachments/conversation?referenceId=$referenceId&moduleCode=$moduleId", token: chatLoginResponse!.token); diff --git a/lib/modules/cx_module/chat/chat_page.dart b/lib/modules/cx_module/chat/chat_page.dart index d4b44721..060bd52b 100644 --- a/lib/modules/cx_module/chat/chat_page.dart +++ b/lib/modules/cx_module/chat/chat_page.dart @@ -28,7 +28,7 @@ import 'helper/chat_file_picker.dart'; import 'helper/chat_file_viewer.dart'; import 'model/get_single_user_chat_list_model.dart'; import 'model/user_chat_history_model.dart'; - +//Need to refactor this ... enum ChatState { idle, voiceRecordingStarted, voiceRecordingCompleted } class ChatPage extends StatefulWidget { @@ -66,7 +66,10 @@ class _ChatPageState extends State { @override void initState() { super.initState(); - loadChatHistory(); + WidgetsBinding.instance.addPostFrameCallback((_) { + loadChatHistory(); + }); + playerController.addListener(() async { // if (playerController.playerState == PlayerState.playing && playerController.maxDuration == await playerController.getDuration()) { // await playerController.stopPlayer(); @@ -99,9 +102,12 @@ class _ChatPageState extends State { ? Provider.of(context, listen: false).currentWorkOrder!.data!.workOrderCreatedBy!.employeeId! : Provider.of(context, listen: false).currentWorkOrder!.data!.workOrderContactPerson.first.employeeId!)) : ""); - ChatProvider chatProvider = Provider.of(context, listen: false); + final chatProvider = context.read(); chatProvider.connectToHub(widget.moduleId, widget.requestId, myEmployeeId, receiver, widget.readOnly, isMounted: mounted); - + bool readStatus = await chatProvider.resetCount(moduleId: widget.moduleId, referenceNo: widget.requestId, userId: context.userProvider.user?.id); + if (readStatus) { + chatProvider.chatParticipantModel?.unreadCount = 0; + } } @override diff --git a/lib/modules/cx_module/chat/chat_provider.dart b/lib/modules/cx_module/chat/chat_provider.dart index 84282a64..46ba0d3c 100644 --- a/lib/modules/cx_module/chat/chat_provider.dart +++ b/lib/modules/cx_module/chat/chat_provider.dart @@ -55,6 +55,8 @@ import 'model/get_single_user_chat_list_model.dart'; import 'model/user_chat_history_model.dart'; // import 'get_single_user_chat_list_model.dart'; +//Need to refactor this remove unused code. + HubConnection? chatHubConnection; class ChatProvider with ChangeNotifier, DiagnosticableTreeMixin { @@ -386,22 +388,6 @@ class ChatProvider with ChangeNotifier, DiagnosticableTreeMixin { } } - // Future resetCount({ required int moduleId, - // required int referenceNo}) async { - // Response response; - // try { - // response = await ApiManager.instance.post("${URLs.resetMessageCount}?moduleCode=$moduleId&ReferenceNumber=$referenceNo", body: {}); - // notifyListeners(); - // if (response.statusCode == 200) { - // return true; - // } - // return false; - // } catch (error) { - // notifyListeners(); - // return false; - // } - // } - void updateUserChatHistoryStatusAsync(List data) { try { chatHubConnection!.invoke("UpdateUserChatHistoryStatusAsync", args: [data]); diff --git a/lib/modules/cx_module/chat/chat_widget.dart b/lib/modules/cx_module/chat/chat_widget.dart index 788f470b..43c5d5fc 100644 --- a/lib/modules/cx_module/chat/chat_widget.dart +++ b/lib/modules/cx_module/chat/chat_widget.dart @@ -1,4 +1,4 @@ -import 'dart:developer'; + import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -43,8 +43,10 @@ class _ChatWidgetState extends State { @override void initState() { super.initState(); - Provider.of(context, listen: false).reset(); - getChatToken(); + WidgetsBinding.instance.addPostFrameCallback((_) { + Provider.of(context, listen: false).reset(); + getChatToken(); + }); } void getChatToken() { @@ -86,11 +88,7 @@ class _ChatWidgetState extends State { minSize: 18, child: IconButton( icon: const Icon(Icons.chat_bubble), - onPressed: () async { - bool readStatus = await chatProvider.resetCount(moduleId: widget.moduleId, referenceNo: widget.requestId, userId: context.userProvider.user?.id); - if (readStatus) { - chatProvider.chatParticipantModel?.unreadCount = 0; - } + onPressed: () { Navigator.push( context, CupertinoPageRoute(