From be32b9c4a20efa08c65326fd93d32f7c4d8d2cc1 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 26 Jan 2023 12:50:26 +0300 Subject: [PATCH] attendance fixes --- lib/classes/utils.dart | 2 ++ lib/widgets/dialogs/confirm_dialog.dart | 8 +++---- lib/widgets/mark_attendance_widget.dart | 30 ++++++++++++++++++++----- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 5990edf..2c36694 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -115,12 +115,14 @@ class Utils { } else { if (!AppState().isAuthenticated) { showDialog( + barrierDismissible: false, context: cxt, builder: (cxt) => ConfirmDialog( message: errorMessage, onTap: () { Navigator.pushNamedAndRemoveUntil(cxt, AppRoutes.login, (Route route) => false); }, + onCloseTap: () {}, ), ); } else { diff --git a/lib/widgets/dialogs/confirm_dialog.dart b/lib/widgets/dialogs/confirm_dialog.dart index 4c94340..560bd26 100644 --- a/lib/widgets/dialogs/confirm_dialog.dart +++ b/lib/widgets/dialogs/confirm_dialog.dart @@ -12,8 +12,9 @@ class ConfirmDialog extends StatelessWidget { final String message; final String? okTitle; final VoidCallback? onTap; + final VoidCallback? onCloseTap; - const ConfirmDialog({Key? key, this.title, required this.message, this.okTitle, this.onTap}) : super(key: key); + const ConfirmDialog({Key? key, this.title, required this.message, this.okTitle, this.onTap, this.onCloseTap}) : super(key: key); @override Widget build(BuildContext context) { @@ -41,9 +42,8 @@ class ConfirmDialog extends StatelessWidget { icon: const Icon(Icons.close), color: MyColors.darkTextColor, constraints: const BoxConstraints(), - onPressed: () { - Navigator.pop(context); - }, + onPressed: () => onCloseTap ?? Navigator.pop(context), + // onPressed: () => Navigator.pop(context), ) ], ), diff --git a/lib/widgets/mark_attendance_widget.dart b/lib/widgets/mark_attendance_widget.dart index 5cfc347..8603f6e 100644 --- a/lib/widgets/mark_attendance_widget.dart +++ b/lib/widgets/mark_attendance_widget.dart @@ -75,7 +75,6 @@ class _MarkAttendanceWidgetState extends State { @override Widget build(BuildContext context) { - return Container( padding: EdgeInsets.only(left: 21, right: 21, bottom: 21, top: widget.topPadding), decoration: const BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white), @@ -146,7 +145,6 @@ class _MarkAttendanceWidgetState extends State { Future performNfcAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async { if (Platform.isIOS) { - Utils.readNFc(onRead: (String nfcId) async { Utils.showLoading(context); try { @@ -215,7 +213,25 @@ class _MarkAttendanceWidgetState extends State { } } + Future checkSession() async { + try { + Utils.showLoading(context); + await DashboardApiClient().getOpenMissingSwipes(); + Utils.hideLoading(context); + return true; + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + return false; + } + } + Future performWifiAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async { + if (Platform.isAndroid) { + if (!(await checkSession())) { + return; + } + } Utils.showLoading(context); bool isConnected = await WiFiForIoTPlugin.connect(AppState().getMohemmWifiSSID ?? "", password: AppState().getMohemmWifiPassword ?? "", joinOnce: Platform.isIOS ? false : true, security: NetworkSecurity.WPA, withInternet: false); @@ -228,7 +244,7 @@ class _MarkAttendanceWidgetState extends State { } } - if (isConnected) { + if (isConnected && AppState().isAuthenticated) { await WiFiForIoTPlugin.forceWifiUsage(true); await Future.delayed(const Duration(seconds: 6)); try { @@ -248,8 +264,12 @@ class _MarkAttendanceWidgetState extends State { Utils.handleException(ex, context, null); } } else { - Utils.hideLoading(context); - Utils.confirmDialog(context, LocaleKeys.comeNearHMGWifi.tr()); + if (AppState().isAuthenticated) { + Utils.hideLoading(context); + Utils.confirmDialog(context, LocaleKeys.comeNearHMGWifi.tr()); + } else { + await closeWifiRequest(); + } } }