From c29e2c88f0d4d4ff6bb8b94cbc21c97cd1356d13 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 17 Jan 2024 14:01:25 +0300 Subject: [PATCH] location timeout handled in online check-in via location --- lib/config/localized_values.dart | 1 + lib/uitl/location_util.dart | 30 +++++++++++++++++++++--- lib/uitl/translations_delegate_base.dart | 1 + 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index cc45dfeb..34251a8f 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -1905,4 +1905,5 @@ const Map localizedValues = { "locationCheckInError": {"en": "Please make sure that you're within the hospital location to perform online check-in.", "ar": "يرجى التأكد من تواجدك داخل موقع المستشفى لإجراء تسجيل الوصول عبر الإنترنت."}, "upcoming": {"en": "Upcoming", "ar": "المواعيد القادمة"}, "noUpcomingAppointment": {"en": "No upcoming appointments", "ar": "لا توجد مواعيد القادمة"}, + "locationTimeoutError": {"en": "Unable to fetch your location, Please try again.", "ar": "غير قادر على جلب موقعك، يرجى المحاولة مرة أخرى."}, }; \ No newline at end of file diff --git a/lib/uitl/location_util.dart b/lib/uitl/location_util.dart index b890882f..a73c48e9 100644 --- a/lib/uitl/location_util.dart +++ b/lib/uitl/location_util.dart @@ -36,9 +36,12 @@ class LocationUtils { if (value) { await Geolocator.checkPermission().then((permission) async { if (permission == LocationPermission.always || permission == LocationPermission.whileInUse) { - Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.low, timeLimit: Duration(seconds: 10)).then((value) { + Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.best, timeLimit: Duration(seconds: 1)).then((value) { setLocation(value); if (callBack != null) callBack(LatLng(value.latitude, value.longitude)); + }).catchError((err) { + print(err); + if (isShowConfirmDialog) showLocationTimeOutDialog(failureCallBack: failureCallBack); }); } @@ -52,7 +55,7 @@ class LocationUtils { if (callBack != null) callBack(LatLng(value.latitude, value.longitude)); }); } else { - if (isShowConfirmDialog) showErrorLocationDialog(false); + if (isShowConfirmDialog) showErrorLocationDialog(false, failureCallBack: failureCallBack); } }); } else { @@ -60,7 +63,7 @@ class LocationUtils { getCurrentLocation(callBack: callBack); } else { setZeroLocation(); - if (isShowConfirmDialog) showErrorLocationDialog(false); + if (isShowConfirmDialog) showErrorLocationDialog(false, failureCallBack: failureCallBack); } } } @@ -141,6 +144,27 @@ class LocationUtils { } } + showLocationTimeOutDialog({Function() failureCallBack}) { + ConfirmDialog dialog = new ConfirmDialog( + context: context, + confirmMessage: TranslationBase.of(context).locationTimeoutError, + okText: TranslationBase.of(context).ok, + cancelText: TranslationBase.of(context).cancel_nocaps, + okFunction: () { + ConfirmDialog.closeAlertDialog(context); + Navigator.of(context).canPop(); + if (failureCallBack != null) { + failureCallBack(); + } + }, + cancelFunction: () { + if (failureCallBack != null) { + failureCallBack(); + } + }); + return dialog.showAlertDialog(context); + } + showErrorLocationDialog(bool isPermissionError, {Function() failureCallBack}) { ConfirmDialog dialog = new ConfirmDialog( context: context, diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index 03a76dc1..150b23c1 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -2914,6 +2914,7 @@ class TranslationBase { String get locationCheckInError => localizedValues["locationCheckInError"][locale.languageCode]; String get upcoming => localizedValues["upcoming"][locale.languageCode]; String get noUpcomingAppointment => localizedValues["noUpcomingAppointment"][locale.languageCode]; + String get locationTimeoutError => localizedValues["locationTimeoutError"][locale.languageCode]; }