|
|
|
@ -8,6 +8,7 @@ import 'package:flutter/cupertino.dart';
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
|
import 'package:huawei_hmsavailability/huawei_hmsavailability.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/api/login_api_client.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/app_state/app_state.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/classes/colors.dart';
|
|
|
|
@ -19,7 +20,6 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/main.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/models/check_mobile_app_version_model.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
|
|
|
|
@ -27,7 +27,6 @@ import 'package:mohem_flutter_app/models/member_login_list_model.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/models/privilege_list_model.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/widgets/input_widget.dart';
|
|
|
|
|
import 'package:permission_handler/permission_handler.dart';
|
|
|
|
|
import 'package:safe_device/safe_device.dart';
|
|
|
|
|
import 'package:wifi_iot/wifi_iot.dart';
|
|
|
|
|
|
|
|
|
@ -58,9 +57,12 @@ class _LoginScreenState extends State<LoginScreen> {
|
|
|
|
|
bool isOnExternalStorage = false;
|
|
|
|
|
bool isDevelopmentModeEnable = false;
|
|
|
|
|
|
|
|
|
|
late HmsApiAvailability hmsApiAvailability;
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
void initState() {
|
|
|
|
|
super.initState();
|
|
|
|
|
hmsApiAvailability = HmsApiAvailability();
|
|
|
|
|
// checkFirebaseToken();
|
|
|
|
|
// if (kReleaseMode) {
|
|
|
|
|
// checkDeviceSafety();
|
|
|
|
@ -94,21 +96,27 @@ class _LoginScreenState extends State<LoginScreen> {
|
|
|
|
|
Future<void> checkFirebaseToken() async {
|
|
|
|
|
try {
|
|
|
|
|
Utils.showLoading(context);
|
|
|
|
|
await Firebase.initializeApp();
|
|
|
|
|
_firebaseMessaging = FirebaseMessaging.instance;
|
|
|
|
|
firebaseToken = await _firebaseMessaging.getToken();
|
|
|
|
|
AppNotifications().init(firebaseToken);
|
|
|
|
|
loginInfo = await LoginApiClient().getMobileLoginInfoNEW(firebaseToken ?? "", Platform.isAndroid ? "android" : "ios");
|
|
|
|
|
if (loginInfo == null) {
|
|
|
|
|
await checkPrefs();
|
|
|
|
|
_autoLogin = false;
|
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
|
return;
|
|
|
|
|
if (Platform.isAndroid) {
|
|
|
|
|
try {
|
|
|
|
|
await hmsApiAvailability.isHMSAvailable().then((value) async {
|
|
|
|
|
if (value == 0) {
|
|
|
|
|
AppState().setIsHuawei = true;
|
|
|
|
|
AppNotifications().initHuaweiPush(checkLoginInfo);
|
|
|
|
|
} else {
|
|
|
|
|
await Firebase.initializeApp();
|
|
|
|
|
_firebaseMessaging = FirebaseMessaging.instance;
|
|
|
|
|
firebaseToken = await _firebaseMessaging.getToken();
|
|
|
|
|
AppNotifications().init(firebaseToken);
|
|
|
|
|
checkLoginInfo();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} catch (ex) {}
|
|
|
|
|
} else {
|
|
|
|
|
loginInfo!.deviceToken = firebaseToken;
|
|
|
|
|
await checkPrefs();
|
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
|
performLogin();
|
|
|
|
|
await Firebase.initializeApp();
|
|
|
|
|
_firebaseMessaging = FirebaseMessaging.instance;
|
|
|
|
|
firebaseToken = await _firebaseMessaging.getToken();
|
|
|
|
|
AppNotifications().init(firebaseToken);
|
|
|
|
|
checkLoginInfo();
|
|
|
|
|
}
|
|
|
|
|
} catch (ex) {
|
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
@ -116,6 +124,21 @@ class _LoginScreenState extends State<LoginScreen> {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void checkLoginInfo() async {
|
|
|
|
|
loginInfo = await LoginApiClient().getMobileLoginInfoNEW(AppState().getIsHuawei ? AppState().getHuaweiPushToken : firebaseToken ?? "", Platform.isAndroid ? "android" : "ios");
|
|
|
|
|
if (loginInfo == null) {
|
|
|
|
|
await checkPrefs();
|
|
|
|
|
_autoLogin = false;
|
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
|
return;
|
|
|
|
|
} else {
|
|
|
|
|
loginInfo!.deviceToken = firebaseToken;
|
|
|
|
|
await checkPrefs();
|
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
|
performLogin();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> checkPrefs() async {
|
|
|
|
|
String username = await Utils.getStringFromPrefs(SharedPrefsConsts.username);
|
|
|
|
|
if (username.isNotEmpty) {
|
|
|
|
@ -159,7 +182,6 @@ class _LoginScreenState extends State<LoginScreen> {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
if (isAppOpenBySystem == null) {
|
|
|
|
|