Skip to content

Commit

Permalink
Merge remote-tracking branch 'smarak/development' into development
Browse files Browse the repository at this point in the history
# Conflicts:
#	gogrocy/lib/core/services/api.dart
#	gogrocy/lib/service_locator.dart
#	gogrocy/lib/ui/views/view_carousel.dart
  • Loading branch information
Chinmay-KB committed Apr 26, 2020
2 parents 5441c37 + c9cbce2 commit e5e7eff
Show file tree
Hide file tree
Showing 13 changed files with 269 additions and 109 deletions.
6 changes: 6 additions & 0 deletions gogrocy/lib/core/models/sign_up_arguments.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class SignUpArguments{
String mobile;
String countryCode;

SignUpArguments(this.mobile, this.countryCode);
}
48 changes: 34 additions & 14 deletions gogrocy/lib/core/services/api.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,23 @@ class Apis {
json.decode((await http.post(userStatus, body: body)).body));
}

Future<bool> addToCart({
@required String quantity,
@required String productId,
}) async {
Map<String, String> body = {"quantity": quantity, "product_id": productId};
String jwt = await _sharedPrefsService.getJWT();
var result = json.decode((await http.post(
editCart,
body: body,
headers: {
'Authorization': 'Bearer $jwt',
},
))
.body);
return result["success"];
}

