merge-requests/126/head
Aamir Muhammad 3 years ago
parent 407899a602
commit a746b607df

@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart';
class ApiConsts { class ApiConsts {
//static String baseUrl = "http://10.200.204.20:2801/"; // Local server //static String baseUrl = "http://10.200.204.20:2801/"; // Local server
// static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server
// static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server
static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrl = "https://hmgwebservices.com"; // Live server
static String baseUrlServices = baseUrl + "/Services/"; // server static String baseUrlServices = baseUrl + "/Services/"; // server
// static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server
static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/";
@ -44,7 +44,6 @@ class ApiConsts {
static int tabletMinLength = 500; static int tabletMinLength = 500;
} }
class SharedPrefsConsts { class SharedPrefsConsts {
static String isRememberMe = "remember_me"; static String isRememberMe = "remember_me";
static String username = "username"; static String username = "username";

@ -1,4 +1,3 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';

@ -69,6 +69,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
//Chat Home Page Counter //Chat Home Page Counter
int chatUConvCounter = 0; int chatUConvCounter = 0;
/// Search Provider
List<ChatUser>? chatUsersList = [];
int pageNo = 1;
Future<void> getUserAutoLoginToken() async { Future<void> getUserAutoLoginToken() async {
userLoginToken.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); userLoginToken.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken();
if (userLoginResponse.response != null) { if (userLoginResponse.response != null) {
@ -82,7 +86,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
} }
Future<void> buildHubConnection() async { Future<void> buildHubConnection() async {
chatHubConnection = await getHubConnection(); chatHubConnection = await getHubConnection();
await chatHubConnection.start(); await chatHubConnection.start();
if (kDebugMode) { if (kDebugMode) {
@ -173,7 +176,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
if (isNewChat) { if (isNewChat) {
userChatHistory = []; userChatHistory = [];
} else if (loadMore) { } else if (loadMore) {
Utils.showToast("No More Data To Load");
} }
} else { } else {
if (loadMore) { if (loadMore) {
@ -942,8 +945,26 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
} }
} }
} }
for (ChatUser user in chatUsersList!) {
if (user.id == favoriteChatUser.response!.targetUserId!) {
user.isFav = favoriteChatUser.response!.isFav;
dynamic contain = favUsersList!.where((ChatUser element) => element.id == favoriteChatUser.response!.targetUserId!);
if (contain.isEmpty) {
favUsersList.add(user);
}
}
}
}
for (ChatUser user in favUsersList) {
if (user.id == targetUserID) {
user.userLocalDownlaodedImage = null;
user.isImageLoading = false;
user.isImageLoaded = false;
}
} }
notifyListeners(); notifyListeners();
} }
Future<void> unFavoriteUser({required int userID, required int targetUserID}) async { Future<void> unFavoriteUser({required int userID, required int targetUserID}) async {
@ -960,6 +981,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
); );
} }
for (ChatUser user in chatUsersList!) {
if (user.id == favoriteChatUser.response!.targetUserId!) {
user.isFav = favoriteChatUser.response!.isFav;
}
}
notifyListeners(); notifyListeners();
} }
@ -1348,6 +1375,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
} }
} }
} }
for (ChatUser user in searchedChats!) {
for (ChatUser teamUser in teamMembersList!) {
if (user.id == teamUser.id) {
teamUser.userStatus = user.userStatus;
}
}
}
isLoading = false; isLoading = false;
notifyListeners(); notifyListeners();
} }

