Merge branch 'development_aamir' into 'master'

Chat Fixes

See merge request Cloud_Solution/mohemm-flutter-app!107
merge-requests/109/head
haroon amjad 3 years ago
commit 31c24a54ec

@ -60,17 +60,6 @@ class ChatApiClient {
json.decode(response.body),
);
} catch (e) {
// if (e.message == "api_common_unauthorized") {
// user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken();
// if (userLoginResponse.response != null) {
// AppState().setchatUserDetails = userLoginResponse;
// getRecentChats();
// } else {
// Utils.showToast(
// userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr",
// );
// }
// }
throw e;
}
}
@ -97,16 +86,6 @@ class ChatApiClient {
}
return response;
} catch (e) {
// e as APIException;
// if (e.message == "api_common_unauthorized") {
// user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken();
// if (userLoginResponse.response != null) {
// AppState().setchatUserDetails = userLoginResponse;
// getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal);
// } else {
// Utils.showToast(userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr");
// }
// }
throw e;
}
}
@ -135,15 +114,6 @@ class ChatApiClient {
return favoriteChatUser;
} catch (e) {
e as APIException;
// if (e.message == "api_common_unauthorized") {
// user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken();
// if (userLoginResponse.response != null) {
// AppState().setchatUserDetails = userLoginResponse;
// unFavUser(userID: userID, targetUserID: targetUserID);
// } else {
// Utils.showToast(userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr");
// }
// }
throw e;
}
}