Future<bool> addAddressApi(
{@required String name,
@required String locality,
Expand All @@ -56,6 +73,8 @@ class Apis {
"state": "Odisha",
"country": "India",
};
print(body);
print("ADDDRESSSSSS " + jwt);
http.Response result = await http.post(addAddress,
headers: {HttpHeaders.authorizationHeader: "Bearer $jwt"}, body: body);
print(result.body);
Expand Down Expand Up @@ -91,6 +110,7 @@ class Apis {
mobile: mobile, countryCode: countryCode, password: password);
print("login via sign up success");
if (user.jwt != null) {
print("LOGIN " + user.jwt);
await verifyUserApi(user.jwt);
await addAddressApi(
name: name,
Expand Down Expand Up @@ -132,18 +152,17 @@ class Apis {

Future<CartEdit> editCartList(
{@required String product_id, @required String quantity}) async {
Map<String,String>body={
"product_id":product_id,
"quantity":quantity
};
String jwt=await _sharedPrefsService.getJWT();
Map<String, String> body = {"product_id": product_id, "quantity": quantity};
String jwt = await _sharedPrefsService.getJWT();
var client = new http.Client();
bool connectionState = await checkStatus();
if (connectionState) //TODO: Add a proper else return
{
var response = await client.post(editCart, headers: {
'Authorization': 'Bearer $jwt',
},body: body);
var response = await client.post(editCart,
headers: {
'Authorization': 'Bearer $jwt',
},
body: body);
return CartEdit.fromJson(json.decode(response.body));
} else
(print("Network failure"));
Expand Down Expand Up @@ -185,12 +204,12 @@ class Apis {
}
}

Future<List<Address>> getAddresses() async{
Future<List<Address>> getAddresses() async {
var client = new http.Client();
bool connectionState = await checkStatus();
String jwt=await _sharedPrefsService.getJWT();
String jwt = await _sharedPrefsService.getJWT();
if (connectionState) //TODO: Add a proper else return
{
{
var address = List<Address>();
var response = await client.post(getAddress, headers: {
'Content-Type': 'application/json',
Expand Down Expand Up @@ -224,11 +243,10 @@ class Apis {




Future<cart_list> getCartList() async {
var client = new http.Client();
bool connectionState = await checkStatus();
String jwt=await _sharedPrefsService.getJWT();
String jwt = await _sharedPrefsService.getJWT();
if (connectionState) //TODO: Add a proper else return
{
var response = await client.post(cartList, headers: {
Expand Down Expand Up @@ -258,8 +276,10 @@ class Apis {
Future<bool> verifyUserApi(String jwt) async {
http.Response result = await http.post(verifyUser,
headers: {HttpHeaders.authorizationHeader: "Bearer $jwt"});
if ((json.decode(result.body))["success"])
if ((json.decode(result.body))["success"]) {
print("VERIFIED USER");
return true;
}
else
return false;
}
Expand Down
18 changes: 12 additions & 6 deletions gogrocy/lib/core/services/authentication_service.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/cupertino.dart';
import 'package:gogrocy/core/models/sign_up_arguments.dart';
import 'package:gogrocy/core/services/navigation_service.dart';
import 'package:gogrocy/core/services/shared_prefs.dart';
import 'package:gogrocy/service_locator.dart';

Expand All @@ -8,12 +10,15 @@ class AuthenticationService {
String verificationId;

final SharedPrefsService _sharedPrefsService = locator<SharedPrefsService>();
final NavigationService _navigationService = locator<NavigationService>();

Future verifyPhoneNumber(BuildContext context, String phoneNumber) async {
Future verifyPhoneNumber(BuildContext context, String phoneNumber, String countryCode) async {
final PhoneVerificationCompleted verificationCompleted =
(AuthCredential credential) {
(AuthCredential credential) async {
print('Verification Complete');
signInWithNumber(context, credential);
await signInWithNumber(context, credential);
print("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
_navigationService.navigateTo('awesome', arguments: SignUpArguments(phoneNumber, countryCode));
};

final PhoneVerificationFailed verificationFailed =
Expand All @@ -34,8 +39,8 @@ class AuthenticationService {

try {
await firebaseInstance.verifyPhoneNumber(
phoneNumber: phoneNumber,
timeout: Duration(seconds: 60),
phoneNumber: countryCode + " " + phoneNumber,
timeout: Duration(seconds: 10),
verificationCompleted: verificationCompleted,
verificationFailed: verificationFailed,
codeSent: phoneCodeSent,
Expand All @@ -49,7 +54,7 @@ class AuthenticationService {
}
}

signInWithNumber(BuildContext context, AuthCredential credential) async {
Future signInWithNumber(BuildContext context, AuthCredential credential) async {
try {
FirebaseUser user =
(await firebaseInstance.signInWithCredential(credential)).user;
Expand All @@ -75,6 +80,7 @@ class AuthenticationService {

Future<bool> isUserLoggedIn() async {
var loggedIn = await _sharedPrefsService.hasUser();
print(loggedIn);
if(loggedIn){
return true;
}else{
Expand Down
4 changes: 3 additions & 1 deletion gogrocy/lib/core/services/bottom_appbar_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@ import 'package:flutter/material.dart';
class BottomNavBarProvider with ChangeNotifier{
int _currentIndex=1;

PageController controller = PageController(initialPage: 1,/*keepPage: true*/);

get currentIndex=> _currentIndex;

set currentIndex(int index){
print("Changed index to $index");
_currentIndex=index;
controller.animateToPage(currentIndex, duration: Duration(milliseconds: 300), curve: Curves.easeOut);
notifyListeners();
}

}
6 changes: 3 additions & 3 deletions gogrocy/lib/core/services/shared_prefs.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@ class SharedPrefsService {
}

Future<bool> hasUser() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getBool("loggedIn")??false;
}
setCartPrice(String s) async{
final SharedPreferences prefs = await SharedPreferences.getInstance();
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString("cart", s);
}

Future<String> getCartPrice() async{
final SharedPreferences prefs = await SharedPreferences.getInstance();
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString('cart');
}

Expand Down
15 changes: 5 additions & 10 deletions gogrocy/lib/core/viewModels/login_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:gogrocy/core/enums/viewstate.dart';
import 'package:gogrocy/core/models/sign_up_arguments.dart';
import 'package:gogrocy/core/models/user.dart';
import 'package:gogrocy/core/services/api.dart';
import 'package:gogrocy/core/services/authentication_service.dart';
Expand Down Expand Up @@ -42,17 +43,14 @@ class LoginModel extends BaseModel {
var finalNumber = countryCode + " " + phoneNumber;

var result =
await authenticationService.verifyPhoneNumber(context, finalNumber);
await authenticationService.verifyPhoneNumber(context, phoneNumber, countryCode);

setState(ViewState.Idle);

if (result is bool) {
if (result) {
print('login success with phone number');
navigationService.navigateTo('awesome', arguments: {
"phoneNumber": phoneNumber,
"countryCode": countryCode
});
navigationService.navigateTo('awesome', arguments: SignUpArguments(phoneNumber, countryCode));
} else {
print('login unsuccessful with phone number');
}
Expand All @@ -76,10 +74,7 @@ class LoginModel extends BaseModel {
if (result is bool) {
if (result) {
print('login success with otp');
navigationService.navigateTo('awesome', arguments: {
"phoneNumber": phoneNumber,
"countryCode": countryCode
});
navigationService.navigateTo('awesome', arguments: SignUpArguments(phoneNumber, countryCode));
} else {
print('login unsuccessful with otp');
Scaffold.of(context).showSnackBar(
Expand Down Expand Up @@ -111,7 +106,7 @@ class LoginModel extends BaseModel {
print('Login With Password successful');
FireStoreService.addUser(
phoneNumber: phoneNumber, countryCode: countryCode);
_sharedPrefsService.setLoggedIn(true);
print(_sharedPrefsService.setLoggedIn(true));
navigationService.navigateTo('home');
} else {
print(user.message);
Expand Down
13 changes: 13 additions & 0 deletions gogrocy/lib/core/viewModels/product_detail_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import 'package:gogrocy/core/services/api.dart';
import 'package:gogrocy/core/viewModels/base_model.dart';
import 'package:gogrocy/service_locator.dart';

class ProductDetailModel extends BaseModel {
final Apis _apiService = locator<Apis>();

String message;

Future<bool> addToCart(String productId) async {
return await _apiService.addToCart(quantity: "1", productId: productId);
}
}
8 changes: 5 additions & 3 deletions gogrocy/lib/service_locator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:gogrocy/core/services/navigation_service.dart';
import 'package:gogrocy/core/services/shared_prefs.dart';
import 'package:gogrocy/core/viewModels/cart_view_model.dart';
import 'package:gogrocy/core/viewModels/login_model.dart';
import 'package:gogrocy/core/viewModels/product_detail_model.dart';
import 'package:gogrocy/core/viewModels/orderLis_model.dart';
import 'package:gogrocy/core/viewModels/startup_view_model.dart';
import 'package:gogrocy/ui/views/signup_view.dart';
Expand All @@ -15,7 +16,7 @@ import 'package:gogrocy/core/viewModels/allProducts_model.dart';
GetIt locator = GetIt.instance;

void setupLocator() {
locator.registerFactory<SharedPrefsService>(()=>SharedPrefsService());
locator.registerFactory<SharedPrefsService>(() => SharedPrefsService());
locator.registerFactory<StartupViewModel>(() => StartupViewModel());
locator.registerFactory<NavigationService>(() => NavigationService());
locator.registerFactory<AuthenticationService>(() => AuthenticationService());
Expand All @@ -24,6 +25,7 @@ void setupLocator() {
locator.registerLazySingleton(()=>Apis());
locator.registerFactory(()=>AllProductsModel());
locator.registerFactory(()=>OrderViewModel());
locator.registerFactory(()=>CartViewModel());
locator.registerFactory(()=>BottomNavBarProvider());
locator.registerFactory<ProductDetailModel>(() => ProductDetailModel());
locator.registerFactory(() => CartViewModel());
locator.registerFactory(() => BottomNavBarProvider());
}
14 changes: 11 additions & 3 deletions gogrocy/lib/ui/router.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import 'package:flutter/material.dart';
import 'package:gogrocy/core/models/product.dart';
import 'package:gogrocy/core/models/sign_up_arguments.dart';
import 'package:gogrocy/ui/views/product_detail_view.dart';
import 'package:gogrocy/ui/views/signup_view.dart';
import 'package:gogrocy/ui/views/home/home.dart';
import 'package:gogrocy/ui/views/landing_page.dart';
import 'package:gogrocy/ui/views/login_view.dart';

Expand All @@ -24,11 +26,14 @@ Route<dynamic> generateRoute(RouteSettings settings) {
),
);
case 'awesome':
Map<String,String> args = settings.arguments;
SignUpArguments args = settings.arguments;
return PageRouteBuilder(
pageBuilder: (BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation) {
return SignUpView(mobile: args["phoneNumber"], countryCode: args["countryCode"],);
return SignUpView(
mobile: args.mobile,
countryCode: args.countryCode,
);
},
transitionsBuilder: (BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation, Widget child) =>
Expand All @@ -37,6 +42,9 @@ Route<dynamic> generateRoute(RouteSettings settings) {
child: child,
),
);
case 'product':
Product product = settings.arguments;
return MaterialPageRoute(builder: (context) => ProductDetailView(product));
default:
return MaterialPageRoute(
builder: (context) => Scaffold(
Expand Down
13 changes: 12 additions & 1 deletion gogrocy/lib/ui/views/base_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,23 @@ class BaseView<T extends BaseModel> extends StatefulWidget {
class _BaseViewState<T extends BaseModel> extends State<BaseView<T>> {
T model = locator<T>();

bool isDisposed = false;

@override
void initState() {
super.initState();
if(!isDisposed)
if (widget.onModelReady != null) {
widget.onModelReady(model);
}
super.initState();
}


@override
void dispose() {
model.dispose();
isDisposed = true;
super.dispose();
}

@override
Expand Down
Loading

0 comments on commit e5e7eff

Please sign in to comment.