Merge branch 'development_haroon' into 'master'

huawei attendance fixes

See merge request Cloud_Solution/mohemm-flutter-app!167
merge-requests/3/head
haroon amjad 2 years ago
commit b81361f97d

@ -110,7 +110,6 @@ class _LoginScreenState extends State<LoginScreen> {
firebaseToken = await _firebaseMessaging.getToken();
AppNotifications().init(firebaseToken);
checkLoginInfo();
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
}
});
@ -121,13 +120,11 @@ class _LoginScreenState extends State<LoginScreen> {
firebaseToken = await _firebaseMessaging.getToken();
AppNotifications().init(firebaseToken);
checkLoginInfo();
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
}
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
}
}

@ -7,6 +7,7 @@ import 'package:geolocator/geolocator.dart';
import 'package:huawei_location/location/fused_location_provider_client.dart';
import 'package:huawei_location/location/location_request.dart';
import 'package:huawei_location/location/location_settings_request.dart';
import 'package:huawei_location/permission/permission_handler.dart';
import 'package:mohem_flutter_app/api/dashboard_api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
@ -24,6 +25,7 @@ import 'package:mohem_flutter_app/widgets/location/Location.dart';
import 'package:mohem_flutter_app/widgets/nfc/nfc_reader_sheet.dart';
import 'package:mohem_flutter_app/widgets/qr_scanner_dialog.dart';
import 'package:nfc_manager/nfc_manager.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:wifi_iot/wifi_iot.dart';
class MarkAttendanceWidget extends StatefulWidget {
@ -71,6 +73,36 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
});
}
void checkHuaweiLocationPermission(String attendanceType) async {
PermissionHandler permissionHandler = PermissionHandler();
if (await permissionHandler.hasLocationPermission()) {
getHuaweiCurrentLocation(attendanceType);
} else {
bool has = await requestPermissions();
if (has) {
getHuaweiCurrentLocation(attendanceType);
} else {
showDialog(
context: context,
builder: (BuildContext cxt) => ConfirmDialog(
message: "You need to give location permission to mark attendance",
onTap: () {
Navigator.pop(context);
},
),
);
}
}
}
Future<bool> requestPermissions() async {
var result = await [
Permission.location,
].request();
return (result[Permission.location] == PermissionStatus.granted || result[Permission.locationAlways] == PermissionStatus.granted);
}
@override
void dispose() {
super.dispose();
@ -101,7 +133,7 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () {
if (isNfcLocationEnabled) {
if (AppState().getIsHuawei) {
getHuaweiCurrentLocation("NFC");
checkHuaweiLocationPermission("NFC");
} else {
Location.getCurrentLocation((Position position, bool isMocked) {
if (isMocked) {
@ -119,7 +151,7 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, () {
if (isWifiLocationEnabled) {
if (AppState().getIsHuawei) {
getHuaweiCurrentLocation("WIFI");
checkHuaweiLocationPermission("WIFI");
} else {
Location.getCurrentLocation((Position position, bool isMocked) {
if (isMocked) {
@ -138,7 +170,7 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
attendanceMethod("QR", "assets/images/ic_qr.svg", isQrEnabled, () async {
if (isQrLocationEnabled) {
if (AppState().getIsHuawei) {
getHuaweiCurrentLocation("QR");
checkHuaweiLocationPermission("QR");
} else {
Location.getCurrentLocation((Position position, bool isMocked) {
if (isMocked) {
@ -170,6 +202,17 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
locationService.checkLocationSettings(locationSettingsRequest).then((settings) async {
await locationService.getLastLocation().then((value) {
if (value.latitude == null || value.longitude == null) {
showDialog(
context: context,
builder: (BuildContext cxt) => ConfirmDialog(
message: "Unable to get your location, Please check your location settings & try again.",
onTap: () {
Navigator.pop(context);
},
),
);
} else {
if (attendanceType == "QR") {
performQrCodeAttendance(widget.model, lat: value.latitude.toString() ?? "", lng: value.longitude.toString() ?? "");
}
@ -179,6 +222,7 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
if (attendanceType == "NFC") {
performNfcAttendance(widget.model, lat: value.latitude.toString() ?? "", lng: value.longitude.toString() ?? "");
}
}
});
}).catchError((error) {
if (error.code == "LOCATION_SETTINGS_NOT_AVAILABLE") {

Loading…
Cancel
Save