@ -36,6 +36,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
String chatCID = '';
bool isLoading = true;
bool isChatScreenActive = false;
int receiverID = 0;
late File selectedFile;
bool isFileSelected = false;
String sFileType = "";
@ -142,6 +144,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
if (isNewChat) userChatHistory = [];
if (!loadMore) paginationVal = 0;
isChatScreenActive = true;
receiverID = receiverUID;
Response response = await ChatApiClient().getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal);
if (response.statusCode == 204) {
if (isNewChat) {
@ -160,7 +163,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
isLoading = false;
notifyListeners();
markRead(userChatHistory, receiverUID);
if (isChatScreenActive && receiverUID == receiverID) {
markRead(userChatHistory, receiverUID);
}
generateConvId();
}
@ -371,9 +376,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
}
}
setMsgTune();
userChatHistory.insert(0, data.first);
if (isChatScreenActive && data.first.currentUserId == receiverID) {
userChatHistory.insert(0, data.first);
}
if (searchedChats != null && !isChatScreenActive) {
if (searchedChats != null) {
for (ChatUser user in searchedChats!) {
if (user.id == data.first.currentUserId) {
int tempCount = user.unreadMessageCount ?? 0;
@ -384,7 +391,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
}
List list = [
{"userChatHistoryId": data.first.userChatHistoryId, "TargetUserId": temp.first.targetUserId, "isDelivered": true, "isSeen": isChatScreenActive ? true : false}
{"userChatHistoryId": data.first.userChatHistoryId, "TargetUserId": temp.first.targetUserId, "isDelivered": true, "isSeen": isChatScreenActive && data.first.currentUserId == receiverID ? true : false}
];
updateUserChatHistoryOnMsg(list);
invokeChatCounter(userId: AppState().chatDetails!.response!.id!);
@ -746,6 +753,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
searchedChats = pChatHistory;
search.clear();
isChatScreenActive = false;
receiverID = 0;
paginationVal = 0;
message.text = '';
isFileSelected = false;
@ -759,6 +767,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
searchedChats = pChatHistory;
search.clear();
isChatScreenActive = false;
receiverID = 0;
paginationVal = 0;
message.text = '';
isFileSelected = false;
@ -868,7 +877,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
void onNewChatConversion(List<Object?>? params) {
dynamic items = params!.toList();
logger.d(items);
chatUConvCounter = items[0]["singleChatCount"] ?? 0;
notifyListeners();
}

@ -101,15 +101,22 @@ class ChatBubble extends StatelessWidget {
],
),
),
).paddingOnly(right: 5, bottom: 7),
).paddingOnly(bottom: 7),
if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3)
showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription).paddingOnly(right: 5).onPress(() {
showDialog(
context: context,
anchorPoint: screenOffset,
builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!),
);
})
ClipRRect(
borderRadius: BorderRadius.circular(5.0),
child: SizedBox(
height: 140,
width: 227,
child: showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription).onPress(() {
showDialog(
context: context,
anchorPoint: screenOffset,
builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!),
);
}),
),
).paddingOnly(bottom: 4)
else
Row(
children: [
@ -132,12 +139,12 @@ class ChatBubble extends StatelessWidget {
),
),
],
).paddingOnly(top: 11, left: 13, right: 7, bottom: 5).objectContainerView(disablePadding: true).paddingOnly(left: MediaQuery.of(context).size.width * 0.3);
).paddingOnly(top: 11, left: 13, right: 13, bottom: 5).objectContainerView(disablePadding: true).paddingOnly(left: MediaQuery.of(context).size.width * 0.3);
}
Widget receiptUser(BuildContext context) {
return Container(
padding: const EdgeInsets.only(top: 11, left: 13, right: 7, bottom: 5),
padding: const EdgeInsets.only(top: 11, left: 13, right: 13, bottom: 5),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
gradient: const LinearGradient(
@ -190,15 +197,22 @@ class ChatBubble extends StatelessWidget {
],
),
),
).paddingOnly(right: 5, bottom: 7),
).paddingOnly(bottom: 7),
if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3)
showImage(isReplyPreview: false, fileName: cItem.contant ?? "", fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription ?? "image/jpg").paddingOnly(right: 5).onPress(() {
showDialog(
context: context,
anchorPoint: screenOffset,
builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant ?? "", img: cItem.image!),
);
})
ClipRRect(
borderRadius: BorderRadius.circular(5.0),
child: SizedBox(
height: 140,
width: 227,
child: showImage(isReplyPreview: false, fileName: cItem.contant ?? "", fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription ?? "image/jpg").onPress(() {
showDialog(
context: context,
anchorPoint: screenOffset,
builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant ?? "", img: cItem.image!),
);
}),
),
).paddingOnly(bottom: 4)
else
Row(
children: [
@ -212,7 +226,9 @@ class ChatBubble extends StatelessWidget {
),
Align(
alignment: Alignment.centerRight,
child: dateTime.toText10(color: Colors.white.withOpacity(.71),),
child: dateTime.toText10(
color: Colors.white.withOpacity(.71),
),
),
],
),
@ -220,12 +236,15 @@ class ChatBubble extends StatelessWidget {
}
Widget showImage({required bool isReplyPreview, required String fileName, required String fileTypeDescription}) {
if (isReplyPreview) {}
if (cItem.isImageLoaded! && cItem.image != null) {
return Image.memory(
cItem.image!,
height: isReplyPreview ? 32 : 140,
width: isReplyPreview ? 32 : 227,
fit: BoxFit.cover,
alignment: Alignment.center,
);
} else {
return FutureBuilder<Uint8List>(
@ -233,7 +252,7 @@ class ChatBubble extends StatelessWidget {
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.connectionState != ConnectionState.waiting) {
if (snapshot.data == null) {
return SizedBox();
return const SizedBox();
} else {
cItem.image = snapshot.data;
cItem.isImageLoaded = true;
@ -242,6 +261,7 @@ class ChatBubble extends StatelessWidget {
height: isReplyPreview ? 32 : 140,
width: isReplyPreview ? 32 : 227,
fit: BoxFit.cover,
alignment: Alignment.center,
);
}
} else {

@ -85,14 +85,14 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
showTyping: true,
chatUser: params!.chatUser,
actions: [
SvgPicture.asset("assets/icons/chat/call.svg", width: 21, height: 23).onPress(() {
// makeCall(callType: "AUDIO", con: hubConnection);
}),
24.width,
SvgPicture.asset("assets/icons/chat/video_call.svg", width: 21, height: 18).onPress(() {
// makeCall(callType: "VIDEO", con: hubConnection);
}),
21.width,
// SvgPicture.asset("assets/icons/chat/call.svg", width: 21, height: 23).onPress(() {
// // makeCall(callType: "AUDIO", con: hubConnection);
// }),
// 24.width,
// SvgPicture.asset("assets/icons/chat/video_call.svg", width: 21, height: 18).onPress(() {
// // makeCall(callType: "VIDEO", con: hubConnection);
// }),
// 21.width,
],
),
body: SafeArea(

Loading…
Cancel
Save