// Path: app/src/main/java/com/arellomobile/github/mvp/presenters/SignInPresenter.java
// @InjectViewState
// public class SignInPresenter extends MvpPresenter<SignInView> {
// 
// 	@Inject
// 	Context mContext;
// 	@Inject
// 	GithubService mGithubService;
// 
// 	public SignInPresenter() {
// 		GithubApp.getAppComponent().inject(this);
// 	}
// 
// 	public void signIn(String email, String password) {
// 
// 		Integer emailError = null;
// 		Integer passwordError = null;
// 
// 		getViewState().showError(null, null);
// 
// 		if (TextUtils.isEmpty(email)) {
// 			emailError = R.string.error_field_required;
// 		}
// 
// 		if (TextUtils.isEmpty(password)) {
// 			passwordError = R.string.error_invalid_password;
// 		}
// 
// 		if (emailError != null || passwordError != null) {
// 			getViewState().showError(emailError, passwordError);
// 
// 			return;
// 		}
// 
// 		getViewState().showProgress();
// 
// 		String credentials = String.format("%s:%s", email, password);
// 
// 		final String token = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
// 
// 		Observable<User> userObservable = RxUtils.wrapRetrofitCall(mGithubService.signIn(token))
// 				.doOnNext(user -> AuthUtils.setToken(token));
// 
// 		RxUtils.wrapAsync(userObservable)
// 				.subscribe(user -> {
// 					getViewState().hideProgress();
// 					getViewState().successSignIn();
// 				}, exception -> {
// 					getViewState().hideProgress();
// 					getViewState().showError(exception.getMessage());
// 				});
// 	}
// 
// 	public void onErrorCancel() {
// 		getViewState().hideError();
// 	}
// }
// 
// Path: app/src/main/java/com/arellomobile/github/mvp/views/SignInView.java
// @StateStrategyType(AddToEndSingleStrategy.class)
// public interface SignInView extends MvpView {
// 	void showProgress();
// 
// 	void hideProgress();
// 
// 	void showError(String message);
// 
// 	void hideError();
// 
// 	void showError(Integer emailError, Integer passwordError);
// 
// 	@StateStrategyType(SkipStrategy.class)
// 	void successSignIn();
// }


import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import com.arellomobile.github.R;
import com.arellomobile.github.mvp.presenters.SignInPresenter;
import com.arellomobile.github.mvp.views.SignInView;
import com.arellomobile.mvp.MvpAppCompatActivity;
import com.arellomobile.mvp.presenter.InjectPresenter;
import butterknife.Bind;
import butterknife.ButterKnife;
package com.arellomobile.github.ui.activities;




/**
 * A login screen that offers login via email/password.
 */
public class SignInActivity extends MvpAppCompatActivity implements SignInView, DialogInterface.OnCancelListener {
	@InjectPresenter
// Path: app/src/main/java/com/arellomobile/github/mvp/presenters/SignInPresenter.java
// @InjectViewState
// public class SignInPresenter extends MvpPresenter<SignInView> {
// 
// 	@Inject
// 	Context mContext;
// 	@Inject
// 	GithubService mGithubService;
// 
// 	public SignInPresenter() {
// 		GithubApp.getAppComponent().inject(this);
// 	}
// 
// 	public void signIn(String email, String password) {
// 
// 		Integer emailError = null;
// 		Integer passwordError = null;
// 
// 		getViewState().showError(null, null);
// 
// 		if (TextUtils.isEmpty(email)) {
// 			emailError = R.string.error_field_required;
// 		}
// 
// 		if (TextUtils.isEmpty(password)) {
// 			passwordError = R.string.error_invalid_password;
// 		}
// 
// 		if (emailError != null || passwordError != null) {
// 			getViewState().showError(emailError, passwordError);
// 
// 			return;
// 		}
// 
// 		getViewState().showProgress();
// 
// 		String credentials = String.format("%s:%s", email, password);
// 
// 		final String token = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
// 
// 		Observable<User> userObservable = RxUtils.wrapRetrofitCall(mGithubService.signIn(token))
// 				.doOnNext(user -> AuthUtils.setToken(token));
// 
// 		RxUtils.wrapAsync(userObservable)
// 				.subscribe(user -> {
// 					getViewState().hideProgress();
// 					getViewState().successSignIn();
// 				}, exception -> {
// 					getViewState().hideProgress();
// 					getViewState().showError(exception.getMessage());
// 				});
// 	}
// 
// 	public void onErrorCancel() {
// 		getViewState().hideError();
// 	}
// }
// 
// Path: app/src/main/java/com/arellomobile/github/mvp/views/SignInView.java
// @StateStrategyType(AddToEndSingleStrategy.class)
// public interface SignInView extends MvpView {
// 	void showProgress();
// 
// 	void hideProgress();
// 
// 	void showError(String message);
// 
// 	void hideError();
// 
// 	void showError(Integer emailError, Integer passwordError);
// 
// 	@StateStrategyType(SkipStrategy.class)
// 	void successSignIn();
// }


// Path: app/src/main/java/com/arellomobile/github/ui/activities/SignInActivity.java
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import com.arellomobile.github.R;
import com.arellomobile.github.mvp.presenters.SignInPresenter;
import com.arellomobile.github.mvp.views.SignInView;
import com.arellomobile.mvp.MvpAppCompatActivity;
import com.arellomobile.mvp.presenter.InjectPresenter;
import butterknife.Bind;
import butterknife.ButterKnife;

package com.arellomobile.github.ui.activities;




/**
 * A login screen that offers login via email/password.
 */
public class SignInActivity extends MvpAppCompatActivity implements SignInView, DialogInterface.OnCancelListener {
	@InjectPresenter
	SignInPresenter mSignInPresenter;