Changed the device identifier, Update to Stores VersionID 9.5

master
haroon amjad 1 month ago
parent 9b3601f06a
commit 1ee51a7597

@ -8,13 +8,13 @@
<uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove" /> <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove" />
<!-- Required only if your app needs to access videos <!-- Required only if your app needs to access videos
that other apps created. --> that other apps created. -->
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove" />
<!-- Required only if your app needs to access audio files <!-- Required only if your app needs to access audio files
that other apps created. --> that other apps created. -->
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />

@ -1,4 +1,5 @@
org.gradle.jvmargs=-Xmx2048M org.gradle.jvmargs=-Xmx4096m
kotlin.daemon.jvmargs=-Xmx4096m
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
apmsInstrumentationEnabled=false apmsInstrumentationEnabled=false

@ -5,6 +5,7 @@ import 'dart:io';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:device_info_plus/device_info_plus.dart'; import 'package:device_info_plus/device_info_plus.dart';
import 'package:mobile_device_identifier/mobile_device_identifier.dart';
import 'package:mohem_flutter_app/api/api_client.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/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/consts.dart';
@ -18,10 +19,7 @@ import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/itg/itg_main_response.dart'; import 'package:mohem_flutter_app/models/itg/itg_main_response.dart';
import 'package:mohem_flutter_app/models/itg/itg_response_model.dart'; import 'package:mohem_flutter_app/models/itg/itg_response_model.dart';
import 'package:mohem_flutter_app/models/sso_auth_model.dart'; import 'package:mohem_flutter_app/models/sso_auth_model.dart';
import 'package:platform_device_id_plus/platform_device_id.dart';
// import 'package:platform_device_id/platform_device_id.dart';
// import 'package:platform_device_id/platform_device_id.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
class DashboardApiClient { class DashboardApiClient {
@ -230,7 +228,8 @@ class DashboardApiClient {
Future<dynamic> getBookingSSOFinalRedirection({required String token}) async { Future<dynamic> getBookingSSOFinalRedirection({required String token}) async {
token = token =
"eyJhbGciOiJSUzI1NiIsImtpZCI6IjhjZTE2OWM0YjIwYjQ2ZWM5YTQyOTU3Y2ZhODUzNzQ1IiwidHlwIjoiSldUIn0.eyJ0ZW5hbnRfaWQiOiJhOWY0ZDFhMDU5NmQ0YWVhOGY4MzA5OTJlYzRiZGFjMSIsImVpZCI6IjExNzkzMCIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL3NpZCI6Ijk2MDI0OGM1NzA3YzQ3MmFhYTEzM2I1N2ZhODE1ZmVhIiwibGFuZ3VhZ2UiOiJVUyIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2VtYWlsYWRkcmVzcyI6IjExNzkzMEBobWcuY29tIiwiZXhwIjoxNzgyNDc1NzY5LCJpc3MiOiJodHRwczovL3Nzby11YXQuaG1nLmNvbSIsImF1ZCI6ImE5ZjRkMWEwNTk2ZDRhZWE4ZjgzMDk5MmVjNGJkYWMxIn0.rJcLVsG8D0XECyLERCTD2uqGeWyvp-OBVGE9uL2qKrX4etFUHgdFt_5kYF6edFTtGy-0PIZadHDmv7e-IOhVWHm5HVMClaukiXoRXR8cDN8XA1wfme3Kd-U5PXN-IRh49AyRTzLO0rYNPvH81ScosWGlsFSkOvA-0hJNa2adHdtvgNvB8wJshSU5p7sAmF8mjdDY6aInG19etu2iEuUDwHHA4ZY_ts4hboHo8fE392hFaYGonExoD7bpW5RMx5xKWeRCmWpG_PK8Aw_z1jGzdB9PANus4pteRGuln1J-kmo2lQC9pVrSyZATAKp1HfgfyZ_vUhaHEfM69cMWaCslJQ"; "eyJhbGciOiJSUzI1NiIsImtpZCI6IjhjZTE2OWM0YjIwYjQ2ZWM5YTQyOTU3Y2ZhODUzNzQ1IiwidHlwIjoiSldUIn0.eyJ0ZW5hbnRfaWQiOiJhOWY0ZDFhMDU5NmQ0YWVhOGY4MzA5OTJlYzRiZGFjMSIsImVpZCI6IjExNzkzMCIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL3NpZCI6Ijk2MDI0OGM1NzA3YzQ3MmFhYTEzM2I1N2ZhODE1ZmVhIiwibGFuZ3VhZ2UiOiJVUyIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2VtYWlsYWRkcmVzcyI6IjExNzkzMEBobWcuY29tIiwiZXhwIjoxNzgyNDc1NzY5LCJpc3MiOiJodHRwczovL3Nzby11YXQuaG1nLmNvbSIsImF1ZCI6ImE5ZjRkMWEwNTk2ZDRhZWE4ZjgzMDk5MmVjNGJkYWMxIn0.rJcLVsG8D0XECyLERCTD2uqGeWyvp-OBVGE9uL2qKrX4etFUHgdFt_5kYF6edFTtGy-0PIZadHDmv7e-IOhVWHm5HVMClaukiXoRXR8cDN8XA1wfme3Kd-U5PXN-IRh49AyRTzLO0rYNPvH81ScosWGlsFSkOvA-0hJNa2adHdtvgNvB8wJshSU5p7sAmF8mjdDY6aInG19etu2iEuUDwHHA4ZY_ts4hboHo8fE392hFaYGonExoD7bpW5RMx5xKWeRCmWpG_PK8Aw_z1jGzdB9PANus4pteRGuln1J-kmo2lQC9pVrSyZATAKp1HfgfyZ_vUhaHEfM69cMWaCslJQ";
var request = http.MultipartRequest('POST', Uri.parse('https://ek.techmaster.in/SSO/HMG')); // var request = http.MultipartRequest('POST', Uri.parse('https://ek.techmaster.in/SSO/HMG'));
var request = http.MultipartRequest('POST', Uri.parse('https://Paxes-release.techmaster.in/SSO/HMG'));
request.fields.addAll({'JWTToken': token}); request.fields.addAll({'JWTToken': token});
// request.headers.addAll(headers); // request.headers.addAll(headers);
@ -255,13 +254,17 @@ class DashboardApiClient {
String QRValue = "", String QRValue = "",
String payrollCode = "", String payrollCode = "",
}) async { }) async {
var _mobileDeviceIdentifierPlugin = MobileDeviceIdentifier();
Codec<String, String> stringToBase64 = utf8.fuse(base64);
String url = "${ApiConsts.swpRest}AuthenticateAndSwipeUserSupportNFC"; String url = "${ApiConsts.swpRest}AuthenticateAndSwipeUserSupportNFC";
var uuid = Uuid(); var uuid = Uuid();
String? deviceId = ""; String? deviceId = "";
// Generate a v4 (random) id // Generate a v4 (random) id
if (Platform.isAndroid) { if (Platform.isAndroid) {
AndroidDeviceInfo androidInfo = await DeviceInfoPlugin().androidInfo; AndroidDeviceInfo androidInfo = await DeviceInfoPlugin().androidInfo;
deviceId = androidInfo.id; deviceId = await _mobileDeviceIdentifierPlugin.getDeviceId() ?? androidInfo.id;
deviceId = stringToBase64.encode(deviceId);
deviceId = deviceId.length >= 50 ? deviceId.substring(0, 48) : deviceId;
} else if (Platform.isIOS) { } else if (Platform.isIOS) {
IosDeviceInfo iosInfo = await DeviceInfoPlugin().iosInfo; IosDeviceInfo iosInfo = await DeviceInfoPlugin().iosInfo;
deviceId = iosInfo.identifierForVendor; deviceId = iosInfo.identifierForVendor;

@ -90,7 +90,7 @@ class AppState {
String get getHuaweiPushToken => _huaweiPushToken; String get getHuaweiPushToken => _huaweiPushToken;
final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 9.4, mobileType: Platform.isAndroid ? "android" : "ios"); final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 9.5, mobileType: Platform.isAndroid ? "android" : "ios");
void setPostParamsInitConfig() { void setPostParamsInitConfig() {
isAuthenticated = false; isAuthenticated = false;

@ -82,18 +82,22 @@ class MyApp extends StatelessWidget {
List<LocalizationsDelegate<dynamic>> delegates = context.localizationDelegates; List<LocalizationsDelegate<dynamic>> delegates = context.localizationDelegates;
// delegates.add(GlobalMaterialLocalizations.delegate); // delegates.add(GlobalMaterialLocalizations.delegate);
delegates.add(MonthYearPickerLocalizations.delegate); delegates.add(MonthYearPickerLocalizations.delegate);
return MaterialApp( return SafeArea(
navigatorKey: AppRoutes.navigatorKey, top: false, // Set to true if you want to avoid the notch area as well
builder: (BuildContext context, Widget? child) { bottom: Platform.isIOS ? false : true,
return MediaQuery(data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), child: child!); child: MaterialApp(
}, navigatorKey: AppRoutes.navigatorKey,
theme: AppTheme.getTheme(EasyLocalization.of(context)?.locale.languageCode == "ar"), builder: (BuildContext context, Widget? child) {
debugShowCheckedModeBanner: false, return MediaQuery(data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), child: child!);
localizationsDelegates: delegates, },
supportedLocales: context.supportedLocales, theme: AppTheme.getTheme(EasyLocalization.of(context)?.locale.languageCode == "ar"),
locale: context.locale, debugShowCheckedModeBanner: false,
initialRoute: AppRoutes.initialRoute, localizationsDelegates: delegates,
routes: AppRoutes.routes, supportedLocales: context.supportedLocales,
locale: context.locale,
initialRoute: AppRoutes.initialRoute,
routes: AppRoutes.routes,
),
); );
}, },
); );

@ -1,5 +1,4 @@
import 'dart:collection'; import 'dart:collection';
import 'dart:convert';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
@ -33,16 +32,8 @@ class DelegateSheet extends StatefulWidget {
VoidCallback callBackFunc; VoidCallback callBackFunc;
List<NotificationGetRespondAttributesList> getNotificationRespondAttributes; List<NotificationGetRespondAttributesList> getNotificationRespondAttributes;
DelegateSheet({ DelegateSheet(
super.key, {required this.title, required this.apiMode, this.notificationID, this.actionHistoryList, this.wFHistory, required this.callBackFunc, this.getNotificationRespondAttributes = const []});
required this.title,
required this.apiMode,
this.notificationID,
this.actionHistoryList,
this.wFHistory,
required this.callBackFunc,
this.getNotificationRespondAttributes = const <NotificationGetRespondAttributesList>[],
});
@override @override
State<DelegateSheet> createState() => _DelegateSheetState(); State<DelegateSheet> createState() => _DelegateSheetState();
@ -55,8 +46,8 @@ class _DelegateSheetState extends State<DelegateSheet> {
String? selectedFavLetter; String? selectedFavLetter;
String selectedType = "Workflow"; String selectedType = "Workflow";
String inputRes = ""; String inputRes = "";
List<String>? favLetters;
List<GetFavoriteReplacements>? favUsersList; List<GetFavoriteReplacements>? favUsersList;
List<GetFavoriteReplacements>? filteredFavUsersList = <GetFavoriteReplacements>[];
List<ReplacementList>? replacementList; List<ReplacementList>? replacementList;
bool isImageLoaded = false; bool isImageLoaded = false;
@ -66,14 +57,14 @@ class _DelegateSheetState extends State<DelegateSheet> {
super.initState(); super.initState();
if (widget.wFHistory != null) { if (widget.wFHistory != null) {
widget.wFHistory = widget.wFHistory!.reversed.toList(); widget.wFHistory = widget.wFHistory!.reversed.toList();
Set<String?> ids = widget.wFHistory!.map((WFHistory e) => e.employeeID).toSet(); var ids = widget.wFHistory!.map((e) => e.employeeID).toSet();
widget.wFHistory!.retainWhere((WFHistory x) => ids.remove(x.employeeID)); widget.wFHistory!.retainWhere((x) => ids.remove(x.employeeID));
} }
if (widget.actionHistoryList != null) { if (widget.actionHistoryList != null) {
widget.actionHistoryList = widget.actionHistoryList!.reversed.toList(); widget.actionHistoryList = widget.actionHistoryList!.reversed.toList();
Set<String?> ids = widget.actionHistoryList!.map((GetActionHistoryList e) => e.uSERNAME).toSet(); var ids = widget.actionHistoryList!.map((e) => e.uSERNAME).toSet();
widget.actionHistoryList!.retainWhere((GetActionHistoryList x) => ids.remove(x.uSERNAME)); widget.actionHistoryList!.retainWhere((x) => ids.remove(x.uSERNAME));
} }
} }
@ -82,96 +73,36 @@ class _DelegateSheetState extends State<DelegateSheet> {
super.dispose(); super.dispose();
} }
Future<void> fetchFavUsers({bool isNeedLoading = true}) async { Future fetchFavLetters({bool isNeedLoading = true}) async {
favUsersList = <GetFavoriteReplacements>[]; favLetters = [];
filteredFavUsersList = <GetFavoriteReplacements>[];
if (isNeedLoading) Utils.showLoading(context); if (isNeedLoading) Utils.showLoading(context);
List<GetFavoriteReplacements>? favList = await WorkListApiClient().getFavoriteReplacementWithoutImage();
try { List<String> result = [];
List<GetFavoriteReplacements>? favList = await WorkListApiClient().getFavoriteReplacementWithoutImage(); favList!.forEach((element) {
favUsersList = favList; result.add(element.employeeDisplayName![0]);
});
if (favUsersList != null && favUsersList!.isNotEmpty) { favLetters = LinkedHashSet<String>.from(result).toList();
favUsersList!.sort((GetFavoriteReplacements a, GetFavoriteReplacements b) => (a.employeeDisplayName ?? '').toLowerCase().compareTo((b.employeeDisplayName ?? '').toLowerCase())); if (isNeedLoading) Utils.hideLoading(context);
filteredFavUsersList = favUsersList; setState(() {
favLetters!.sort((a, b) {
if (isNeedLoading) Utils.hideLoading(context); return a.toLowerCase().compareTo(b.toLowerCase());
setState(() {}); });
_fetchAndAttachUserImages(); });
} else { return null;
if (isNeedLoading) Utils.hideLoading(context);
setState(() {});
}
} catch (e) {
if (isNeedLoading) Utils.hideLoading(context);
setState(() {});
}
} }
Future<void> _fetchAndAttachUserImages() async { Future fetchFavUsersList({bool isNeedLoading = true}) async {
try { if (isNeedLoading) Utils.showLoading(context);
List<GetFavoriteReplacements>? tempList = await WorkListApiClient().getFavoriteReplacementWithImageNew(""); favUsersList = await WorkListApiClient().getFavoriteReplacementWithImage(selectedFavLetter ?? "");
if (isNeedLoading) Utils.hideLoading(context);
if (tempList != null && tempList.isNotEmpty && favUsersList != null) { setState(() {});
for (GetFavoriteReplacements element in favUsersList!) { fetchFavUsersListNew(isNeedLoading: false);
for (GetFavoriteReplacements element2 in tempList) { return null;
if (element.userName == element2.userName && element2.employeeImage != null && element2.employeeImage!.isNotEmpty) {
element.employeeImage = element2.employeeImage;
}
}
}
filteredFavUsersList = favUsersList;
setState(() {});
}
} catch (e) {}
} }
// Future<void> fetchFavUsers({bool isNeedLoading = true}) async {
// favUsersList = <GetFavoriteReplacements>[];
// if (isNeedLoading) Utils.showLoading(context);
//
// try {
// List<GetFavoriteReplacements>? favList = await WorkListApiClient().getFavoriteReplacementWithoutImage();
// favUsersList = favList;
//
// if (favUsersList != null && favUsersList!.isNotEmpty) {
// setState(() {
// favUsersList!.sort((GetFavoriteReplacements a, GetFavoriteReplacements b) => (a.employeeDisplayName ?? '').toLowerCase().compareTo((b.employeeDisplayName ?? '').toLowerCase()));
// });
// if (isNeedLoading) Utils.hideLoading(context);
//
// List<GetFavoriteReplacements>? tempList = await WorkListApiClient().getFavoriteReplacementWithImageNew("");
// if (tempList != null && tempList.isNotEmpty) {
// for (GetFavoriteReplacements element in favUsersList!) {
// for (GetFavoriteReplacements element2 in tempList) {
// if (element.userName == element2.userName) {
// if (element2.employeeImage != null && element2.employeeImage!.isNotEmpty) {
// element.employeeImage = element2.employeeImage;
// }
// }
// }
// }
// setState(() {});
// }
// }
// } catch (e) {
// // if (isNeedLoading) Utils.hideLoading(context);
// }
// }
// Future fetchFavUsersList({bool isNeedLoading = true}) async {
// if (isNeedLoading) Utils.showLoading(context);
// favUsersList = await WorkListApiClient().getFavoriteReplacementWithImage(selectedFavLetter ?? "");
// if (isNeedLoading) Utils.hideLoading(context);
// setState(() {});
// fetchFavUsersListNew(isNeedLoading: false);
// return null;
// }
Future fetchFavUsersListNew({bool isNeedLoading = true}) async { Future fetchFavUsersListNew({bool isNeedLoading = true}) async {
if (isNeedLoading) Utils.showLoading(context); if (isNeedLoading) Utils.showLoading(context);
filteredFavUsersList = await WorkListApiClient().getFavoriteReplacementWithImageNew(selectedFavLetter ?? ""); favUsersList = await WorkListApiClient().getFavoriteReplacementWithImageNew(selectedFavLetter ?? "");
if (isNeedLoading) Utils.hideLoading(context); if (isNeedLoading) Utils.hideLoading(context);
setState(() { setState(() {
isImageLoaded = true; isImageLoaded = true;
@ -181,10 +112,18 @@ class _DelegateSheetState extends State<DelegateSheet> {
void fetchChangeFav({required String email, required String employeName, required String image, required String userName, bool isFav = false, bool isNeedToRefresh = false}) async { void fetchChangeFav({required String email, required String employeName, required String image, required String userName, bool isFav = false, bool isNeedToRefresh = false}) async {
Utils.showLoading(context); Utils.showLoading(context);
GenericResponseModel model = await WorkListApiClient().changeFavoriteReplacements(email: email, employeName: employeName, image: image, userName: userName, isFav: isFav); favLetters = null;
selectedFavLetter = null;
GenericResponseModel model = await WorkListApiClient().changeFavoriteReplacements(
email: email,
employeName: employeName,
image: image,
userName: userName,
isFav: isFav,
);
if (isNeedToRefresh) { if (isNeedToRefresh) {
await fetchFavUsers(isNeedLoading: false); await fetchFavLetters(isNeedLoading: false);
// if (favUsersList != null) await fetchFavUsersList(isNeedLoading: false); if (favLetters != null) await fetchFavUsersList(isNeedLoading: false);
} }
Utils.hideLoading(context); Utils.hideLoading(context);
@ -198,58 +137,44 @@ class _DelegateSheetState extends State<DelegateSheet> {
userName: selectedType == "Employee Name" ? inputRes : "", userName: selectedType == "Employee Name" ? inputRes : "",
email: selectedType == "Employee Email" ? inputRes : "", email: selectedType == "Employee Email" ? inputRes : "",
); );
if (isNeedLoading) Utils.hideLoading(context); if (isNeedLoading) Utils.hideLoading(context);
setState(() {}); setState(() {});
return null; return null;
} }
Future<void> searchFavUser() async {
if (favUsersList != null && favUsersList!.isNotEmpty) {
// if (inputRes.length > 0) {
filteredFavUsersList =
favUsersList!.where((GetFavoriteReplacements element) {
String query = inputRes.toLowerCase();
return (element.employeeDisplayName != null && element.employeeDisplayName!.toLowerCase().startsWith(query)) ||
(element.userName != null && element.userName!.toLowerCase().contains(query)) ||
(element.emailAddress != null && element.emailAddress!.toLowerCase().contains(query));
}).toList();
// } else {
// filteredFavUsersList = favUsersList;
// }
} else {
filteredFavUsersList = <GetFavoriteReplacements>[];
}
setState(() {});
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SizedBox( return Container(
width: double.infinity, width: double.infinity,
height: MediaQuery.of(context).size.height - 80, height: MediaQuery.of(context).size.height - 80,
child: Column( child: Column(
children: <Widget>[ children: [
Expanded( Expanded(
child: SingleChildScrollView( child: SingleChildScrollView(
child: Padding( child: Padding(
padding: const EdgeInsets.all(21), padding: const EdgeInsets.all(21),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: [
widget.title.toText24(isBold: true), widget.title.toText24(isBold: true),
21.height, 21.height,
LocaleKeys.search.tr().toText16(), LocaleKeys.search.tr().toText16(),
11.height, 11.height,
Column( Column(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[ children: [
Container( Container(
padding: const EdgeInsets.only(left: 8, right: 4, top: 6, bottom: 6), padding: EdgeInsets.only(left: 8, right: 4, top: 6, bottom: 6),
decoration: BoxDecoration(borderRadius: BorderRadius.circular(15), color: Colors.transparent, border: Border.all(color: const Color(0xffefefef), width: 1)), decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.transparent,
border: Border.all(
color: Color(0xffefefef),
width: 1,
),
),
child: Row( child: Row(
children: <Widget>[ children: [
Expanded( Expanded(
child: InputWidget( child: InputWidget(
"Search By " + selectedType, "Search By " + selectedType,
@ -260,18 +185,29 @@ class _DelegateSheetState extends State<DelegateSheet> {
verticalPadding: 3, verticalPadding: 3,
isInputTypeNum: selectedType == "Employee ID" ? true : false, isInputTypeNum: selectedType == "Employee ID" ? true : false,
isEnable: isNeedEnableTextField, isEnable: isNeedEnableTextField,
onChange: (String v) { onChange: (v) {
inputRes = v; inputRes = v;
if (selectedType == "Favorites") {
searchFavUser();
}
}, },
), ),
), ),
Container(height: 36, width: 1, color: const Color(0xffE5E5E5)),
Container( Container(
padding: const EdgeInsets.all(8), height: 36,
child: Row(children: <Widget>[selectedType.toText12(), 4.width, const Icon(Icons.keyboard_arrow_down, color: Colors.black, size: 16)]), width: 1,
color: Color(0xffE5E5E5),
),
Container(
padding: EdgeInsets.all(8),
child: Row(
children: [
selectedType.toText12(),
4.width,
const Icon(
Icons.keyboard_arrow_down,
color: Colors.black,
size: 16,
),
],
),
).onPress(() { ).onPress(() {
showMyBottomSheet( showMyBottomSheet(
context, context,
@ -283,17 +219,19 @@ class _DelegateSheetState extends State<DelegateSheet> {
if (value == "Workflow") { if (value == "Workflow") {
setState(() { setState(() {
isNeedEnableTextField = false; isNeedEnableTextField = false;
// selectedFavLetter = null; selectedFavLetter = null;
filteredFavUsersList = null; favLetters = null;
favUsersList = null;
}); });
} else if (value == "Favorites") { } else if (value == "Favorites") {
isNeedEnableTextField = true; isNeedEnableTextField = false;
fetchFavUsers(); fetchFavLetters();
} else { } else {
setState(() { setState(() {
isNeedEnableTextField = true; isNeedEnableTextField = true;
// selectedFavLetter = null; selectedFavLetter = null;
filteredFavUsersList = null; favLetters = null;
favUsersList = null;
}); });
} }
}, },
@ -303,105 +241,143 @@ class _DelegateSheetState extends State<DelegateSheet> {
], ],
), ),
), ),
if (isNeedEnableTextField && selectedType != "Favorites") if (isNeedEnableTextField)
TextButton( TextButton(
onPressed: () { onPressed: () {
fetchUserByInput(); fetchUserByInput();
}, },
child: const Text("Search", style: TextStyle(color: Colors.blue, decoration: TextDecoration.underline)), child: const Text(
), "Search",
style: TextStyle(
color: Colors.blue,
decoration: TextDecoration.underline,
),
),
)
], ],
), ),
if (!isNeedEnableTextField) 12.height, if (!isNeedEnableTextField) 12.height,
Row( Row(
children: <Widget>[ children: [
Expanded( Expanded(
child: SizedBox( child: Container(
width: double.infinity, width: double.infinity,
child: child: selectedFavLetter == null && favLetters != null
// selectedFavLetter == null && favLetters != null ? Container(
// ? Container(width: double.infinity, alignment: Alignment.center, child: "Please select letter to see Fav results".toText12()) width: double.infinity,
// : alignment: Alignment.center,
filteredFavUsersList != null && selectedType == "Favorites" child: "Please select letter to see Fav results".toText12(),
? ListView.separated( )
itemBuilder: (BuildContext context, int index) { : favUsersList != null
return showFavUserItem(filteredFavUsersList![index]); ? ListView.separated(
}, itemBuilder: (context, index) {
separatorBuilder: (BuildContext context, int index) { return showFavUserItem(favUsersList![index]);
return Container(color: MyColors.borderColor, width: double.infinity, height: 1, margin: const EdgeInsets.only(top: 8, bottom: 8)).onPress(() {}); },
}, separatorBuilder: (context, index) {
physics: const NeverScrollableScrollPhysics(), return Container(
shrinkWrap: true, color: MyColors.borderColor,
itemCount: filteredFavUsersList!.length, width: double.infinity,
padding: const EdgeInsets.only(top: 8, bottom: 8), height: 1,
) margin: EdgeInsets.only(top: 8, bottom: 8),
: isNeedEnableTextField && replacementList == null ).onPress(() {});
? Container(width: double.infinity, alignment: Alignment.center, child: "Search User".toText12()) },
: isNeedEnableTextField && replacementList!.isEmpty physics: NeverScrollableScrollPhysics(),
? Container(width: double.infinity, alignment: Alignment.center, child: "No Data Found".toText12()) shrinkWrap: true,
: isNeedEnableTextField itemCount: favUsersList!.length,
? ListView.separated( padding: EdgeInsets.only(top: 8, bottom: 8),
itemBuilder: (BuildContext context, int index) { )
return showInputUserItem(replacementList![index]); : isNeedEnableTextField && replacementList == null
}, ? Container(
separatorBuilder: (BuildContext context, int index) { width: double.infinity,
return Container(color: MyColors.borderE3Color, width: double.infinity, height: 1, margin: const EdgeInsets.only(top: 8, bottom: 8)); alignment: Alignment.center,
}, child: "Search User".toText12(),
physics: const NeverScrollableScrollPhysics(), )
shrinkWrap: true, : isNeedEnableTextField && replacementList!.length == 0
itemCount: replacementList!.length, ? Container(
padding: const EdgeInsets.only(top: 8, bottom: 8), width: double.infinity,
) alignment: Alignment.center,
: (widget.wFHistory != null child: "No Data Found".toText12(),
? ListView.separated( )
itemBuilder: (BuildContext context, int index) { : isNeedEnableTextField
return showItgItem(widget.wFHistory![index]); ? ListView.separated(
}, itemBuilder: (context, index) {
separatorBuilder: (BuildContext context, int index) { return showInputUserItem(replacementList![index]);
return Container(color: MyColors.borderE3Color, width: double.infinity, height: 1, margin: const EdgeInsets.only(top: 8, bottom: 8)); },
}, separatorBuilder: (context, index) {
physics: const NeverScrollableScrollPhysics(), return Container(
shrinkWrap: true, color: MyColors.borderE3Color,
itemCount: widget.wFHistory!.length, width: double.infinity,
padding: const EdgeInsets.only(top: 8, bottom: 8), height: 1,
) margin: EdgeInsets.only(top: 8, bottom: 8),
: ListView.separated( );
itemBuilder: (BuildContext context, int index) { },
return showItem(widget.actionHistoryList![index]); physics: NeverScrollableScrollPhysics(),
}, shrinkWrap: true,
separatorBuilder: (BuildContext context, int index) { itemCount: replacementList!.length,
return Container(color: MyColors.borderE3Color, width: double.infinity, height: 1, margin: const EdgeInsets.only(top: 8, bottom: 8)); padding: EdgeInsets.only(top: 8, bottom: 8),
}, )
physics: const NeverScrollableScrollPhysics(), : (widget.wFHistory != null
shrinkWrap: true, ? ListView.separated(
itemCount: widget.actionHistoryList!.length, itemBuilder: (context, index) {
padding: const EdgeInsets.only(top: 8, bottom: 8), return showItgItem(widget.wFHistory![index]);
)), },
separatorBuilder: (context, index) {
return Container(
color: MyColors.borderE3Color,
width: double.infinity,
height: 1,
margin: EdgeInsets.only(top: 8, bottom: 8),
);
},
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: widget.wFHistory!.length,
padding: EdgeInsets.only(top: 8, bottom: 8),
)
: ListView.separated(
itemBuilder: (context, index) {
return showItem(widget.actionHistoryList![index]);
},
separatorBuilder: (context, index) {
return Container(
color: MyColors.borderE3Color,
width: double.infinity,
height: 1,
margin: EdgeInsets.only(top: 8, bottom: 8),
);
},
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: widget.actionHistoryList!.length,
padding: EdgeInsets.only(top: 8, bottom: 8),
)),
), ),
), ),
// if (favLetters != null) if (favLetters != null)
// SizedBox( Container(
// width: 30, width: 30,
// // color: Colors.red, // color: Colors.red,
// child: ListView.separated( child: ListView.separated(
// itemBuilder: (BuildContext context, int index) { itemBuilder: (context, index) {
// return Container( return Container(
// padding: const EdgeInsets.all(8), padding: EdgeInsets.all(8),
// alignment: Alignment.center, alignment: Alignment.center,
// child: favLetters![index].toText14(color: selectedFavLetter == favLetters![index] ? MyColors.gradiantStartColor : Colors.black), child: favLetters![index].toText14(color: selectedFavLetter == favLetters![index] ? MyColors.gradiantStartColor : Colors.black),
// ).onPress(() { ).onPress(() {
// selectedFavLetter = favLetters![index].toUpperCase(); selectedFavLetter = favLetters![index].toUpperCase();
// fetchFavUsersList(); fetchFavUsersList();
// }); });
// }, },
// separatorBuilder: (BuildContext context, int index) { separatorBuilder: (context, index) {
// return const SizedBox(height: 0); return SizedBox(
// }, height: 0,
// physics: const NeverScrollableScrollPhysics(), );
// shrinkWrap: true, },
// itemCount: favLetters!.length, physics: NeverScrollableScrollPhysics(),
// ), shrinkWrap: true,
// ), itemCount: favLetters!.length,
),
),
], ],
), ),
], ],
@ -409,15 +385,22 @@ class _DelegateSheetState extends State<DelegateSheet> {
), ),
), ),
), ),
Container(width: double.infinity, height: 1, color: MyColors.borderColor), Container(
width: double.infinity,
height: 1,
color: MyColors.borderColor,
),
DefaultButton( DefaultButton(
"Cancel", "Cancel",
() { () {
Navigator.pop(context); Navigator.pop(context);
}, },
textColor: Colors.black, textColor: Colors.black,
colors: const <Color>[Color(0xffE6E6E6), Color(0xffE6E6E6)], colors: [
).insideContainer, Color(0xffE6E6E6),
Color(0xffE6E6E6),
],
).insideContainer
], ],
), ),
); );
@ -427,22 +410,25 @@ class _DelegateSheetState extends State<DelegateSheet> {
return InkWell( return InkWell(
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);
showMyBottomSheet( showMyBottomSheet(context,
context, callBackFunc: widget.callBackFunc,
callBackFunc: widget.callBackFunc, child: SelectedItemSheet(
child: SelectedItemSheet( "Comment",
"Comment", apiMode: widget.apiMode,
apiMode: widget.apiMode, actionHistoryList: actionHistory,
actionHistoryList: actionHistory, notificationID: widget.notificationID,
notificationID: widget.notificationID, isITGRequest: widget.wFHistory != null,
isITGRequest: widget.wFHistory != null, getNotificationRespondAttributes: widget.getNotificationRespondAttributes,
getNotificationRespondAttributes: widget.getNotificationRespondAttributes, ));
),
);
}, },
child: Row( child: Row(
children: <Widget>[ children: [
CircularAvatar(url: actionHistory.eMPLOYEEIMAGE ?? "", height: 30, width: 30, isImageBase64: true), CircularAvatar(
url: actionHistory.eMPLOYEEIMAGE ?? "",
height: 30,
width: 30,
isImageBase64: true,
),
9.width, 9.width,
(actionHistory.nAME ?? "").toText12().expanded, (actionHistory.nAME ?? "").toText12().expanded,
IconButton( IconButton(
@ -458,8 +444,12 @@ class _DelegateSheetState extends State<DelegateSheet> {
isFav: true, isFav: true,
); );
}, },
icon: Icon(Icons.star, size: 16, color: (actionHistory.isFavorite ?? false) ? MyColors.yellowColor : MyColors.borderColor), icon: Icon(
), Icons.star,
size: 16,
color: (actionHistory.isFavorite ?? false) ? MyColors.yellowColor : MyColors.borderColor,
),
)
], ],
), ),
); );
@ -469,18 +459,25 @@ class _DelegateSheetState extends State<DelegateSheet> {
return InkWell( return InkWell(
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);
showMyBottomSheet( showMyBottomSheet(context,
context, callBackFunc: widget.callBackFunc,
callBackFunc: widget.callBackFunc, child: SelectedItgItemSheet(
child: SelectedItgItemSheet( "Comment",
"Comment", apiMode: widget.apiMode,
apiMode: widget.apiMode, wfHistory: wfHistory,
wfHistory: wfHistory, // notificationID: widget.notificationID,
// notificationID: widget.notificationID, ));
),
);
}, },
child: Row(children: <Widget>[CircularAvatar(height: 30, width: 30), 9.width, (wfHistory.name ?? "").toText12().expanded]), child: Row(
children: [
CircularAvatar(
height: 30,
width: 30,
),
9.width,
(wfHistory.name ?? "").toText12().expanded,
],
),
); );
} }
@ -488,31 +485,47 @@ class _DelegateSheetState extends State<DelegateSheet> {
return InkWell( return InkWell(
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);
showMyBottomSheet( showMyBottomSheet(context,
context, callBackFunc: widget.callBackFunc,
callBackFunc: widget.callBackFunc, child: SelectedItemSheet(
child: SelectedItemSheet( "Comment",
"Comment", apiMode: widget.apiMode,
apiMode: widget.apiMode, favoriteReplacements: actionHistory,
favoriteReplacements: actionHistory, notificationID: widget.notificationID,
notificationID: widget.notificationID, isITGRequest: widget.wFHistory != null,
isITGRequest: widget.wFHistory != null, getNotificationRespondAttributes: widget.getNotificationRespondAttributes,
getNotificationRespondAttributes: widget.getNotificationRespondAttributes, ));
),
);
}, },
child: Row( child: Row(
children: <Widget>[ children: [
actionHistory.employeeImage != "" && actionHistory.employeeImage != null actionHistory.employeeImage != ""
? CircularAvatar(url: actionHistory.employeeImage, height: 40, width: 40, isImageBase64: (actionHistory.employeeImage != null || actionHistory.employeeImage!.isNotEmpty) ? true : false) ? CircularAvatar(
url: actionHistory.employeeImage,
height: 40,
width: 40,
isImageBase64: (actionHistory.employeeImage != null || actionHistory.employeeImage!.isNotEmpty) ? true : false,
)
: isImageLoaded : isImageLoaded
? CircularAvatar(height: 40, width: 40, isImageBase64: false) ? CircularAvatar(
height: 40,
width: 40,
isImageBase64: false,
)
: ClipRRect( : ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(50)), borderRadius: const BorderRadius.all(
child: Image.network("https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo", fit: BoxFit.cover, height: 40, width: 40).toShimmer(), Radius.circular(50),
), ),
child: Image.network(
"https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo",
fit: BoxFit.cover,
height: 40,
width: 40,
).toShimmer(),
),
16.width, 16.width,
Expanded(child: (actionHistory.employeeDisplayName ?? "").toText12()), Expanded(
child: (actionHistory.employeeDisplayName ?? "").toText12(),
),
IconButton( IconButton(
onPressed: () { onPressed: () {
fetchChangeFav( fetchChangeFav(
@ -524,8 +537,12 @@ class _DelegateSheetState extends State<DelegateSheet> {
isNeedToRefresh: true, isNeedToRefresh: true,
); );
}, },
icon: const Icon(Icons.star, size: 16, color: MyColors.yellowColor), icon: Icon(
), Icons.star,
size: 16,
color: MyColors.yellowColor,
),
)
], ],
), ),
); );
@ -535,24 +552,29 @@ class _DelegateSheetState extends State<DelegateSheet> {
return InkWell( return InkWell(
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);
showMyBottomSheet( showMyBottomSheet(context,
context, callBackFunc: widget.callBackFunc,
callBackFunc: widget.callBackFunc, child: SelectedItemSheet(
child: SelectedItemSheet( LocaleKeys.comments.tr(),
LocaleKeys.comments.tr(), apiMode: widget.apiMode,
apiMode: widget.apiMode, replacementList: actionHistory,
replacementList: actionHistory, notificationID: widget.notificationID,
notificationID: widget.notificationID, isITGRequest: widget.wFHistory != null,
isITGRequest: widget.wFHistory != null, getNotificationRespondAttributes: widget.getNotificationRespondAttributes,
getNotificationRespondAttributes: widget.getNotificationRespondAttributes, ));
),
);
}, },
child: Row( child: Row(
children: <Widget>[ children: [
CircularAvatar(url: actionHistory.employeeImage, height: 30, width: 30, isImageBase64: actionHistory.employeeImage != null ? true : false), CircularAvatar(
url: actionHistory.employeeImage,
height: 30,
width: 30,
isImageBase64: actionHistory.employeeImage != null ? true : false,
),
16.width, 16.width,
Expanded(child: (actionHistory.employeeDisplayName ?? "").toText12()), Expanded(
child: (actionHistory.employeeDisplayName ?? "").toText12(),
),
IconButton( IconButton(
onPressed: () { onPressed: () {
actionHistory.isFavorite = !(actionHistory.isFavorite ?? false); actionHistory.isFavorite = !(actionHistory.isFavorite ?? false);
@ -565,8 +587,12 @@ class _DelegateSheetState extends State<DelegateSheet> {
isNeedToRefresh: false, isNeedToRefresh: false,
); );
}, },
icon: Icon(Icons.star, size: 16, color: (actionHistory.isFavorite ?? false) ? MyColors.yellowColor : MyColors.borderColor), icon: Icon(
), Icons.star,
size: 16,
color: (actionHistory.isFavorite ?? false) ? MyColors.yellowColor : MyColors.borderColor,
),
)
], ],
), ),
); );

