Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle network response in datamanager #11

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,7 @@

package com.mindorks.framework.mvp.data;


import android.content.Context;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.internal.$Gson$Types;
Expand All @@ -26,7 +24,6 @@
import com.mindorks.framework.mvp.data.db.model.Option;
import com.mindorks.framework.mvp.data.db.model.Question;
import com.mindorks.framework.mvp.data.db.model.User;
import com.mindorks.framework.mvp.data.network.ApiHeader;
import com.mindorks.framework.mvp.data.network.ApiHelper;
import com.mindorks.framework.mvp.data.network.model.LoginRequest;
import com.mindorks.framework.mvp.data.network.model.LoginResponse;
Expand All @@ -35,13 +32,10 @@
import com.mindorks.framework.mvp.di.ApplicationContext;
import com.mindorks.framework.mvp.utils.AppConstants;
import com.mindorks.framework.mvp.utils.CommonUtils;

import java.lang.reflect.Type;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Singleton;

import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.functions.Function;
Expand Down Expand Up @@ -71,11 +65,6 @@ public AppDataManager(@ApplicationContext Context context,
mApiHelper = apiHelper;
}

@Override
public ApiHeader getApiHeader() {
return mApiHelper.getApiHeader();
}

@Override
public String getAccessToken() {
return mPreferencesHelper.getAccessToken();
Expand All @@ -98,26 +87,69 @@ public Observable<List<User>> getAllUsers() {
}

@Override
public Observable<LoginResponse> doGoogleLoginApiCall(LoginRequest.GoogleLoginRequest
request) {
return mApiHelper.doGoogleLoginApiCall(request);
public Observable<Object> doGoogleLogin(LoginRequest.GoogleLoginRequest request) {
return mApiHelper.doGoogleLoginApiCall(request)
.map(new Function<LoginResponse, Object>() {
@Override
public Object apply(LoginResponse loginResponse) throws Exception {
updateUserInfo(
loginResponse.getAccessToken(),
loginResponse.getUserId(),
DataManager.LoggedInMode.LOGGED_IN_MODE_GOOGLE,
loginResponse.getUserName(),
loginResponse.getUserEmail(),
loginResponse.getGoogleProfilePicUrl());
return Observable.empty();
}
});
}

@Override
public Observable<LoginResponse> doFacebookLoginApiCall(LoginRequest.FacebookLoginRequest
request) {
return mApiHelper.doFacebookLoginApiCall(request);
public Observable<Object> doFacebookLogin(LoginRequest.FacebookLoginRequest request) {
return mApiHelper.doFacebookLoginApiCall(request)
.map(new Function<LoginResponse, Object>() {
@Override
public Object apply(LoginResponse loginResponse) throws Exception {
updateUserInfo(
loginResponse.getAccessToken(),
loginResponse.getUserId(),
DataManager.LoggedInMode.LOGGED_IN_MODE_FB,
loginResponse.getUserName(),
loginResponse.getUserEmail(),
loginResponse.getGoogleProfilePicUrl());
return Observable.empty();
}
});
}

@Override
public Observable<LoginResponse> doServerLoginApiCall(LoginRequest.ServerLoginRequest
request) {
return mApiHelper.doServerLoginApiCall(request);
public Observable<Object> doServerLogin(LoginRequest.ServerLoginRequest request) {
return mApiHelper.doServerLoginApiCall(request)
.map(new Function<LoginResponse, Object>() {
@Override
public Object apply(LoginResponse loginResponse) throws Exception {
updateUserInfo(
getAccessToken(),
loginResponse.getUserId(),
DataManager.LoggedInMode.LOGGED_IN_MODE_SERVER,
loginResponse.getUserName(),
loginResponse.getUserEmail(),
loginResponse.getGoogleProfilePicUrl());
return Observable.empty();
}
});
}

@Override
public Observable<LogoutResponse> doLogoutApiCall() {
return mApiHelper.doLogoutApiCall();
public Observable<Object> doLogout() {
return mApiHelper.doLogoutApiCall()
.map(new Function<LogoutResponse, Object>() {
@Override
public Object apply(LogoutResponse logoutResponse) throws Exception {
setUserAsLoggedOut();
return Observable.empty();
}
});
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,16 @@

package com.mindorks.framework.mvp.data;


import com.mindorks.framework.mvp.data.db.DbHelper;
import com.mindorks.framework.mvp.data.network.ApiHelper;
import com.mindorks.framework.mvp.data.network.LoginApiHelper;
import com.mindorks.framework.mvp.data.prefs.PreferencesHelper;

import io.reactivex.Observable;

/**
* Created by janisharali on 27/01/17.
*/

public interface DataManager extends DbHelper, PreferencesHelper, ApiHelper {
public interface DataManager extends DbHelper, PreferencesHelper, LoginApiHelper {

void updateApiHeader(Long userId, String accessToken);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.mindorks.framework.mvp.data.network;

import com.mindorks.framework.mvp.data.network.model.LoginRequest;
import io.reactivex.Observable;

/**
* Created on 20/02/17.
*/

public interface LoginApiHelper {

Observable<Object> doGoogleLogin(LoginRequest.GoogleLoginRequest request);

Observable<Object> doFacebookLogin(LoginRequest.FacebookLoginRequest request);

Observable<Object> doServerLogin(LoginRequest.ServerLoginRequest request);

Observable<Object> doLogout();

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import com.mindorks.framework.mvp.R;
import com.mindorks.framework.mvp.data.DataManager;
import com.mindorks.framework.mvp.data.network.model.LoginRequest;
import com.mindorks.framework.mvp.data.network.model.LoginResponse;
import com.mindorks.framework.mvp.ui.base.BasePresenter;
import com.mindorks.framework.mvp.utils.CommonUtils;

Expand Down Expand Up @@ -62,36 +61,24 @@ public void onServerLoginClick(String email, String password) {
getMvpView().showLoading();

getCompositeDisposable().add(getDataManager()
.doServerLoginApiCall(new LoginRequest.ServerLoginRequest(email, password))
.doServerLogin(new LoginRequest.ServerLoginRequest(email, password))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<LoginResponse>() {
.subscribe(new Consumer<Object>() {
@Override
public void accept(LoginResponse response) throws Exception {
getDataManager().updateUserInfo(
response.getAccessToken(),
response.getUserId(),
DataManager.LoggedInMode.LOGGED_IN_MODE_SERVER,
response.getUserName(),
response.getUserEmail(),
response.getGoogleProfilePicUrl());

if(!isViewAttached()) {
public void accept(Object o) throws Exception {
if(!isViewAttached()){
return;
}

getMvpView().hideLoading();
getMvpView().openMainActivity();

}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {

if(!isViewAttached()) {
if(!isViewAttached()){
return;
}

getMvpView().hideLoading();

// handle the login error here
Expand All @@ -101,6 +88,7 @@ public void accept(Throwable throwable) throws Exception {
}
}
}));

}

@Override
Expand All @@ -109,35 +97,24 @@ public void onGoogleLoginClick() {
getMvpView().showLoading();

getCompositeDisposable().add(getDataManager()
.doGoogleLoginApiCall(new LoginRequest.GoogleLoginRequest("test1", "test1"))
.doGoogleLogin(new LoginRequest.GoogleLoginRequest("test1", "test1"))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<LoginResponse>() {
.subscribe(new Consumer<Object>() {
@Override
public void accept(LoginResponse response) throws Exception {
getDataManager().updateUserInfo(
response.getAccessToken(),
response.getUserId(),
DataManager.LoggedInMode.LOGGED_IN_MODE_GOOGLE,
response.getUserName(),
response.getUserEmail(),
response.getGoogleProfilePicUrl());

if(!isViewAttached()) {
public void accept(Object aVoid) throws Exception {
if(!isViewAttached()){
return;
}

getMvpView().hideLoading();
getMvpView().openMainActivity();
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {

if(!isViewAttached()) {
if(!isViewAttached()){
return;
}

getMvpView().hideLoading();

// handle the login error here
Expand All @@ -155,35 +132,24 @@ public void onFacebookLoginClick() {
getMvpView().showLoading();

getCompositeDisposable().add(getDataManager()
.doFacebookLoginApiCall(new LoginRequest.FacebookLoginRequest("test3", "test4"))
.doFacebookLogin(new LoginRequest.FacebookLoginRequest("test3", "test4"))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<LoginResponse>() {
.subscribe(new Consumer<Object>() {
@Override
public void accept(LoginResponse response) throws Exception {
getDataManager().updateUserInfo(
response.getAccessToken(),
response.getUserId(),
DataManager.LoggedInMode.LOGGED_IN_MODE_FB,
response.getUserName(),
response.getUserEmail(),
response.getGoogleProfilePicUrl());

if(!isViewAttached()) {
public void accept(Object aVoid) throws Exception {
if(!isViewAttached()){
return;
}

getMvpView().hideLoading();
getMvpView().openMainActivity();
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {

if(!isViewAttached()) {
if(!isViewAttached()){
return;
}

getMvpView().hideLoading();

// handle the login error here
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import com.androidnetworking.error.ANError;
import com.mindorks.framework.mvp.data.DataManager;
import com.mindorks.framework.mvp.data.db.model.Question;
import com.mindorks.framework.mvp.data.network.model.LogoutResponse;
import com.mindorks.framework.mvp.ui.base.BasePresenter;

import java.util.List;
Expand Down Expand Up @@ -54,36 +53,36 @@ public void onDrawerOptionAboutClick() {
public void onDrawerOptionLogoutClick() {
getMvpView().showLoading();

getCompositeDisposable().add(getDataManager().doLogoutApiCall()
getCompositeDisposable().add(getDataManager().doLogout()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<LogoutResponse>() {
@Override
public void accept(LogoutResponse response) throws Exception {
if(!isViewAttached()) {
return;
}

getDataManager().setUserAsLoggedOut();
getMvpView().hideLoading();
getMvpView().openLoginActivity();
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if(!isViewAttached()) {
return;
}

getMvpView().hideLoading();

// handle the login error here
if (throwable instanceof ANError) {
ANError anError = (ANError) throwable;
handleApiError(anError);
}
}
}));
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object aVoid) throws Exception {
if(!isViewAttached()) {
return;
}

getMvpView().hideLoading();
getMvpView().openLoginActivity();
}
},
new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if(!isViewAttached()) {
return;
}

getMvpView().hideLoading();

// handle the login error here
if (throwable instanceof ANError) {
ANError anError = (ANError) throwable;
handleApiError(anError);
}
}
}));

}

Expand Down