Commit 9126897d authored by Marcus Sales's avatar Marcus Sales

Todas as dependências removidas

parent 14c6540a
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'me.tatarka.retrolambda' apply plugin: 'me.tatarka.retrolambda'
android { android {
...@@ -36,55 +35,13 @@ dependencies { ...@@ -36,55 +35,13 @@ dependencies {
compile "com.android.support:support-vector-drawable:$rootProject.supportLibraryVersion" compile "com.android.support:support-vector-drawable:$rootProject.supportLibraryVersion"
compile "com.android.support:animated-vector-drawable:$rootProject.supportLibraryVersion" compile "com.android.support:animated-vector-drawable:$rootProject.supportLibraryVersion"
compile "br.com.evologica:curio-java:$rootProject.curioJavaVersion"
// font
compile "uk.co.chrisjenx:calligraphy:$rootProject.calligraphyVersion"
// // network
// compile "com.amitshekhar.android:rx2-android-networking:$rootProject.rx2AndroidNetworking"
// compile "com.google.code.gson:gson:$rootProject.gsonVersion"
//
// // database
// compile "org.greenrobot:greendao:$rootProject.greenDaoVersion"
// debugCompile "com.amitshekhar.android:debug-db:$rootProject.debugDBVersion"
//
// dependency injection
compile "com.google.dagger:dagger:$rootProject.dagger2Version"
annotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
provided 'javax.annotation:jsr250-api:1.0'
compile 'javax.inject:javax.inject:1'
//
// // reactive
compile "io.reactivex.rxjava2:rxjava:$rootProject.rxjava2Version"
compile "io.reactivex.rxjava2:rxandroid:$rootProject.rxandroidVersion"
//
// // code generator for view
compile "com.jakewharton:butterknife:$rootProject.butterKnifeVersion"
annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.butterKnifeVersion"
//
// // swipe view
// compile "com.mindorks:placeholderview:$rootProject.placeholderviewVersion"
//
// // logger
// compile "com.jakewharton.timber:timber:$rootProject.timberVersion"
//
// dependencies for local unit tests // dependencies for local unit tests
testCompile "junit:junit:$rootProject.ext.junitVersion" testCompile "junit:junit:$rootProject.ext.junitVersion"
testCompile "org.mockito:mockito-core:$rootProject.mockitoVersion" testCompile "org.mockito:mockito-core:$rootProject.mockitoVersion"
testAnnotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
// //
// UI Testing // UI Testing
androidTestCompile "com.android.support:support-annotations:$rootProject.supportLibraryVersion" 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-core:$rootProject.espressoVersion"
androidTestCompile "com.android.support.test.espresso:espresso-intents:$rootProject.espressoVersion" androidTestCompile "com.android.support.test.espresso:espresso-intents:$rootProject.espressoVersion"
androidTestCompile "org.mockito:mockito-core:$rootProject.mockitoVersion" androidTestCompile "org.mockito:mockito-core:$rootProject.mockitoVersion"
androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
/* androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
testCompile 'junit:junit:4.12'*/
} }
...@@ -2,13 +2,8 @@ package br.com.evologica.mvp; ...@@ -2,13 +2,8 @@ package br.com.evologica.mvp;
import android.app.Application; import android.app.Application;
import javax.inject.Inject; import br.com.evologica.mvp.data.AppDataManager;
import br.com.evologica.mvp.data.DataManager; import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.di.component.ApplicationComponent;
import br.com.evologica.mvp.di.component.DaggerApplicationComponent;
import br.com.evologica.mvp.di.module.ApplicationModule;
import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
/** /**
* Created by marcussales on 01/03/2017. * Created by marcussales on 01/03/2017.
...@@ -16,29 +11,17 @@ import uk.co.chrisjenx.calligraphy.CalligraphyConfig; ...@@ -16,29 +11,17 @@ import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
public class MvpApp extends Application { public class MvpApp extends Application {
@Inject private DataManager mDataManager;
DataManager mDataManager;
@Inject
CalligraphyConfig mCalligraphyConfig;
private ApplicationComponent mApplicationComponent;
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
//AppDataManager.initInstance(this); mDataManager = new AppDataManager(this);
mApplicationComponent = DaggerApplicationComponent.builder()
.applicationModule(new ApplicationModule(this)).build();
mApplicationComponent.inject(this);
CalligraphyConfig.initDefault(mCalligraphyConfig);
} }
public ApplicationComponent getComponent() { public DataManager getDataManager(){
return mApplicationComponent; return mDataManager;
} }
} }
...@@ -2,39 +2,24 @@ package br.com.evologica.mvp.data; ...@@ -2,39 +2,24 @@ package br.com.evologica.mvp.data;
import android.content.Context; import android.content.Context;
import javax.inject.Inject; import br.com.evologica.mvp.data.prefs.AppPreferencesHelper;
import javax.inject.Singleton;
import br.com.evologica.curio.Service;
import br.com.evologica.mvp.data.prefs.PreferencesHelper; import br.com.evologica.mvp.data.prefs.PreferencesHelper;
import br.com.evologica.mvp.di.ApplicationContext; import br.com.evologica.mvp.utils.AppConstants;
/** /**
* Created by marcussales on 01/03/2017. * Created by marcussales on 01/03/2017.
*/ */
@Singleton
public class AppDataManager implements DataManager { public class AppDataManager implements DataManager {
private static final String TAG = "AppDataManager"; private static final String TAG = "AppDataManager";
private final Context mContext; private final Context mContext;
private final PreferencesHelper mPreferencesHelper; private PreferencesHelper mPreferencesHelper;
private final Service mService;
@Inject public AppDataManager(Context ctx) {
public AppDataManager(@ApplicationContext Context ctx,
PreferencesHelper preferencesHelper,
Service service) {
mContext = ctx; mContext = ctx;
mPreferencesHelper = preferencesHelper; mPreferencesHelper = new AppPreferencesHelper(ctx, AppConstants.PREF_NAME);
mService = service;
}
@Override
public Service getService() {
return mService;
} }
@Override @Override
......
package br.com.evologica.mvp.data; package br.com.evologica.mvp.data;
import br.com.evologica.curio.Service;
import br.com.evologica.mvp.data.prefs.PreferencesHelper; import br.com.evologica.mvp.data.prefs.PreferencesHelper;
/** /**
...@@ -9,6 +8,4 @@ import br.com.evologica.mvp.data.prefs.PreferencesHelper; ...@@ -9,6 +8,4 @@ import br.com.evologica.mvp.data.prefs.PreferencesHelper;
public interface DataManager extends PreferencesHelper { public interface DataManager extends PreferencesHelper {
Service getService();
} }
...@@ -3,26 +3,17 @@ package br.com.evologica.mvp.data.prefs; ...@@ -3,26 +3,17 @@ package br.com.evologica.mvp.data.prefs;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import javax.inject.Inject;
import javax.inject.Singleton;
import br.com.evologica.mvp.di.ApplicationContext;
import br.com.evologica.mvp.di.PreferenceInfo;
/** /**
* Created by marcussales on 01/03/2017. * Created by marcussales on 01/03/2017.
*/ */
@Singleton
public class AppPreferencesHelper implements PreferencesHelper { public class AppPreferencesHelper implements PreferencesHelper {
private static final String PREF_KEY_USER_LOGGED_IN = "PREF_KEY_USER_LOGGED_IN"; private static final String PREF_KEY_USER_LOGGED_IN = "PREF_KEY_USER_LOGGED_IN";
private final SharedPreferences mPrefs; private final SharedPreferences mPrefs;
@Inject public AppPreferencesHelper(Context context, String prefFileName) {
public AppPreferencesHelper(@ApplicationContext Context context,
@PreferenceInfo String prefFileName) {
mPrefs = context.getSharedPreferences(prefFileName, Context.MODE_PRIVATE); mPrefs = context.getSharedPreferences(prefFileName, Context.MODE_PRIVATE);
} }
......
package br.com.evologica.mvp.di;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.inject.Qualifier;
/**
* Created by marcussales on 02/03/2017.
*/
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface ActivityContext {
}
package br.com.evologica.mvp.di;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.inject.Qualifier;
/**
* Created by marcussales on 02/03/2017.
*/
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiInfo {
}
package br.com.evologica.mvp.di;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.inject.Qualifier;
/**
* Created by marcussales on 02/03/2017.
*/
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface ApplicationContext {
}
package br.com.evologica.mvp.di;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.inject.Qualifier;
/**
* Created by marcussales on 02/03/2017.
*/
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface DatabaseInfo {
}
package br.com.evologica.mvp.di;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.inject.Scope;
/**
* Created by marcussales on 02/03/2017.
*/
@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface PerActivity {
}
package br.com.evologica.mvp.di;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.inject.Qualifier;
/**
* Created by marcussales on 02/03/2017.
*/
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface PreferenceInfo {
}
package br.com.evologica.mvp.di.component;
import br.com.evologica.mvp.di.PerActivity;
import br.com.evologica.mvp.di.module.ActivityModule;
import br.com.evologica.mvp.ui.login.LoginActivity;
import br.com.evologica.mvp.ui.main.MainActivity;
import br.com.evologica.mvp.ui.splash.SplashActivity;
import dagger.Component;
/**
* Created by marcussales on 02/03/2017.
*/
@PerActivity
@Component(dependencies = ApplicationComponent.class,modules = ActivityModule.class)
public interface ActivityComponent {
void inject(MainActivity activity);
void inject(LoginActivity activity);
void inject(SplashActivity activity);
}
package br.com.evologica.mvp.di.component;
import android.app.Application;
import android.content.Context;
import javax.inject.Singleton;
import br.com.evologica.mvp.MvpApp;
import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.di.ApplicationContext;
import br.com.evologica.mvp.di.module.ApplicationModule;
import dagger.Component;
/**
* Created by marcussales on 02/03/2017.
*/
@Singleton
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
void inject(MvpApp app);
@ApplicationContext
Context context();
Application application();
DataManager getDataManager();
}
package br.com.evologica.mvp.di.module;
import android.app.Activity;
import android.content.Context;
import br.com.evologica.mvp.di.ActivityContext;
import br.com.evologica.mvp.di.PerActivity;
import br.com.evologica.mvp.ui.login.LoginMvpPresenter;
import br.com.evologica.mvp.ui.login.LoginMvpView;
import br.com.evologica.mvp.ui.login.LoginPresenter;
import br.com.evologica.mvp.ui.main.MainMvpPresenter;
import br.com.evologica.mvp.ui.main.MainMvpView;
import br.com.evologica.mvp.ui.main.MainPresenter;
import br.com.evologica.mvp.ui.splash.SplashMvpPresenter;
import br.com.evologica.mvp.ui.splash.SplashMvpView;
import br.com.evologica.mvp.ui.splash.SplashPresenter;
import dagger.Module;
import dagger.Provides;
import io.reactivex.disposables.CompositeDisposable;
/**
* Created by marcussales on 02/03/2017.
*/
@Module
public class ActivityModule {
private Activity mActivity;
public ActivityModule(Activity activity) {
this.mActivity = activity;
}
@Provides
@ActivityContext
Context provideContext(){
return mActivity;
}
@Provides
Activity provideActivity(){
return mActivity;
}
@Provides
CompositeDisposable provideCompositeDisposable() {
return new CompositeDisposable();
}
@Provides
@PerActivity
SplashMvpPresenter<SplashMvpView> provideSplashPresenter(SplashPresenter<SplashMvpView> presenter){
return presenter;
}
@Provides
@PerActivity
LoginMvpPresenter<LoginMvpView> provideLoginPresenter(LoginPresenter<LoginMvpView> presenter){
return presenter;
}
@Provides
@PerActivity
MainMvpPresenter<MainMvpView> provideMainPresenter(MainPresenter<MainMvpView> presenter){
return presenter;
}
}
package br.com.evologica.mvp.di.module;
import android.app.Application;
import android.content.Context;
import javax.inject.Singleton;
import br.com.evologica.curio.Service;
import br.com.evologica.mvp.R;
import br.com.evologica.mvp.data.AppDataManager;
import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.data.prefs.AppPreferencesHelper;
import br.com.evologica.mvp.data.prefs.PreferencesHelper;
import br.com.evologica.mvp.di.ApplicationContext;
import br.com.evologica.mvp.di.PreferenceInfo;
import br.com.evologica.mvp.utils.AppConstants;
import dagger.Module;
import dagger.Provides;
import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
/**
* Created by marcussales on 02/03/2017.
*/
@Module
public class ApplicationModule {
private final Application mApplication;
public ApplicationModule(Application application) {
mApplication = application;
}
@Provides
@ApplicationContext
Context provideContext() {
return mApplication;
}
@Provides
Application provideApplication() {
return mApplication;
}
@Provides
@Singleton
DataManager provideDataManager(AppDataManager appDataManager){
return appDataManager;
}
@Provides
@Singleton
PreferencesHelper providePreferencesHelper(AppPreferencesHelper appPreferencesHelper){
return appPreferencesHelper;
}
@Provides
@PreferenceInfo
String providePreferenceName(){
return AppConstants.PREF_NAME;
}
@Provides
@Singleton
CalligraphyConfig provideCalligraphyDefaultConfig() {
return new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/source-sans-pro/SourceSansPro-Regular.ttf")
.setFontAttrId(R.attr.fontPath)
.build();
}
@Provides
@Singleton
Service provideCurioService() {
return new Service("CentralBonus", "192.168.0.34", "6161", "72");
}
}
package br.com.evologica.mvp.ui.base;
import android.app.ProgressDialog;
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 br.com.evologica.mvp.utils.CommonUtils;
import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;
public class BaseActivity extends AppCompatActivity implements MvpView, BaseFragment.Callback {
private ActivityComponent mActivityComponent;
private ProgressDialog mProgressDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivityComponent = DaggerActivityComponent.builder()
.activityModule(new ActivityModule(this))
.applicationComponent(((MvpApp) getApplication()).getComponent())
.build();
}
public ActivityComponent getActivityComponent() {
return mActivityComponent;
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
@Override
public void onFragmentAttached() {
}
@Override
public void onFragmentDetached(String tag) {
}
@Override
public void showLoading() {
hideLoading();
mProgressDialog = CommonUtils.showLoadingDialog(this);
}
@Override
public void hideLoading() {
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.cancel();
}
}
@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();
}
}
package br.com.evologica.mvp.ui.base;
import android.support.annotation.StringRes;
import android.support.v4.app.Fragment;
/**
* Created by marcussales on 01/03/2017.
*/
public class BaseFragment extends Fragment implements MvpView {
@Override
public void showLoading() {
}
@Override
public void hideLoading() {
}
@Override
public void onError(@StringRes int resId) {
}
@Override
public void onError(String message) {
}
public interface Callback {
void onFragmentAttached();
void onFragmentDetached(String tag);
}
}
package br.com.evologica.mvp.ui.base; package br.com.evologica.mvp.ui.base;
import javax.inject.Inject;
import br.com.evologica.mvp.data.DataManager; import br.com.evologica.mvp.data.DataManager;
import io.reactivex.disposables.CompositeDisposable;
public class BasePresenter<V extends MvpView> implements MvpPresenter<V> { public class BasePresenter<V extends MvpView> implements MvpPresenter<V> {
private V mMvpView; private V mMvpView;
private final DataManager mDataManager; private final DataManager mDataManager;
private final CompositeDisposable mCompositeDisposable;
@Inject public BasePresenter(DataManager mDataManager) {
public BasePresenter(DataManager mDataManager, CompositeDisposable mCompositeDisposable) {
this.mDataManager = mDataManager; this.mDataManager = mDataManager;
this.mCompositeDisposable = mCompositeDisposable;
} }
public V getMvpView() { public V getMvpView() {
...@@ -29,7 +23,6 @@ public class BasePresenter<V extends MvpView> implements MvpPresenter<V> { ...@@ -29,7 +23,6 @@ public class BasePresenter<V extends MvpView> implements MvpPresenter<V> {
@Override @Override
public void onDetach() { public void onDetach() {
mCompositeDisposable.dispose();
mMvpView = null; mMvpView = null;
} }
...@@ -41,8 +34,4 @@ public class BasePresenter<V extends MvpView> implements MvpPresenter<V> { ...@@ -41,8 +34,4 @@ public class BasePresenter<V extends MvpView> implements MvpPresenter<V> {
return mDataManager; return mDataManager;
} }
public CompositeDisposable getCompositeDisposable() {
return mCompositeDisposable;
}
} }
package br.com.evologica.mvp.ui.base; package br.com.evologica.mvp.ui.base;
import android.support.annotation.StringRes;
public interface MvpView { public interface MvpView {
void showLoading();
void hideLoading();
void onError(@StringRes int resId);
void onError(String message);
} }
...@@ -3,53 +3,31 @@ package br.com.evologica.mvp.ui.login; ...@@ -3,53 +3,31 @@ package br.com.evologica.mvp.ui.login;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.view.View; import android.support.v7.app.AppCompatActivity;
import android.widget.EditText;
import javax.inject.Inject;
import br.com.evologica.mvp.MvpApp;
import br.com.evologica.mvp.R; import br.com.evologica.mvp.R;
import br.com.evologica.mvp.ui.base.BaseActivity;
import br.com.evologica.mvp.ui.main.MainActivity; import br.com.evologica.mvp.ui.main.MainActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/** /**
* Created by marcussales on 01/03/2017. * Created by marcussales on 01/03/2017.
*/ */
public class LoginActivity extends BaseActivity implements LoginMvpView { public class LoginActivity extends AppCompatActivity implements LoginMvpView {
private static final String TAG = "LoginActivity"; private static final String TAG = "LoginActivity";
@Inject
LoginMvpPresenter<LoginMvpView> mPresenter; LoginMvpPresenter<LoginMvpView> mPresenter;
@BindView(R.id.et_email)
EditText mEmailEditText;
@BindView(R.id.et_password)
EditText mPasswordEditText;
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login); setContentView(R.layout.activity_login);
getActivityComponent().inject(this); mPresenter = new LoginPresenter<>(((MvpApp)getApplicationContext()).getDataManager());
ButterKnife.bind(this);
mPresenter.onAttach(LoginActivity.this); mPresenter.onAttach(LoginActivity.this);
} }
@OnClick(R.id.btn_login)
void onLogin(View v) {
mPresenter.onLogin(mEmailEditText.getText().toString(),
mPasswordEditText.getText().toString());
}
@Override @Override
public void openMainActivity() { public void openMainActivity() {
Intent intent = new Intent(this, MainActivity.class); Intent intent = new Intent(this, MainActivity.class);
...@@ -63,5 +41,4 @@ public class LoginActivity extends BaseActivity implements LoginMvpView { ...@@ -63,5 +41,4 @@ public class LoginActivity extends BaseActivity implements LoginMvpView {
super.onDestroy(); super.onDestroy();
} }
} }
package br.com.evologica.mvp.ui.login; package br.com.evologica.mvp.ui.login;
import br.com.evologica.mvp.di.PerActivity;
import br.com.evologica.mvp.ui.base.MvpPresenter; import br.com.evologica.mvp.ui.base.MvpPresenter;
/** /**
* Created by marcussales on 01/03/2017. * Created by marcussales on 01/03/2017.
*/ */
@PerActivity
public interface LoginMvpPresenter<V extends LoginMvpView> extends MvpPresenter<V> { public interface LoginMvpPresenter<V extends LoginMvpView> extends MvpPresenter<V> {
void onLogin(String email,String password); void onLogin(String email,String password);
......
package br.com.evologica.mvp.ui.login; package br.com.evologica.mvp.ui.login;
import javax.inject.Inject;
import br.com.evologica.mvp.data.DataManager; import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.ui.base.BasePresenter; 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. * Created by marcussales on 01/03/2017.
...@@ -16,31 +11,12 @@ public class LoginPresenter<V extends LoginMvpView> extends BasePresenter<V> imp ...@@ -16,31 +11,12 @@ public class LoginPresenter<V extends LoginMvpView> extends BasePresenter<V> imp
private static final String TAG = "LoginPresenter"; private static final String TAG = "LoginPresenter";
@Inject public LoginPresenter(DataManager dataManager) {
public LoginPresenter(DataManager dataManager, CompositeDisposable compositeDisposable) { super(dataManager);
super(dataManager, compositeDisposable);
} }
@Override @Override
public void onLogin(String email, String password) { public void onLogin(String email, String password) {
getMvpView().showLoading();
getCompositeDisposable().add(
getDataManager().getService().openSession(email, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
session -> {
getDataManager().setLoggedIn();
getMvpView().openMainActivity();
getMvpView().hideLoading();
},
err -> {
getDataManager().setLoggedOut();
getMvpView().onError(err.getMessage());
getMvpView().hideLoading();
}
)
);
} }
} }
\ No newline at end of file
...@@ -3,48 +3,29 @@ package br.com.evologica.mvp.ui.main; ...@@ -3,48 +3,29 @@ package br.com.evologica.mvp.ui.main;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.view.View; import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import javax.inject.Inject;
import br.com.evologica.mvp.MvpApp;
import br.com.evologica.mvp.R; import br.com.evologica.mvp.R;
import br.com.evologica.mvp.ui.base.BaseActivity;
import br.com.evologica.mvp.ui.login.LoginActivity; import br.com.evologica.mvp.ui.login.LoginActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/** /**
* Created by marcussales on 01/03/2017. * Created by marcussales on 01/03/2017.
*/ */
public class MainActivity extends BaseActivity implements MainMvpView { public class MainActivity extends AppCompatActivity implements MainMvpView {
@Inject
MainMvpPresenter<MainMvpView> mPresenter; MainMvpPresenter<MainMvpView> mPresenter;
@BindView(R.id.logout_button)
Button mLogoutButton;
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
mPresenter = new MainPresenter<>(((MvpApp)getApplicationContext()).getDataManager());
getActivityComponent().inject(this);
ButterKnife.bind(this);
mPresenter.onAttach(MainActivity.this); mPresenter.onAttach(MainActivity.this);
} }
@OnClick(R.id.logout_button)
void onLogout(View v) {
mPresenter.onLogout();
}
@Override @Override
public void openLoginActivity() { public void openLoginActivity() {
Intent intent = new Intent(this, LoginActivity.class); Intent intent = new Intent(this, LoginActivity.class);
......
package br.com.evologica.mvp.ui.main; package br.com.evologica.mvp.ui.main;
import br.com.evologica.mvp.di.PerActivity;
import br.com.evologica.mvp.ui.base.MvpPresenter; import br.com.evologica.mvp.ui.base.MvpPresenter;
import br.com.evologica.mvp.ui.base.MvpView; import br.com.evologica.mvp.ui.base.MvpView;
...@@ -8,7 +7,6 @@ import br.com.evologica.mvp.ui.base.MvpView; ...@@ -8,7 +7,6 @@ import br.com.evologica.mvp.ui.base.MvpView;
* Created by marcussales on 01/03/2017. * Created by marcussales on 01/03/2017.
*/ */
@PerActivity
public interface MainMvpPresenter<V extends MvpView> extends MvpPresenter<V> { public interface MainMvpPresenter<V extends MvpView> extends MvpPresenter<V> {
void onLogout(); void onLogout();
......
package br.com.evologica.mvp.ui.main; 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.data.DataManager;
import br.com.evologica.mvp.ui.base.BasePresenter; 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> { public class MainPresenter<V extends MainMvpView> extends BasePresenter<V> implements MainMvpPresenter<V> {
@Inject public MainPresenter(DataManager dataManager) {
public MainPresenter(DataManager dataManager, CompositeDisposable compositeDisposable) { super(dataManager);
super(dataManager, compositeDisposable);
} }
@Override
public void onAttach(V mvpView) {
super.onAttach(mvpView);
getMvpView().showLoading();
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());
},
getMvpView()::hideLoading
);
},
err -> {
getDataManager().setLoggedOut();
getMvpView().openLoginActivity();
System.out.println(err.getMessage());
getMvpView().hideLoading();
}
)
);
}
@Override @Override
public void onLogout() { public void onLogout() {
getMvpView().showLoading();
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());
},
getMvpView()::hideLoading
)
);
} }
} }
...@@ -3,26 +3,22 @@ package br.com.evologica.mvp.ui.splash; ...@@ -3,26 +3,22 @@ package br.com.evologica.mvp.ui.splash;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import javax.inject.Inject; import br.com.evologica.mvp.MvpApp;
import br.com.evologica.mvp.R; import br.com.evologica.mvp.R;
import br.com.evologica.mvp.ui.base.BaseActivity;
import br.com.evologica.mvp.ui.login.LoginActivity; import br.com.evologica.mvp.ui.login.LoginActivity;
import br.com.evologica.mvp.ui.main.MainActivity; import br.com.evologica.mvp.ui.main.MainActivity;
import butterknife.ButterKnife;
public class SplashActivity extends BaseActivity implements SplashMvpView { public class SplashActivity extends AppCompatActivity implements SplashMvpView {
@Inject
SplashMvpPresenter<SplashMvpView> mPresenter; SplashMvpPresenter<SplashMvpView> mPresenter;
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash); setContentView(R.layout.activity_splash);
getActivityComponent().inject(this); mPresenter = new SplashPresenter<>(((MvpApp)getApplicationContext()).getDataManager());
ButterKnife.bind(this);
mPresenter.onAttach(SplashActivity.this); mPresenter.onAttach(SplashActivity.this);
} }
......
package br.com.evologica.mvp.ui.splash; package br.com.evologica.mvp.ui.splash;
import br.com.evologica.mvp.di.PerActivity;
import br.com.evologica.mvp.ui.base.MvpPresenter; import br.com.evologica.mvp.ui.base.MvpPresenter;
import br.com.evologica.mvp.ui.base.MvpView; import br.com.evologica.mvp.ui.base.MvpView;
...@@ -8,6 +7,5 @@ import br.com.evologica.mvp.ui.base.MvpView; ...@@ -8,6 +7,5 @@ import br.com.evologica.mvp.ui.base.MvpView;
* Created by marcussales on 01/03/2017. * Created by marcussales on 01/03/2017.
*/ */
@PerActivity
public interface SplashMvpPresenter<V extends MvpView> extends MvpPresenter<V> { public interface SplashMvpPresenter<V extends MvpView> extends MvpPresenter<V> {
} }
package br.com.evologica.mvp.ui.splash; package br.com.evologica.mvp.ui.splash;
import javax.inject.Inject;
import br.com.evologica.mvp.data.DataManager; import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.ui.base.BasePresenter; import br.com.evologica.mvp.ui.base.BasePresenter;
import io.reactivex.disposables.CompositeDisposable;
public class SplashPresenter<V extends SplashMvpView> extends BasePresenter<V> implements SplashMvpPresenter<V> { public class SplashPresenter<V extends SplashMvpView> extends BasePresenter<V> implements SplashMvpPresenter<V> {
@Inject public SplashPresenter(DataManager mDataManager) {
public SplashPresenter(DataManager dataManager, CompositeDisposable compositeDisposable) { super(mDataManager);
super(dataManager, compositeDisposable);
} }
@Override @Override
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
app:cardElevation="16dp"> app:cardElevation="16dp">
<TextView <TextView
style="@style/TextStyle.Heading"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center|top" android:layout_gravity="center|top"
...@@ -95,31 +94,6 @@ ...@@ -95,31 +94,6 @@
android:text="@string/login" android:text="@string/login"
android:textSize="18dp" /> android:textSize="18dp" />
</LinearLayout> </LinearLayout>
<!--<LinearLayout-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_gravity="bottom|center"-->
<!--android:layout_marginBottom="40dp"-->
<!--android:orientation="horizontal">-->
<!--<ImageButton-->
<!--android:id="@+id/ib_google_login"-->
<!--android:layout_width="40dp"-->
<!--android:layout_height="40dp"-->
<!--android:background="@color/transparent"-->
<!--android:scaleType="centerCrop"-->
<!--app:srcCompat="@drawable/ic_google_plus" />-->
<!--<ImageButton-->
<!--android:id="@+id/ib_fb_login"-->
<!--android:layout_width="40dp"-->
<!--android:layout_height="40dp"-->
<!--android:layout_marginLeft="24dp"-->
<!--android:background="@color/transparent"-->
<!--android:scaleType="centerCrop"-->
<!--app:srcCompat="@drawable/ic_facebook" />-->
<!--</LinearLayout>-->
</android.support.v7.widget.CardView> </android.support.v7.widget.CardView>
</RelativeLayout> </RelativeLayout>
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
<item name="android:textSize">16sp</item> <item name="android:textSize">16sp</item>
<item name="android:typeface">sans</item> <item name="android:typeface">sans</item>
<item name="drawerArrowStyle">@style/MaterialDrawer.DrawerArrowStyle</item> <item name="drawerArrowStyle">@style/MaterialDrawer.DrawerArrowStyle</item>
<item name="android:textAppearance">@style/TextAppearance.Text.Regular</item>
</style> </style>
<style name="AppThemeFullScreen" parent="AppTheme"> <style name="AppThemeFullScreen" parent="AppTheme">
...@@ -42,22 +41,6 @@ ...@@ -42,22 +41,6 @@
<item name="color">@color/white</item> <item name="color">@color/white</item>
</style> </style>
<style name="TextAppearance.Text.Regular" parent="android:TextAppearance">
<item name="fontPath">fonts/source-sans-pro/SourceSansPro-Regular.ttf</item>
</style>
<style name="TextAppearance.Text.Bold" parent="android:TextAppearance">
<item name="fontPath">fonts/source-sans-pro/SourceSansPro-Bold.ttf</item>
</style>
<style name="TextAppearance.Text.Light" parent="android:TextAppearance">
<item name="fontPath">fonts/source-sans-pro/SourceSansPro-Light.ttf</item>
</style>
<style name="TextAppearance.Text.Italic" parent="android:TextAppearance">
<item name="fontPath">fonts/source-sans-pro/SourceSansPro-Italic.ttf</item>
</style>
<style name="TextStyle"> <style name="TextStyle">
<item name="android:layout_marginTop">2dp</item> <item name="android:layout_marginTop">2dp</item>
<item name="android:layout_marginBottom">2dp</item> <item name="android:layout_marginBottom">2dp</item>
...@@ -66,25 +49,6 @@ ...@@ -66,25 +49,6 @@
<item name="android:textColor">@color/teal_dark</item> <item name="android:textColor">@color/teal_dark</item>
</style> </style>
<style name="TextStyle.Title" parent="TextStyle">
<item name="android:textAppearance">@style/TextAppearance.Text.Regular</item>
</style>
<style name="TextStyle.Title.Sub" parent="TextStyle.Title">
<item name="android:textAppearance">@style/TextAppearance.Text.Light</item>
<item name="android:textSize">14sp</item>
</style>
<style name="TextStyle.Heading" parent="TextStyle">
<item name="android:textSize">16sp</item>
<item name="android:textAppearance">@style/TextAppearance.Text.Bold</item>
</style>
<style name="TextStyle.Comment" parent="TextStyle">
<item name="android:textSize">16sp</item>
<item name="android:textAppearance">@style/TextAppearance.Text.Italic</item>
</style>
<style name="TextStyle.Edit" parent="TextStyle"> <style name="TextStyle.Edit" parent="TextStyle">
<item name="colorControlActivated">@color/teal</item> <item name="colorControlActivated">@color/teal</item>
...@@ -96,11 +60,6 @@ ...@@ -96,11 +60,6 @@
<item name="android:minHeight">?attr/actionBarSize</item> <item name="android:minHeight">?attr/actionBarSize</item>
</style> </style>
<style name="Toolbar.TitleText" parent="TextStyle.Heading">
<item name="android:textColor">@color/dark_gray</item>
<item name="android:textSize">22sp</item>
</style>
<style name="Button" parent="Widget.AppCompat.Button"> <style name="Button" parent="Widget.AppCompat.Button">
<item name="android:textColor">@color/black_effective</item> <item name="android:textColor">@color/black_effective</item>
<item name="android:layout_height">48dp</item> <item name="android:layout_height">48dp</item>
......
...@@ -5,21 +5,17 @@ buildscript { ...@@ -5,21 +5,17 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:2.3.0' classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'me.tatarka:gradle-retrolambda:3.2.0' classpath 'me.tatarka:gradle-retrolambda:3.2.0'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
} }
} }
allprojects { allprojects {
repositories { repositories {
jcenter() jcenter()
maven {
url 'http://nexus.conexops.com.br/repository/maven-releases/'
}
} }
} }
...@@ -33,26 +29,9 @@ ext { ...@@ -33,26 +29,9 @@ ext {
minSdkVersion = 18 minSdkVersion = 18
targetSdkVersion = 25 targetSdkVersion = 25
compileSdkVersion = 25 compileSdkVersion = 25
buildToolsVersion = '25.0.2' buildToolsVersion = '25.0.3'
curioJavaVersion = '0.4.2'
// App dependencies // App dependencies
supportLibraryVersion = '25.2.0' supportLibraryVersion = '25.3.1'
//gsonVersion = '2.8.0'
calligraphyVersion = '2.2.0'
//rx2AndroidNetworking = '0.0.1'
dagger2Version = '2.8'
rxjava2Version = '2.0.5'
rxandroidVersion = '2.0.1'
butterKnifeVersion = '8.5.1'
// greenDaoVersion = '3.2.0'
// placeholderviewVersion = '0.6.1'
// debugDBVersion = '1.0.0'
// timberVersion = '4.5.1'
//
//Test dependencies //Test dependencies
junitVersion = '4.12' junitVersion = '4.12'
espressoVersion = '2.2.2' espressoVersion = '2.2.2'
......
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