diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index e6985b8..0401400 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -124,7 +124,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ), ); notifyListeners(); - getUserImages(); + if (searchedChats!.isNotEmpty) { + getUserImages(); + } } Future invokeUserChatHistoryNotDeliveredAsync({required int userId}) async { @@ -345,6 +347,14 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } } + dynamic contain = searchedChats!.where((ChatUser element) => element.id == data.first.currentUserId); + if (contain.isEmpty) { + print("Contain Was Emptyyyy"); + searchedChats!.add( + ChatUser(id: data.first.currentUserId, userName: data.first.currentUserName, unreadMessageCount: 0, isImageLoading: false, image: "", isImageLoaded: true), + ); + notifyListeners(); + } setMsgTune(); userChatHistory.insert(0, data.first); @@ -740,6 +750,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } } + notifyListeners(); } diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 0a8cb42..76aa027 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -85,7 +85,7 @@ class _ChatHomeState extends State { onPageChanged: (int pageIndex) { setState(() { tabIndex = pageIndex; - + }); }, children: [ diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 73868c7..610b501 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -19,6 +19,7 @@ import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_s import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; +import 'package:pull_to_refresh/pull_to_refresh.dart'; class ChatHomeScreen extends StatefulWidget { const ChatHomeScreen({Key? key}) : super(key: key); @@ -31,6 +32,16 @@ class _ChatHomeScreenState extends State { TextEditingController search = TextEditingController(); late ChatProviderModel data; + final RefreshController _rc = RefreshController(initialRefresh: false); + + void getMoreChat() async { + data.getUserRecentChats(); + await Future.delayed( + const Duration(milliseconds: 1000), + ); + _rc.loadComplete(); + } + @override void initState() { super.initState(); @@ -84,122 +95,136 @@ class _ChatHomeScreenState extends State { ), ).paddingOnly(top: 20, bottom: 14), if (m.searchedChats != null) - ListView.separated( - itemCount: m.searchedChats!.length, - shrinkWrap: true, - physics: const ClampingScrollPhysics(), - padding: const EdgeInsets.only(bottom: 80.0), - itemBuilder: (BuildContext context, int index) { - return SizedBox( - height: 55, - child: Row( - children: [ - Stack( - children: [ - if (m.searchedChats![index].isImageLoading!) - const SizedBox( - height: 48, - width: 48, - ).toShimmer().circle(30), - if (m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isNotEmpty) - CircularAvatar( - radius: 20, - height: 48, - width: 48, - url: m.searchedChats![index].image, - isImageBase64: true, - ), - if (!m.searchedChats![index].isImageLoading! && m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isEmpty) - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - ), - ).circle(10), - ) - ], - ), - Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), - ], - ).expanded, - SizedBox( - width: 60, - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.end, - mainAxisSize: MainAxisSize.max, + SmartRefresher( + enablePullDown: true, + enablePullUp: false, + onRefresh: (){ + getMoreChat(); + }, + header: const MaterialClassicHeader( + color: MyColors.gradiantEndColor, + ), + controller: _rc, + reverse: false, + child: ListView.separated( + itemCount: m.searchedChats!.length, + shrinkWrap: true, + physics: const ClampingScrollPhysics(), + padding: const EdgeInsets.only(bottom: 80.0), + itemBuilder: (BuildContext context, int index) { + return SizedBox( + height: 55, + child: Row( + children: [ + Stack( children: [ - if (m.searchedChats![index].unreadMessageCount! > 0) - Container( - alignment: Alignment.center, - width: 18, - height: 18, - decoration: const BoxDecoration( - color: MyColors.redColor, - borderRadius: BorderRadius.all( - Radius.circular(20), - ), + if (m.searchedChats![index].isImageLoading!) + const SizedBox( + height: 48, + width: 48, + ).toShimmer().circle(30), + if (m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isNotEmpty) + CircularAvatar( + radius: 20, + height: 48, + width: 48, + url: m.searchedChats![index].image, + isImageBase64: true, + ), + if (!m.searchedChats![index].isImageLoading! && m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isEmpty) + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, ), - child: (m.searchedChats![index].unreadMessageCount!.toString()) - .toText10( - color: MyColors.white, - ) - .center, - ).paddingOnly(right: 10).center, - Icon( - m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == false ? Icons.star_sharp : Icons.star_sharp, - color: m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == true ? MyColors.yellowColor : MyColors.grey35Color, - ).onPress( - () { - if (m.searchedChats![index].isFav == null || m.searchedChats![index].isFav == false) { - m.favoriteUser( - userID: AppState().chatDetails!.response!.id!, - targetUserID: m.searchedChats![index].id!, - ); - } else if (m.searchedChats![index].isFav == true) { - m.unFavoriteUser( - userID: AppState().chatDetails!.response!.id!, - targetUserID: m.searchedChats![index].id!, - ); - } else { - m.favoriteUser( - userID: AppState().chatDetails!.response!.id!, - targetUserID: m.searchedChats![index].id!, - ); - } - }, - ).center + ).circle(10), + ) + ], + ).onPress(() { + print(jsonEncode(m.searchedChats![index])); + }), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), ], + ).expanded, + SizedBox( + width: 60, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + if (m.searchedChats![index].unreadMessageCount! > 0) + Container( + alignment: Alignment.center, + width: 18, + height: 18, + decoration: const BoxDecoration( + color: MyColors.redColor, + borderRadius: BorderRadius.all( + Radius.circular(20), + ), + ), + child: (m.searchedChats![index].unreadMessageCount!.toString()) + .toText10( + color: MyColors.white, + ) + .center, + ).paddingOnly(right: 10).center, + Icon( + m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == false ? Icons.star_sharp : Icons.star_sharp, + color: m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == true ? MyColors.yellowColor : MyColors.grey35Color, + ).onPress( + () { + if (m.searchedChats![index].isFav == null || m.searchedChats![index].isFav == false) { + m.favoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.searchedChats![index].id!, + ); + } else if (m.searchedChats![index].isFav == true) { + m.unFavoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.searchedChats![index].id!, + ); + } else { + m.favoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.searchedChats![index].id!, + ); + } + }, + ).center + ], + ), ), - ), - ], - ), - ).onPress(() { - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, - ).then((Object? value) { - m.clearSelections(); - m.notifyListeners(); + ], + ), + ).onPress(() { + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, + ).then((Object? value) { + m.clearSelections(); + m.notifyListeners(); + }); }); - }); - }, - separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 59), - ), + }, + separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 59), + ), + ).expanded, ], ).paddingOnly(left: 21, right: 21); },