fixed messages bug

mirza_development
Faiz Hashmi 2 years ago
parent 98b35fbc61
commit 6245aa9ef4

@ -112,8 +112,10 @@ class AppRoutes {
class ChatViewArguments {
final RequestModel? requestModel;
final ChatTypeEnum chatTypeEnum;
final String senderId;
final String receiverId;
ChatViewArguments({required this.chatTypeEnum, this.requestModel});
ChatViewArguments({required this.chatTypeEnum, this.requestModel, required this.senderId, required this.receiverId});
}
class OfferListPageArguments {

@ -1,5 +1,3 @@
import 'dart:convert';
import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
@ -25,6 +23,11 @@ class ChatVM extends ChangeNotifier {
chatMessageText = value;
}
clearChatMessageText() {
chatMessageText = "";
notifyListeners();
}
Future<void> onNewMessageReceived({required List<ChatMessageModel> messages}) async {
chatMessages.addAll(messages);
notifyListeners();
@ -43,7 +46,6 @@ class ChatVM extends ChangeNotifier {
chat.add(chatMessage);
}
onNewMessageReceived(messages: chat);
Utils.showToast("I received ping : ${arguments.toString()}");
logger.i("I received ping : ${arguments.toString()}");
});
} catch (e) {
@ -100,11 +102,14 @@ class ChatVM extends ChangeNotifier {
required int requestId,
required String offerPrice,
}) async {
if (message.isEmpty) return false;
if (hubConnection.state != HubConnectionState.connected) {
await buildHubConnection();
}
if (hubConnection.state == HubConnectionState.connected) {
final providerId = AppState().getUser.data!.userInfo!.providerId;
final userId = AppState().getUser.data!.userInfo!.userId.toString();
final name = AppState().getUser.data!.userInfo!.firstName.toString();
hubConnection.invoke(
"SendMessageRequestOffer",
args: <Object>[
@ -113,14 +118,6 @@ class ChatVM extends ChangeNotifier {
"MessageType": chatMessageType.getIdFromChatMessageTypeEnum(),
"Message": message,
"RequestID": requestId,
// "RequestOfferID": 0,
// "RequestOffer": <String, dynamic>{
// "RequestID": requestId,
// "Price": double.parse(offerPrice),
// "ServiceProviderID": providerId,
// "OfferStatus": RequestOfferStatusEnum.offer.getIdFromRequestOfferStatusEnum(),
// "Comment": message,
// },
}
],
).catchError((e) {
@ -128,6 +125,16 @@ class ChatVM extends ChangeNotifier {
Utils.showToast(e.toString());
return false;
});
ChatMessageModel chatMessageModel = ChatMessageModel(
messageType: chatMessageType.getIdFromChatMessageTypeEnum(),
message: message,
isMyMessage: true,
requestID: requestId,
senderName: name,
senderUserID: userId,
);
onNewMessageReceived(messages: [chatMessageModel]);
}
return true;
}

@ -1,6 +1,7 @@
// ignore_for_file: use_build_context_synchronously
// ignore_for_file: use_build_context_synchronously, avoid_function_literals_in_foreach_calls
import 'dart:convert';
import 'dart:developer';
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/classes/app_state.dart';
@ -47,7 +48,7 @@ class RequestsVM extends BaseVM {
requestsTypeFilterOptions.add(FilterListModel(title: myRequestsTypeEnum[i].enumValueStr, isSelected: false, id: myRequestsTypeEnum[i].enumValue));
}
print("requestsTypeFilterOptions: ${requestsTypeFilterOptions.toString()}");
log("requestsTypeFilterOptions: ${requestsTypeFilterOptions.toString()}");
notifyListeners();
}
@ -110,8 +111,8 @@ class RequestsVM extends BaseVM {
}
void pickMultipleImages() async {
List<File> Images = await commonServices.pickMultipleImages();
pickedVehicleImages.addAll(Images);
List<File> images = await commonServices.pickMultipleImages();
pickedVehicleImages.addAll(images);
if (pickedVehicleImages.isNotEmpty) vehicleImageError = "";
notifyListeners();
}
@ -286,7 +287,7 @@ class RequestsVM extends BaseVM {
}
} catch (e, s) {
Utils.hideLoading(context);
print(s);
log(s.toString());
}
}
}
@ -407,11 +408,24 @@ class RequestsVM extends BaseVM {
);
if (status) {
final senderName = AppState().getUser.data!.userInfo!.firstName;
final senderId = AppState().getUser.data!.userInfo!.userId;
// resetSendOfferBottomSheet();
Navigator.pop(context);
ChatMessageModel chatMessageModel = ChatMessageModel(isMyMessage: true, message: message, messageType: ChatMessageTypeEnum.freeText, );
context.read<ChatVM>().onNewMessageReceived(messages: messages);
ChatViewArguments chatViewArguments = ChatViewArguments(chatTypeEnum: ChatTypeEnum.requestOffer, requestModel: requestModel);
ChatMessageModel chatMessageModel = ChatMessageModel(
isMyMessage: true,
message: message,
messageType: ChatMessageTypeEnum.freeText.getIdFromChatMessageTypeEnum(),
senderName: senderName,
senderUserID: senderId,
);
context.read<ChatVM>().onNewMessageReceived(messages: [chatMessageModel]);
ChatViewArguments chatViewArguments = ChatViewArguments(
chatTypeEnum: ChatTypeEnum.requestOffer,
requestModel: requestModel,
receiverId: requestModel.customerID,
senderId: senderId ?? "",
);
navigateWithName(context, AppRoutes.chatView, arguments: chatViewArguments);
}
}

@ -63,9 +63,9 @@ class ChatView extends StatelessWidget {
color: MyColors.darkPrimaryColor,
size: 30,
).onPress(
() async {
() async {
final status = await chatVM.onTextMessageSend(
receiverId: "7db5e1ae-6de4-47d7-984b-08db2842f899", //Todo: This should be managed somehow!!
receiverId: chatViewArguments.receiverId,
message: chatVM.chatMessageText,
requestId: chatViewArguments.chatTypeEnum == ChatTypeEnum.requestOffer ? chatViewArguments.requestModel!.id : 0,
offerPrice: "0.0",
@ -73,7 +73,7 @@ class ChatView extends StatelessWidget {
);
if (status) {
chatVM.updateChatMessageText("");
chatVM.clearChatMessageText();
}
},
),

@ -1,4 +1,7 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
@ -79,7 +82,12 @@ class OfferListPage extends StatelessWidget {
),
],
).onPress(() {
ChatViewArguments chatViewArguments = ChatViewArguments(chatTypeEnum: ChatTypeEnum.requestOffer, requestModel: offerListPageArguments.requestModel);
log("here: ${offersModel.serviceProvider!.providerGUID}");
ChatViewArguments chatViewArguments = ChatViewArguments(
chatTypeEnum: ChatTypeEnum.requestOffer,
receiverId: "${offersModel.serviceProvider!.providerGUID}",
senderId: AppState().getUser.data!.userInfo!.userId.toString(),
requestModel: offerListPageArguments.requestModel);
navigateWithName(context, AppRoutes.chatView, arguments: chatViewArguments);
}).toContainer(isShadowEnabled: true);
},

Loading…
Cancel
Save