Merge branch 'merge_auth_fixes_into_dev' into 'development'

Merge auth fixes into dev

See merge request Cloud_Solution/driver-app!61
logut
Elham 5 years ago
commit aa33f0cfe7

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

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

@ -1,22 +1,57 @@
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/service/authentication_service.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';
enum APP_STATUS { LOADING, UNAUTHENTICATED, AUTHENTICATED }
class AuthenticationViewModel extends BaseViewModel {
AuthenticationService _authenticationService = locator<AuthenticationService>();
class AuthenticationViewModel with ChangeNotifier {
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 {
if (state == ViewState.Busy || state == ViewState.BusyLocal) {
if (isLoading) {
return APP_STATUS.LOADING;
} else {
if ( user != null) {
if (isLogin) {
return APP_STATUS.AUTHENTICATED;
} else {
return APP_STATUS.UNAUTHENTICATED;
@ -25,16 +60,20 @@ class AuthenticationViewModel extends BaseViewModel {
}
login(LoginRequest loginRequest) async {
setState(ViewState.BusyLocal);
isLoading = true;
notifyListeners();
await _authenticationService.login(loginRequest);
if (_authenticationService.hasError) {
error = _authenticationService.error;
setState(ViewState.ErrorLocal);
isLoading = false;
isError = true;
notifyListeners();
} else {
sharedPref.setObject(
USER_PROFILE, _authenticationService.authenticatedUser);
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 'config/size_config.dart';
import 'core/viewModels/authentication_view_model.dart';
import 'core/viewModels/project_view_model.dart';
import 'locator.dart';
@ -25,7 +26,10 @@ class MyApp extends StatelessWidget {
providers: [
ChangeNotifierProvider<ProjectViewModel>(
create: (context) => ProjectViewModel(),
)
),
ChangeNotifierProvider<AuthenticationViewModel>(
create: (context) => AuthenticationViewModel(),
),
],
child: Consumer<ProjectViewModel>(
builder: (context, projectProvider, child) => MaterialApp(

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

File diff suppressed because it is too large Load Diff

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

Loading…
Cancel
Save