From f7057f4827a78384112e468b998f2650a63f5b4f Mon Sep 17 00:00:00 2001 From: zaid_daoud Date: Mon, 15 May 2023 10:02:53 +0300 Subject: [PATCH] Login Api Issue Fixed Manually --- .../providers/api/user_provider.dart | 58 ++++++++----------- lib/views/pages/login.dart | 17 +++--- lib/views/pages/user/land_page.dart | 2 +- 3 files changed, 34 insertions(+), 43 deletions(-) diff --git a/lib/controllers/providers/api/user_provider.dart b/lib/controllers/providers/api/user_provider.dart index 35634708..918787b0 100644 --- a/lib/controllers/providers/api/user_provider.dart +++ b/lib/controllers/providers/api/user_provider.dart @@ -6,10 +6,9 @@ import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/user.dart'; -class UserProvider extends ChangeNotifier{ - +class UserProvider extends ChangeNotifier { //reset provider data - void reset(){ + void reset() { _user = null; ApiManager.instance.user = user; _loading = false; @@ -25,7 +24,6 @@ class UserProvider extends ChangeNotifier{ notifyListeners(); } - // when login or register in-process _login = true // when login or register is done or not start = false bool _loading = false; @@ -41,30 +39,30 @@ class UserProvider extends ChangeNotifier{ /// return state code if request complete may be 200, 404 or 403 /// for more details check http state manager /// lib\controllers\http_status_manger\http_status_manger.dart - Future login ({ + Future login({ @required String host, @required User user, }) async { - if(_loading == true) - return -2; + if (_loading == true) return -2; _loading = true; notifyListeners(); Response response; - try{ + try { response = await ApiManager.instance.post( - URLs.login, - body: await user.toLoginJson(), + URLs.login, + body: await user.toLoginJson(), ); _loading = false; - if(response.statusCode >= 200 && response.statusCode < 300) { + if (response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received _user = User.fromJson(jsonDecode(response.body)); ApiManager.instance.user = _user; + notifyListeners(); return response.statusCode; } notifyListeners(); return response.statusCode; - } catch(error) { + } catch (error) { _loading = false; notifyListeners(); return -1; @@ -77,28 +75,27 @@ class UserProvider extends ChangeNotifier{ /// return state code if request complete may be 200, 404 or 403 /// for more details about state codes check http state manager /// lib\controllers\http_status_manger\http_status_manger.dart - Future register ({ + Future register({ @required String host, @required User user, }) async { - if(_loading == true) - return -2; + if (_loading == true) return -2; _loading = true; notifyListeners(); Response response; - try{ + try { response = await ApiManager.instance.post( URLs.register, body: await user.toLoginJson(), ); - } catch(error) { + } catch (error) { _loading = false; notifyListeners(); return -1; } _loading = false; notifyListeners(); - if(response.statusCode >= 200 && response.statusCode < 300) { + if (response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received _user = User.fromJson(jsonDecode(utf8.decode(response.bodyBytes))[0]); _user.hospital = user.hospital; @@ -114,31 +111,27 @@ class UserProvider extends ChangeNotifier{ /// return state code if request complete may be 200, 404 or 403 /// for more details about state codes check http state manager /// lib\controllers\http_status_manger\http_status_manger.dart - Future updateProfile ({ + Future updateProfile({ @required String host, @required User user, }) async { - if(_loading == true) - return -2; + if (_loading == true) return -2; _loading = true; notifyListeners(); Response response; - Map jsonObject ={}; + Map jsonObject = {}; jsonObject["uid"] = user.id; jsonObject["token"] = user.token; - if(user.department.id != _user.department.id) - jsonObject["department"] = user.department.id; - if(user.whatsApp != _user.whatsApp) - jsonObject["whatsapp"] = user.whatsApp; - if(user.phoneNumber != _user.phoneNumber) - jsonObject["phone"] = user.phoneNumber; - try{ + if (user.department.id != _user.department.id) jsonObject["department"] = user.department.id; + if (user.whatsApp != _user.whatsApp) jsonObject["whatsapp"] = user.whatsApp; + if (user.phoneNumber != _user.phoneNumber) jsonObject["phone"] = user.phoneNumber; + try { response = response = await ApiManager.instance.post( URLs.login, body: jsonObject, ); - } catch(error) { + } catch (error) { _loading = false; notifyListeners(); return -1; @@ -147,7 +140,7 @@ class UserProvider extends ChangeNotifier{ _loading = false; notifyListeners(); - if(response.statusCode >= 200 && response.statusCode < 300) { + if (response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received _user = User.fromJson(jsonDecode(utf8.decode(response.bodyBytes))[0]); _user.hospital = user.hospital; @@ -157,5 +150,4 @@ class UserProvider extends ChangeNotifier{ } return response.statusCode; } - -} \ No newline at end of file +} diff --git a/lib/views/pages/login.dart b/lib/views/pages/login.dart index 4d872ac9..3bd061b0 100644 --- a/lib/views/pages/login.dart +++ b/lib/views/pages/login.dart @@ -13,8 +13,6 @@ import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import '../widgets/buttons/app_outlined_button.dart'; - class Login extends StatefulWidget { static final String id = "/login"; @@ -115,16 +113,17 @@ class _LoginState extends State { user: _user, host: _settingProvider.host, ); - if (status >= 200 && status < 300) { + if (status >= 200 && status < 300 && _userProvider.user?.userName != null) { _settingProvider.setUser(_userProvider.user); - // if (_userProvider.user.isActive) - Navigator.of(context).pushNamed(LandPage.id); - // else - // Fluttertoast.showToast(msg: _subtitle.activationAlert); + // if (_userProvider.user.isActive) + Navigator.of(context).pushNamed(LandPage.id); + // else + // Fluttertoast.showToast(msg: _subtitle.activationAlert); } else { - if(status >= 400 && status < 500) return; + if (status >= 400 && status < 500) return; - String errorMessage = status == 400 ? _subtitle.wrongEmailOrPassword : HttpStatusManger.getStatusMessage(status: status, subtitle: _subtitle); + String errorMessage = + status == 400 || _userProvider.user?.userName == null ? _subtitle.wrongEmailOrPassword : HttpStatusManger.getStatusMessage(status: status, subtitle: _subtitle); ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text(errorMessage), )); diff --git a/lib/views/pages/user/land_page.dart b/lib/views/pages/user/land_page.dart index 096e3009..d0ff700a 100644 --- a/lib/views/pages/user/land_page.dart +++ b/lib/views/pages/user/land_page.dart @@ -182,7 +182,7 @@ class _LandPageState extends State { // Navigator.of(context).pushNamed(PreventiveMaintenanceVisitsPage.id); // }, // ), - if (_userProvider.user.type != UsersTypes.engineer) + if (_userProvider.user != null && _userProvider.user.type != UsersTypes.engineer) LandPageItem( text: "Request Gas Refill", icon: FontAwesomeIcons.truckFast,