// import 'dart:convert'; // import 'dart:io'; // import 'dart:typed_data'; // // import 'package:flutter/foundation.dart'; // import 'package:flutter/material.dart'; // import 'package:http/http.dart'; // import 'package:mohem_flutter_app/api/api_client.dart'; // import 'package:mohem_flutter_app/app_state/app_state.dart'; // import 'package:mohem_flutter_app/classes/consts.dart'; // import 'package:mohem_flutter_app/classes/utils.dart'; // import 'package:mohem_flutter_app/exceptions/api_exception.dart'; // import 'package:mohem_flutter_app/main.dart'; // import 'package:mohem_flutter_app/models/chat/chat_user_image_model.dart'; // import 'package:mohem_flutter_app/models/chat/create_group_request.dart' as createGroup; // import 'package:mohem_flutter_app/models/chat/get_group_chat_history.dart'; // import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; // import 'package:mohem_flutter_app/models/chat/get_user_groups_by_id.dart' as groups; // import 'package:mohem_flutter_app/models/chat/get_user_groups_by_id.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; // // class ChatApiClient { // static final ChatApiClient _instance = ChatApiClient._internal(); // // ChatApiClient._internal(); // // factory ChatApiClient() => _instance; // // Future getUserLoginToken() async { // user.UserAutoLoginModel userLoginResponse = user.UserAutoLoginModel(); // String? deviceToken = AppState().getIsHuawei ? AppState().getHuaweiPushToken : AppState().getDeviceToken; // Response response = await ApiClient().postJsonForResponse( // "${ApiConsts.chatLoginTokenUrl}externaluserlogin", // { // "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER.toString(), // "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG", // "isMobile": true, // "platform": Platform.isIOS ? "ios" : "android", // "deviceToken": AppState().getIsHuawei ? AppState().getHuaweiPushToken : AppState().getDeviceToken, // "isHuaweiDevice": AppState().getIsHuawei, // "voipToken": Platform.isIOS ? "80a3b01fc1ef2453eb4f1daa4fc31d8142d9cb67baf848e91350b607971fe2ba" : "", // }, // ); // // if (!kReleaseMode) { // logger.i("login-res: " + response.body); // } // if (response.statusCode == 200) { // userLoginResponse = user.userAutoLoginModelFromJson(response.body); // } else if (response.statusCode == 501 || response.statusCode == 502 || response.statusCode == 503 || response.statusCode == 504) { // getUserLoginToken(); // } else { // userLoginResponse = user.userAutoLoginModelFromJson(response.body); // Utils.showToast(userLoginResponse.errorResponses!.first.message!); // } // return userLoginResponse; // } // // Future getChatMemberFromSearch(String searchParam, int cUserId, int pageNo) async { // ChatUserModel chatUserModel; // Response response = await ApiClient().postJsonForResponse("${ApiConsts.chatLoginTokenUrl}getUserWithStatusAndFavAsync", {"employeeNumber": cUserId, "userName": searchParam, "pageNumber": pageNo}, // token: AppState().chatDetails!.response!.token); // if (!kReleaseMode) { // logger.i("res: " + response.body); // } // chatUserModel = chatUserModelFromJson(response.body); // return chatUserModel; // } // // //Get User Recent Chats // Future getRecentChats() async { // try { // Response response = await ApiClient().getJsonForResponse( // "${ApiConsts.chatRecentUrl}getchathistorybyuserid", // token: AppState().chatDetails!.response!.token, // ); // if (!kReleaseMode) { // logger.i("res: " + response.body); // } // return ChatUserModel.fromJson( // json.decode(response.body), // ); // } catch (e) { // throw e; // } // } // // // Get Favorite Users // Future getFavUsers() async { // Response favRes = await ApiClient().getJsonForResponse( // "${ApiConsts.chatFavUser}getFavUserById/${AppState().chatDetails!.response!.id}", // token: AppState().chatDetails!.response!.token, // ); // if (!kReleaseMode) { // logger.i("res: " + favRes.body); // } // return ChatUserModel.fromJson(json.decode(favRes.body)); // } // // //Get User Chat History // Future getSingleUserChatHistory({required int senderUID, required int receiverUID, required bool loadMore, bool isNewChat = false, required int paginationVal}) async { // try { // Response response = await ApiClient().getJsonForResponse( // "${ApiConsts.chatSingleUserHistoryUrl}GetUserChatHistory/$senderUID/$receiverUID/$paginationVal", // token: AppState().chatDetails!.response!.token, // ); // if (!kReleaseMode) { // logger.i("res: " + response.body); // } // return response; // } catch (e) { // getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal); // throw e; // } // } // // //Favorite Users // Future favUser({required int userID, required int targetUserID}) async { // Response response = await ApiClient().postJsonForResponse("${ApiConsts.chatFavUser}addFavUser", {"targetUserId": targetUserID, "userId": userID}, token: AppState().chatDetails!.response!.token); // if (!kReleaseMode) { // logger.i("res: " + response.body); // } // fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); // return favoriteChatUser; // } // // //UnFavorite Users // Future unFavUser({required int userID, required int targetUserID}) async { // try { // Response response = await ApiClient().postJsonForResponse( // "${ApiConsts.chatFavUser}deleteFavUser", // {"targetUserId": targetUserID, "userId": userID}, // token: AppState().chatDetails!.response!.token, // ); // if (!kReleaseMode) { // logger.i("res: " + response.body); // } // fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); // return favoriteChatUser; // } catch (e) { // e as APIException; // throw e; // } // } // // // Upload Chat Media // Future uploadMedia(String userId, File file, String fileSource) async { // if (kDebugMode) { // print("${ApiConsts.chatMediaImageUploadUrl}upload"); // print(AppState().chatDetails!.response!.token); // } // // dynamic request = MultipartRequest('POST', Uri.parse('${ApiConsts.chatMediaImageUploadUrl}upload')); // request.fields.addAll({'userId': userId, 'fileSource': fileSource}); // request.files.add(await MultipartFile.fromPath('files', file.path)); // request.headers.addAll({'Authorization': 'Bearer ${AppState().chatDetails!.response!.token}'}); // StreamedResponse response = await request.send(); // String data = await response.stream.bytesToString(); // if (!kReleaseMode) { // logger.i("res: " + data); // } // return jsonDecode(data); // } // // // Download File For Chat // Future downloadURL({required String fileName, required String fileTypeDescription, required int fileSource}) async { // Response response = await ApiClient().postJsonForResponse( // "${ApiConsts.chatMediaImageUploadUrl}download", // {"fileType": fileTypeDescription, "fileName": fileName, "fileSource": fileSource}, // token: AppState().chatDetails!.response!.token, // ); // Uint8List data = Uint8List.fromList(response.bodyBytes); // return data; // } // // //Get Chat Users & Favorite Images // Future> getUsersImages({required List encryptedEmails}) async { // List imagesData = []; // Response response = await ApiClient().postJsonForResponse( // "${ApiConsts.chatUserImages}images", // {"encryptedEmails": encryptedEmails, "fromClient": false}, // token: AppState().chatDetails!.response!.token, // ); // if (!kReleaseMode) { // logger.i("res: " + response.body); // } // if (response.statusCode == 200) { // imagesData = chatUserImageModelFromJson(response.body); // } else if (response.statusCode == 500 || response.statusCode == 504) { // getUsersImages(encryptedEmails: encryptedEmails); // } else { // Utils.showToast("Something went wrong while loading images"); // imagesData = []; // } // return imagesData; // } // // //group chat apis start here. // Future getGroupsByUserId() async { // try { // Response response = await ApiClient().getJsonForResponse( // "${ApiConsts.getGroupByUserId}${AppState().chatDetails!.response!.id}", // token: AppState().chatDetails!.response!.token, // ); // if (!kReleaseMode) { // logger.i("res: " + response.body); // } // return groups.GetUserGroups.fromRawJson(response.body); // } catch (e) { // //if fail api returning 500 hence just printing here // print(e); // throw e; // } // } // // Future deleteGroup(int? groupId) async { // try { // Response response = await ApiClient().postJsonForResponse( // ApiConsts.deleteGroup, // {"groupId": groupId}, // token: AppState().chatDetails!.response!.token, // ); // if (!kReleaseMode) { // logger.i("res: " + response.body); // } // return response; // } catch (e) { // //if fail api returning 500 hence just printing here // print(e); // throw e; // } // } // // Future updateGroupAdmin(int? groupId, List groupList) async { // try { // Response response = await ApiClient().postJsonForResponse( // ApiConsts.updateGroupAdmin, // {"groupId": groupId, "groupUserList": groupList}, // token: AppState().chatDetails!.response!.token, // ); // if (!kReleaseMode) { // logger.i("res: " + response.body); // } // return response; // } catch (e) { // //if fail api returning 500 hence just printing here // print(e); // throw e; // } // } // // Future> getGroupChatHistory(int? groupId, List groupList) async { // try { // Response response = await ApiClient().postJsonForResponse( // ApiConsts.getGroupChatHistoryAsync, // {"groupId": groupId, "targetUserList": groupList, "CurrentId": AppState().chatDetails!.response!.id}, // token: AppState().chatDetails!.response!.token, // ); // if (!kReleaseMode) { // logger.i("res: " + response.body); // } // List groupChat = []; // List groupChatData = json.decode(response.body); // for (var i in groupChatData) { // groupChat.add(GetGroupChatHistoryAsync.fromJson(i)); // } // // groupChat.sort((a, b) => b.createdDate!.compareTo(a.createdDate!)); // return groupChat; // // for(GetGroupChatHistoryAsync i in groupChat) { // // return GetGroupChatHistoryAsync.fromJson(jsonEncode(i)); // // } // } catch (e) { // //if fail api returning 500 hence just printing here // print(e); // throw e; // } // } // // Future addGroupAndUsers(createGroup.CreateGroupRequest request) async { // try { // Response response = await ApiClient().postJsonForResponse( // ApiConsts.addGroupsAndUsers, // request, // token: AppState().chatDetails!.response!.token, // ); // if (!kReleaseMode) { // logger.i("res: " + response.body); // } // return response.body; // } catch (e) { // //if fail api returning 500 hence just printing here // print(e); // throw e; // } // } // // Future updateGroupAndUsers(createGroup.CreateGroupRequest request) async { // try { // Response response = await ApiClient().postJsonForResponse( // ApiConsts.updateGroupsAndUsers, // request, // token: AppState().chatDetails!.response!.token, // ); // if (!kReleaseMode) { // logger.i("res: " + response.body); // } // return response.body; // } catch (e) { // //if fail api returning 500 hence just printing here // print(e); // throw e; // } // } // }