Commit f8e27ef5 authored by Isaac Pereira's avatar Isaac Pereira

Implementação de login simples usando CurioJava

parent 8b7d1c44
apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'me.tatarka.retrolambda'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
......@@ -19,6 +20,10 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
......@@ -70,6 +75,7 @@ dependencies {
testAnnotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
//
// UI Testing
androidTestCompile "com.android.support:support-annotations:$rootProject.supportLibraryVersion"
androidTestCompile "com.android.support.test.espresso:espresso-core:$rootProject.espressoVersion"
androidTestCompile "com.android.support.test.espresso:espresso-intents:$rootProject.espressoVersion"
androidTestCompile "org.mockito:mockito-core:$rootProject.mockitoVersion"
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.evologica.mvp">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name=".MvpApp"
android:allowBackup="true"
......
......@@ -4,18 +4,19 @@ import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.design.widget.Snackbar;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import br.com.evologica.mvp.MvpApp;
import br.com.evologica.mvp.R;
import br.com.evologica.mvp.di.component.ActivityComponent;
import br.com.evologica.mvp.di.component.DaggerActivityComponent;
import br.com.evologica.mvp.di.module.ActivityModule;
import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;
/**
* Created by marcussales on 01/03/2017.
*/
public class BaseActivity extends AppCompatActivity implements MvpView, BaseFragment.Callback {
private ActivityComponent mActivityComponent;
......@@ -60,11 +61,36 @@ public class BaseActivity extends AppCompatActivity implements MvpView, BaseFrag
@Override
public void onError(@StringRes int resId) {
onError(getString(resId));
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onError(String message) {
if (message != null) {
showSnackBar(message);
} else {
showSnackBar(getString(R.string.some_error));
}
}
private void showSnackBar(String message) {
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content),
message, Snackbar.LENGTH_SHORT);
View sbView = snackbar.getView();
TextView textView = (TextView) sbView
.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(ContextCompat.getColor(this, R.color.white));
snackbar.show();
}
}
......@@ -29,7 +29,12 @@ public class BasePresenter<V extends MvpView> implements MvpPresenter<V> {
@Override
public void onDetach() {
mCompositeDisposable.dispose();
mMvpView = null;
}
public boolean isViewAttached() {
return mMvpView != null;
}
public DataManager getDataManager() {
......
......@@ -56,4 +56,12 @@ public class LoginActivity extends BaseActivity implements LoginMvpView {
startActivity(intent);
finish();
}
@Override
protected void onDestroy() {
mPresenter.onDetach();
super.onDestroy();
}
}
......@@ -4,7 +4,9 @@ import javax.inject.Inject;
import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.ui.base.BasePresenter;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
/**
* Created by marcussales on 01/03/2017.
......@@ -20,8 +22,21 @@ public class LoginPresenter<V extends LoginMvpView> extends BasePresenter<V> imp
}
@Override
public void onLogin(String email, String password){
getDataManager().setLoggedIn();
getMvpView().openMainActivity();
public void onLogin(String email, String password) {
getCompositeDisposable().add(
getDataManager().getService().openSession(email, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
session -> {
getDataManager().setLoggedIn();
getMvpView().openMainActivity();
},
err -> {
getDataManager().setLoggedOut();
getMvpView().onError(err.getMessage());
}
)
);
}
}
......@@ -51,4 +51,11 @@ public class MainActivity extends BaseActivity implements MainMvpView {
startActivity(intent);
finish();
}
@Override
protected void onDestroy() {
mPresenter.onDetach();
super.onDestroy();
}
}
......@@ -2,9 +2,14 @@ package br.com.evologica.mvp.ui.main;
import javax.inject.Inject;
import br.com.evologica.curio.CurioRequest;
import br.com.evologica.curio.UseCase;
import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.ui.base.BasePresenter;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
public class MainPresenter<V extends MainMvpView> extends BasePresenter<V> implements MainMvpPresenter<V> {
......@@ -13,9 +18,57 @@ public class MainPresenter<V extends MainMvpView> extends BasePresenter<V> imple
super(dataManager, compositeDisposable);
}
@Override
public void onAttach(V mvpView) {
super.onAttach(mvpView);
getCompositeDisposable().add(
getDataManager().getService().openUseCase("3034", "ConsultarEventos")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
uc -> {
System.out.println("UC Opened");
CurioRequest request = uc.newRequest("RM_BUSCAR_EVENTOS");
request.getMessage().getRootField().addField("Evento");
request.post()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
req -> {
System.out.println("SUCCESS: " + req.getResponse().getRootField().getXMLString());
},
err -> {
System.out.println(err.getMessage());
}
);
},
err -> {
getDataManager().setLoggedOut();
getMvpView().openLoginActivity();
System.out.println(err.getMessage());
}
)
);
}
@Override
public void onLogout() {
getDataManager().setLoggedOut();
getMvpView().openLoginActivity();
getCompositeDisposable().add(
getDataManager().getService().closeSession()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
result -> {
getDataManager().setLoggedOut();
getMvpView().openLoginActivity();
},
err -> {
getDataManager().setLoggedOut();
getMvpView().openLoginActivity();
System.out.println(err.toString());
}
)
);
}
}
......@@ -12,10 +12,6 @@ import br.com.evologica.mvp.ui.login.LoginActivity;
import br.com.evologica.mvp.ui.main.MainActivity;
import butterknife.ButterKnife;
/**
* Created by marcussales on 01/03/2017.
*/
public class SplashActivity extends BaseActivity implements SplashMvpView {
@Inject
......@@ -25,11 +21,8 @@ public class SplashActivity extends BaseActivity implements SplashMvpView {
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
getActivityComponent().inject(this);
ButterKnife.bind(this);
mPresenter.onAttach(SplashActivity.this);
}
......@@ -46,4 +39,11 @@ public class SplashActivity extends BaseActivity implements SplashMvpView {
startActivity(intent);
finish();
}
@Override
protected void onDestroy() {
mPresenter.onDetach();
super.onDestroy();
}
}
......@@ -5,7 +5,8 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.0'
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
......@@ -34,7 +35,7 @@ ext {
compileSdkVersion = 25
buildToolsVersion = '25.0.2'
curioJavaVersion = '0.4.0'
curioJavaVersion = '0.4.2'
// App dependencies
supportLibraryVersion = '25.2.0'
......
#Mon Dec 28 10:00:20 PST 2015
#Fri Mar 03 00:48:29 BRT 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment