Merge branch 'fix_auth_issue' of https://gitlab.com/Cloud_Solution/driver-app into merge_auth_fixes_into_dev

 Conflicts:
	lib/pages/authentication/login_page.dart
	lib/pages/delivery/information_page.dart
logut
Elham Rababah 5 years ago
commit e3610b0804

@ -15,6 +15,7 @@ const GET_ALL_DELIVERD_ORDER =
/// Body Constant /// Body Constant
const CHANNEL = 9; const CHANNEL = 9;
const VERSION_ID = 8.3;
/// design constant /// design constant
const MAX_SMALL_SCREEN = 660; const MAX_SMALL_SCREEN = 660;

@ -33,9 +33,9 @@ class BaseAppClient {
body['UserID'] = '${doctorProfile?.userID}'; body['UserID'] = '${doctorProfile?.userID}';
body['TokenID'] = token; body['TokenID'] = token;
body['MobileNo'] = doctorProfile?.mobileNumber; body['MobileNo'] = doctorProfile?.mobileNumber;
body['Channel'] = CHANNEL;
} }
body['Channel'] = CHANNEL;
body['VersionID'] = VERSION_ID;
print("URL : $url"); print("URL : $url");
print("Body : ${json.encode(body)}"); print("Body : ${json.encode(body)}");

@ -1,22 +1,57 @@
import 'package:driverapp/config/shared_pref_kay.dart'; import 'package:driverapp/config/shared_pref_kay.dart';
import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/model/authentication/authenticated_user.dart';
import 'package:driverapp/core/model/authentication/login_request.dart'; import 'package:driverapp/core/model/authentication/login_request.dart';
import 'package:driverapp/core/service/authentication_service.dart'; import 'package:driverapp/core/service/authentication_service.dart';
import 'package:driverapp/core/service/client/base_app_client.dart'; import 'package:driverapp/core/service/client/base_app_client.dart';
import 'package:driverapp/core/viewModels/base_view_model.dart'; import 'package:flutter/cupertino.dart';
import '../../locator.dart'; import '../../locator.dart';
enum APP_STATUS { LOADING, UNAUTHENTICATED, AUTHENTICATED } enum APP_STATUS { LOADING, UNAUTHENTICATED, AUTHENTICATED }
class AuthenticationViewModel extends BaseViewModel { class AuthenticationViewModel with ChangeNotifier {
AuthenticationService _authenticationService = locator<AuthenticationService>(); AuthenticationService _authenticationService =
locator<AuthenticationService>();
AuthenticatedUser user;
bool isLogin = false;
bool isLoading = false;
bool isError = false;
String error;
AuthenticationViewModel() {
getUser();
}
getUser() async {
if (user == null) {
isLoading = true;
notifyListeners();
var userProfile = await sharedPref.getObject(USER_PROFILE);
if (userProfile != null) {
user = AuthenticatedUser.fromJson(
await sharedPref.getObject(USER_PROFILE));
isLogin = true;
isLoading = false;
notifyListeners();
} else {
isLogin = false;
isLoading = false;
notifyListeners();
}
}
// else
// {
// isLogin = true;
// isLoading = false;
// notifyListeners();
// }
}
APP_STATUS get status { APP_STATUS get status {
if (state == ViewState.Busy || state == ViewState.BusyLocal) { if (isLoading) {
return APP_STATUS.LOADING; return APP_STATUS.LOADING;
} else { } else {
if ( user != null) { if (isLogin) {
return APP_STATUS.AUTHENTICATED; return APP_STATUS.AUTHENTICATED;
} else { } else {
return APP_STATUS.UNAUTHENTICATED; return APP_STATUS.UNAUTHENTICATED;
@ -25,16 +60,20 @@ class AuthenticationViewModel extends BaseViewModel {
} }
login(LoginRequest loginRequest) async { login(LoginRequest loginRequest) async {
setState(ViewState.BusyLocal); isLoading = true;
notifyListeners();
await _authenticationService.login(loginRequest); await _authenticationService.login(loginRequest);
if (_authenticationService.hasError) { if (_authenticationService.hasError) {
error = _authenticationService.error; error = _authenticationService.error;
setState(ViewState.ErrorLocal); isLoading = false;
isError = true;
notifyListeners();
} else { } else {
sharedPref.setObject( sharedPref.setObject(
USER_PROFILE, _authenticationService.authenticatedUser); USER_PROFILE, _authenticationService.authenticatedUser);
sharedPref.setString(TOKEN, _authenticationService.token); sharedPref.setString(TOKEN, _authenticationService.token);
setState(ViewState.Idle); user = _authenticationService.authenticatedUser;
notifyListeners();
} }
} }
} }

@ -5,6 +5,7 @@ import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'config/size_config.dart'; import 'config/size_config.dart';
import 'core/viewModels/authentication_view_model.dart';
import 'core/viewModels/project_view_model.dart'; import 'core/viewModels/project_view_model.dart';
import 'locator.dart'; import 'locator.dart';
@ -25,7 +26,10 @@ class MyApp extends StatelessWidget {
providers: [ providers: [
ChangeNotifierProvider<ProjectViewModel>( ChangeNotifierProvider<ProjectViewModel>(
create: (context) => ProjectViewModel(), create: (context) => ProjectViewModel(),
) ),
ChangeNotifierProvider<AuthenticationViewModel>(
create: (context) => AuthenticationViewModel(),
),
], ],
child: Consumer<ProjectViewModel>( child: Consumer<ProjectViewModel>(
builder: (context, projectProvider, child) => MaterialApp( builder: (context, projectProvider, child) => MaterialApp(

@ -1,9 +1,7 @@
import 'package:driverapp/app-icons/driver_app_icons.dart'; import 'package:driverapp/app-icons/driver_app_icons.dart';
import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/model/authentication/login_request.dart'; import 'package:driverapp/core/model/authentication/login_request.dart';
import 'package:driverapp/core/viewModels/authentication_view_model.dart'; import 'package:driverapp/core/viewModels/authentication_view_model.dart';
import 'package:driverapp/core/viewModels/project_view_model.dart'; import 'package:driverapp/core/viewModels/project_view_model.dart';
import 'package:driverapp/pages/base/base_view.dart';
import 'package:driverapp/pages/dashboard/dashboard_screen.dart'; import 'package:driverapp/pages/dashboard/dashboard_screen.dart';
import 'package:driverapp/uitl/translations_delegate_base.dart'; import 'package:driverapp/uitl/translations_delegate_base.dart';
import 'package:driverapp/uitl/utils.dart'; import 'package:driverapp/uitl/utils.dart';
@ -21,14 +19,15 @@ class LoginPage extends StatelessWidget {
LoginRequest loginRequest = LoginRequest(); LoginRequest loginRequest = LoginRequest();
final loginFormKey = GlobalKey<FormState>(); final loginFormKey = GlobalKey<FormState>();
ProjectViewModel projectViewModel; ProjectViewModel projectViewModel;
AuthenticationViewModel authenticationViewModel;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectViewModel = Provider.of(context); projectViewModel = Provider.of(context);
authenticationViewModel = Provider.of(context);
return AnimatedSwitcher( return AnimatedSwitcher(
duration: Duration(microseconds: 350), duration: Duration(microseconds: 350),
child: BaseView<AuthenticationViewModel>( child: AppScaffold(
builder: (_, model, widget) => AppScaffold(
isShowAppBar: false, isShowAppBar: false,
body: SingleChildScrollView( body: SingleChildScrollView(
child: Center( child: Center(
@ -229,26 +228,26 @@ class LoginPage extends StatelessWidget {
SizedBox( SizedBox(
height: 10, height: 10,
), ),
Container(
margin: EdgeInsets.all(10), Container(
height: MediaQuery.of(context).size.height * 0.22, margin: EdgeInsets.all(10),
child: Column( height: MediaQuery.of(context).size.height * 0.22,
children: <Widget>[ child: Column(
SecondaryButton( children: <Widget>[
label: TranslationBase.of(context).login, SecondaryButton(
onTap: () { label: TranslationBase.of(context).login,
login(model, context); onTap: () {
}, login(context);
disabled: model.state == ViewState.BusyLocal, },
loading: model.state == ViewState.BusyLocal, disabled: authenticationViewModel.isLoading,
), loading: authenticationViewModel.isLoading,
SizedBox( ),
height: 30, SizedBox(
), height: 30,
], ),
)) ],
], ))
), ],
), ),
), ),
), ),
@ -256,14 +255,15 @@ class LoginPage extends StatelessWidget {
); );
} }
login(AuthenticationViewModel model, BuildContext context) async { login(BuildContext context) async {
if (loginFormKey.currentState.validate()) { if (loginFormKey.currentState.validate()) {
loginFormKey.currentState.save(); loginFormKey.currentState.save();
await model.login(loginRequest); await authenticationViewModel.login(loginRequest);
if (model.state == ViewState.ErrorLocal) { if (authenticationViewModel.isError) {
Utils.showErrorToast(model.error); Utils.showErrorToast(authenticationViewModel.error);
} else { } else {
Navigator.push(context, Navigator.push(
context,
MaterialPageRoute(builder: (context) => DashboardScreen())); MaterialPageRoute(builder: (context) => DashboardScreen()));
} }
} }

@ -1,4 +1,5 @@
import 'package:barcode_scan/platform_wrapper.dart'; import 'package:barcode_scan/platform_wrapper.dart';
import 'package:driverapp/config/size_config.dart';
import 'package:driverapp/core/enum/viewstate.dart'; import 'package:driverapp/core/enum/viewstate.dart';
import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart'; import 'package:driverapp/core/model/scan_qr/scan_qr_request_model.dart';
import 'package:driverapp/core/viewModels/orders_view_model.dart'; import 'package:driverapp/core/viewModels/orders_view_model.dart';
@ -14,7 +15,7 @@ import 'package:driverapp/widgets/others/rounded_container.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:driverapp/config/size_config.dart';
import '../base/base_view.dart'; import '../base/base_view.dart';
class DashboardScreen extends StatefulWidget { class DashboardScreen extends StatefulWidget {
@ -465,8 +466,9 @@ class _DashboardScreenState extends State<DashboardScreen> {
child: ListView.builder( child: ListView.builder(
shrinkWrap: true, shrinkWrap: true,
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
itemCount: //model.orders == null ? 0 : model.orders.length, itemCount: model.orders == null
3, ? 0
: model.orders.length < 3 ? model.orders.length : 3,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return Padding( return Padding(
padding: EdgeInsets.symmetric(horizontal: 12.2), padding: EdgeInsets.symmetric(horizontal: 12.2),

File diff suppressed because one or more lines are too long

@ -1,17 +1,18 @@
import 'package:driverapp/pages/authentication/login_page.dart'; import 'package:driverapp/pages/authentication/login_page.dart';
import 'package:driverapp/pages/base/base_view.dart'; import 'package:driverapp/pages/dashboard/dashboard_screen.dart';
import 'package:driverapp/pages/landing/landing_page.dart'; import 'package:driverapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart';
import 'package:driverapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:driverapp/pages/dashboard/dashboard_screen.dart'; import 'package:provider/provider.dart';
import 'core/viewModels/authentication_view_model.dart'; import 'core/viewModels/authentication_view_model.dart';
class RootPage extends StatelessWidget { class RootPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Widget buildRoot(APP_STATUS status) { AuthenticationViewModel authenticationViewModel = Provider.of(context);
APP_STATUS status = authenticationViewModel.status;
Widget buildRoot() {
switch (status) { switch (status) {
case APP_STATUS.UNAUTHENTICATED: case APP_STATUS.UNAUTHENTICATED:
return LoginPage(); return LoginPage();
@ -19,16 +20,16 @@ class RootPage extends StatelessWidget {
case APP_STATUS.AUTHENTICATED: case APP_STATUS.AUTHENTICATED:
return DashboardScreen(); return DashboardScreen();
break; break;
case APP_STATUS.LOADING:
return Center(child: AppCircularProgressIndicator());
break;
} }
} }
return AnimatedSwitcher( return AnimatedSwitcher(
duration: Duration(microseconds: 350), duration: Duration(microseconds: 350),
child: BaseView<AuthenticationViewModel>( child: Scaffold(
builder: (_, model, widget) => AppScaffold( body: buildRoot(),
baseViewModel: model,
body: buildRoot((model.status)),
),
), ),
); );
} }

Loading…
Cancel
Save