@ -20,10 +20,12 @@ import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart';
import 'package:mohem_flutter_app/models/get_action_history_list_model.dart'; import 'package:mohem_flutter_app/models/get_action_history_list_model.dart';
import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart'; import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart';
import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart';
import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
import 'package:mohem_flutter_app/ui/chat/chat_detailed_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_detailed_screen.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart';
import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart';
import 'package:provider/provider.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart';
class SearchEmployeeBottomSheet extends StatefulWidget { class SearchEmployeeBottomSheet extends StatefulWidget {
@ -64,8 +66,7 @@ class _SearchEmployeeBottomSheetState extends State<SearchEmployeeBottomSheet> {
List<ReplacementList>? nonFavouriteUserList; List<ReplacementList>? nonFavouriteUserList;
// Chat Items // Chat Items
List<ChatUser>? chatUsersList = []; late ChatProviderModel provider;
int pageNo = 1;
int _selectedSearchIndex = 0; int _selectedSearchIndex = 0;
@ -92,46 +93,37 @@ class _SearchEmployeeBottomSheetState extends State<SearchEmployeeBottomSheet> {
} }
void fetchChatUser({bool isNeedLoading = true}) async { void fetchChatUser({bool isNeedLoading = true}) async {
if (pageNo == 1) chatUsersList!.clear(); if (provider.pageNo == 1) provider.chatUsersList!.clear();
try { try {
Utils.showLoading(context); Utils.showLoading(context);
await ChatApiClient().getChatMemberFromSearch(searchText, AppState().chatDetails!.response!.id!, pageNo).then((ChatUserModel value) { await ChatApiClient().getChatMemberFromSearch(searchText, AppState().chatDetails!.response!.id!, provider.pageNo).then((ChatUserModel value) {
print(value.response!.length);
if (value.response != null) { if (value.response != null) {
chatUsersList = value.response; if (provider.pageNo == 1) {
provider.chatUsersList = value.response;
} else {
print("--------------------------Added More----------------------");
provider.chatUsersList!.addAll(value.response!);
}
} }
}); });
chatUsersList!.removeWhere((ChatUser element) => element.id == AppState().chatDetails!.response!.id); provider.chatUsersList!.removeWhere((ChatUser element) => element.id == AppState().chatDetails!.response!.id);
Utils.hideLoading(context); Utils.hideLoading(context);
setState(() {}); setState(() {});
} catch (e) { } catch (e) {
Utils.hideLoading(context); Utils.hideLoading(context);
Utils.handleException(e, context, null); Utils.handleException(e, context, null);
} }
if (isNeedLoading) Utils.hideLoading(context); if (isNeedLoading) Utils.hideLoading(context);
setState(() {}); setState(() {});
return null; return null;
} }
void loadMoreChatUsers() async {
try {
await ChatApiClient().getChatMemberFromSearch(searchText, AppState().chatDetails!.response!.id!, pageNo).then((ChatUserModel value) {
if (value.response != null) {
chatUsersList!.addAll(value.response!);
}
});
chatUsersList!.removeWhere((ChatUser element) => element.id == AppState().chatDetails!.response!.id);
} catch (e) {
Utils.hideLoading(context);
Utils.handleException(e, context, null);
}
}
void scrollListener() async { void scrollListener() async {
if (sc.position.pixels == sc.position.maxScrollExtent) { if (sc.position.pixels == sc.position.maxScrollExtent) {
pageNo++; provider.pageNo++;
setState(() {}); logger.w(provider.chatUsersList!.length);
logger.w(provider.pageNo);
fetchChatUser();
} }
} }
@ -139,6 +131,15 @@ class _SearchEmployeeBottomSheetState extends State<SearchEmployeeBottomSheet> {
void initState() { void initState() {
super.initState(); super.initState();
sc.addListener(scrollListener); sc.addListener(scrollListener);
provider = Provider.of<ChatProviderModel>(context, listen: false);
}
@override
void dispose() {
print("// TODO: implement dispose");
super.dispose();
provider.chatUsersList = [];
provider.pageNo = 1;
} }
@override @override
@ -157,7 +158,7 @@ class _SearchEmployeeBottomSheetState extends State<SearchEmployeeBottomSheet> {
11.height, 11.height,
Row( Row(
children: [ children: [
radioOption("Name", 0, _selectedSearchIndex), radioOption(widget.fromChat ? "UserId" : "Name", 0, _selectedSearchIndex),
radioOption("User Name", 1, _selectedSearchIndex), radioOption("User Name", 1, _selectedSearchIndex),
radioOption("Email", 2, _selectedSearchIndex), radioOption("Email", 2, _selectedSearchIndex),
], ],
@ -222,8 +223,8 @@ class _SearchEmployeeBottomSheetState extends State<SearchEmployeeBottomSheet> {
], ],
).expanded, ).expanded,
if (widget.fromChat) if (widget.fromChat)
if (chatUsersList != null && widget.fromChat) if (provider.chatUsersList != null && widget.fromChat)
chatUsersList!.isEmpty provider.chatUsersList!.isEmpty
? Column( ? Column(
children: [ children: [
20.height, 20.height,
@ -231,56 +232,126 @@ class _SearchEmployeeBottomSheetState extends State<SearchEmployeeBottomSheet> {
], ],
) )
: ListView.separated( : ListView.separated(
physics: const AlwaysScrollableScrollPhysics(), itemCount: provider.chatUsersList!.length,
controller: sc,
shrinkWrap: true, shrinkWrap: true,
itemBuilder: (BuildContext cxt, int index) { physics: const ClampingScrollPhysics(),
controller: sc,
padding: const EdgeInsets.only(bottom: 80.0, top: 20),
itemBuilder: (BuildContext context, int index) {
return SizedBox( return SizedBox(
height: 55, height: 55,
child: ListTile( child: Row(
leading: Stack( children: [
children: [ Stack(
children: <Widget>[
SvgPicture.asset( SvgPicture.asset(
"assets/images/user.svg", "assets/images/user.svg",
height: 48, height: 48,
width: 48, width: 48,
),
Positioned(
right: 5,
bottom: 1,
child: Container(
width: 10,
height: 10,
decoration: BoxDecoration(
color: chatUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red,
borderRadius: const BorderRadius.all(
Radius.circular(10),
),
), ),
), Positioned(
) right: 5,
], bottom: 1,
), child: Container(
title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), width: 10,
minVerticalPadding: 0, height: 10,
onTap: () { decoration: BoxDecoration(
Navigator.pop(context); color: provider.chatUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red,
Navigator.pushNamed( ),
context, ).circle(10),
AppRoutes.chatDetailed, )
arguments: ChatDetailedScreenParams(chatUsersList![index], true), ],
); ),
}, Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
(provider.chatUsersList![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "")
.toText14(color: MyColors.darkTextColor)
.paddingOnly(left: 11, top: 13),
provider.chatUsersList![index].isTyping!
? 'Typing...'
.toText10(
color: MyColors.textMixColor,
)
.paddingOnly(left: 11.0)
: const SizedBox()
],
).expanded,
SizedBox(
width: 60,
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.end,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
if (provider.chatUsersList![index].unreadMessageCount! > 0)
Container(
alignment: Alignment.center,
width: 18,
height: 18,
decoration: const BoxDecoration(
color: MyColors.redColor,
borderRadius: BorderRadius.all(
Radius.circular(20),
),
),
child: (provider.chatUsersList![index].unreadMessageCount!.toString())
.toText10(
color: MyColors.white,
)
.center,
).paddingOnly(right: 10).center,
Icon(
provider.chatUsersList![index].isFav != null && provider.chatUsersList![index].isFav == false ? Icons.star_sharp : Icons.star_sharp,
color: provider.chatUsersList![index].isFav != null && provider.chatUsersList![index].isFav == true ? MyColors.yellowColor : MyColors.grey35Color,
).onPress(
() {
if (provider.chatUsersList![index].isFav == null || provider.chatUsersList![index].isFav == false) {
provider
.favoriteUser(
userID: AppState().chatDetails!.response!.id!,
targetUserID: provider.chatUsersList![index].id!,
)
.then((value) {
setState(() {});
});
} else if (provider.chatUsersList![index].isFav == true) {
provider
.unFavoriteUser(
userID: AppState().chatDetails!.response!.id!,
targetUserID: provider.chatUsersList![index].id!,
)
.then((value) {
setState(() {});
});
} else {
provider
.favoriteUser(
userID: AppState().chatDetails!.response!.id!,
targetUserID: provider.chatUsersList![index].id!,
)
.then((value) {
setState(() {});
});
}
},
).center
],
),
),
],
), ),
); ).onPress(() {
Navigator.pop(context);
Navigator.pushNamed(
context,
AppRoutes.chatDetailed,
arguments: ChatDetailedScreenParams(provider.chatUsersList![index], true),
);
});
}, },
separatorBuilder: (BuildContext context, int index) => const Padding( separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 59),
padding: EdgeInsets.only(right: 10, left: 70, bottom: 0, top: 0),
child: Divider(
color: Color(0xFFE5E5E5),
),
),
itemCount: chatUsersList?.length ?? 0,
).expanded, ).expanded,
], ],
).paddingOnly(left: 21, right: 21, bottom: 0, top: 21).expanded, ).paddingOnly(left: 21, right: 21, bottom: 0, top: 21).expanded,
@ -289,6 +360,8 @@ class _SearchEmployeeBottomSheetState extends State<SearchEmployeeBottomSheet> {
LocaleKeys.cancel.tr(), LocaleKeys.cancel.tr(),
() { () {
Navigator.pop(context); Navigator.pop(context);
provider.chatUsersList = [];
provider.pageNo = 1;
}, },
textColor: MyColors.grey3AColor, textColor: MyColors.grey3AColor,
colors: const [ colors: const [

Loading…
Cancel
Save