@ -46,7 +46,7 @@ class _SsoLoginWebViewState extends State<SsoLoginWebView> {
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<body onload="document.forms[0].submit()"> <body onload="document.forms[0].submit()">
<form method="POST" action="https://ek.techmaster.in/SSO/HMG"> <form method="POST" action="https://Paxes-release.techmaster.in/SSO/HMG">
<input type="hidden" name="JWTToken" value="${widget.jwtToken}" /> <input type="hidden" name="JWTToken" value="${widget.jwtToken}" />
</form> </form>
<h1>Redirecting...</h1> <h1>Redirecting...</h1>

@ -17,8 +17,8 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# Read more about iOS versioning at # Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
#version: 3.6.8+300078 #version: 3.7.1+300081
version: 3.9.2+1 version: 3.9.3+1
environment: environment:
sdk: ^3.7.0 sdk: ^3.7.0
@ -56,7 +56,8 @@ dependencies:
logger: ^1.1.0 logger: ^1.1.0
flutter_countdown_timer: ^4.1.0 flutter_countdown_timer: ^4.1.0
platform_device_id_plus: ^1.0.7 # platform_device_id_plus: ^1.0.7
mobile_device_identifier: ^0.0.3
device_info_plus: ^11.5.0 device_info_plus: ^11.5.0
image_picker: ^1.1.2 image_picker: ^1.1.2
file_picker: ^8.3.1 file_picker: ^8.3.1

Loading…
Cancel
Save