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(); firebaseToken = await _firebaseMessaging.getToken();
AppNotifications().init(firebaseToken); AppNotifications().init(firebaseToken);
checkLoginInfo(); checkLoginInfo();
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
} }
}); });
@ -121,13 +120,11 @@ class _LoginScreenState extends State<LoginScreen> {
firebaseToken = await _firebaseMessaging.getToken(); firebaseToken = await _firebaseMessaging.getToken();
AppNotifications().init(firebaseToken); AppNotifications().init(firebaseToken);
checkLoginInfo(); checkLoginInfo();
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
} }
} catch (ex) { } catch (ex) {
Utils.hideLoading(context); Utils.hideLoading(context);
Utils.handleException(ex, context, null); Utils.handleException(ex, context, null);
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); 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/fused_location_provider_client.dart';
import 'package:huawei_location/location/location_request.dart'; import 'package:huawei_location/location/location_request.dart';
import 'package:huawei_location/location/location_settings_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/api/dashboard_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/colors.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/nfc/nfc_reader_sheet.dart';
import 'package:mohem_flutter_app/widgets/qr_scanner_dialog.dart'; import 'package:mohem_flutter_app/widgets/qr_scanner_dialog.dart';
import 'package:nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/nfc_manager.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:wifi_iot/wifi_iot.dart'; import 'package:wifi_iot/wifi_iot.dart';
class MarkAttendanceWidget extends StatefulWidget { 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 @override
void dispose() { void dispose() {
super.dispose(); super.dispose();
@ -101,7 +133,7 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () { attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () {
if (isNfcLocationEnabled) { if (isNfcLocationEnabled) {
if (AppState().getIsHuawei) { if (AppState().getIsHuawei) {
getHuaweiCurrentLocation("NFC"); checkHuaweiLocationPermission("NFC");
} else { } else {
Location.getCurrentLocation((Position position, bool isMocked) { Location.getCurrentLocation((Position position, bool isMocked) {
if (isMocked) { if (isMocked) {
@ -119,7 +151,7 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, () { attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, () {
if (isWifiLocationEnabled) { if (isWifiLocationEnabled) {
if (AppState().getIsHuawei) { if (AppState().getIsHuawei) {
getHuaweiCurrentLocation("WIFI"); checkHuaweiLocationPermission("WIFI");
} else { } else {
Location.getCurrentLocation((Position position, bool isMocked) { Location.getCurrentLocation((Position position, bool isMocked) {
if (isMocked) { if (isMocked) {
@ -138,7 +170,7 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
attendanceMethod("QR", "assets/images/ic_qr.svg", isQrEnabled, () async { attendanceMethod("QR", "assets/images/ic_qr.svg", isQrEnabled, () async {
if (isQrLocationEnabled) { if (isQrLocationEnabled) {
if (AppState().getIsHuawei) { if (AppState().getIsHuawei) {
getHuaweiCurrentLocation("QR"); checkHuaweiLocationPermission("QR");
} else { } else {
Location.getCurrentLocation((Position position, bool isMocked) { Location.getCurrentLocation((Position position, bool isMocked) {
if (isMocked) { if (isMocked) {
@ -170,14 +202,26 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
locationService.checkLocationSettings(locationSettingsRequest).then((settings) async { locationService.checkLocationSettings(locationSettingsRequest).then((settings) async {
await locationService.getLastLocation().then((value) { await locationService.getLastLocation().then((value) {
if (attendanceType == "QR") { if (value.latitude == null || value.longitude == null) {
performQrCodeAttendance(widget.model, lat: value.latitude.toString() ?? "", lng: value.longitude.toString() ?? ""); showDialog(
} context: context,
if (attendanceType == "WIFI") { builder: (BuildContext cxt) => ConfirmDialog(
performWifiAttendance(widget.model, lat: value.latitude.toString() ?? "", lng: value.longitude.toString() ?? ""); message: "Unable to get your location, Please check your location settings & try again.",
} onTap: () {
if (attendanceType == "NFC") { Navigator.pop(context);
performNfcAttendance(widget.model, lat: value.latitude.toString() ?? "", lng: value.longitude.toString() ?? ""); },
),
);
} else {
if (attendanceType == "QR") {
performQrCodeAttendance(widget.model, lat: value.latitude.toString() ?? "", lng: value.longitude.toString() ?? "");
}
if (attendanceType == "WIFI") {
performWifiAttendance(widget.model, lat: value.latitude.toString() ?? "", lng: value.longitude.toString() ?? "");
}
if (attendanceType == "NFC") {
performNfcAttendance(widget.model, lat: value.latitude.toString() ?? "", lng: value.longitude.toString() ?? "");
}
} }
}); });
}).catchError((error) { }).catchError((error) {

Loading…
Cancel
Save