package com.kickstarter.ui.activities;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Pair;
import android.widget.Button;
import android.widget.EditText;
import com.kickstarter.R;
import com.kickstarter.libs.BaseActivity;
import com.kickstarter.libs.qualifiers.RequiresActivityViewModel;
import com.kickstarter.libs.utils.ViewUtils;
import com.kickstarter.ui.IntentKey;
import com.kickstarter.viewmodels.ResetPasswordViewModel;
import com.kickstarter.ui.toolbars.LoginToolbar;
import butterknife.Bind;
import butterknife.BindString;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.OnTextChanged;
import rx.android.schedulers.AndroidSchedulers;
import static com.kickstarter.libs.utils.TransitionUtils.slideInFromLeft;
@RequiresActivityViewModel(ResetPasswordViewModel.class)
public final class ResetPasswordActivity extends BaseActivity<ResetPasswordViewModel> {
@Bind (R.id.email) EditText email;
@Bind (R.id.reset_password_button) Button resetPasswordButton;
@Bind(R.id.login_toolbar) LoginToolbar loginToolbar;
@BindString(R.string.forgot_password_title) String forgotPasswordString;
@BindString(R.string.forgot_password_error) String errorMessageString;
@BindString(R.string.general_error_oops) String errorTitleString;
@Override
protected void onCreate(final @Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.reset_password_layout);
ButterKnife.bind(this);
loginToolbar.setTitle(forgotPasswordString);
viewModel.outputs.resetSuccess()
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(__ -> onResetSuccess());
viewModel.outputs.isFormSubmitting()
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::setFormDisabled);
viewModel.outputs.isFormValid()
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::setFormEnabled);
viewModel.errors.resetError()
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(__ -> ViewUtils.showDialog(this, errorTitleString, errorMessageString));
}
@OnTextChanged(R.id.email)
void onEmailTextChanged(final @NonNull CharSequence email) {
viewModel.inputs.email(email.toString());
}
@OnClick(R.id.reset_password_button)
public void resetButtonOnClick() {
viewModel.inputs.resetPasswordClick();
}
@Override
protected @Nullable Pair<Integer, Integer> exitTransition() {
return slideInFromLeft();
}
private void onResetSuccess() {
setFormEnabled(false);
final Intent intent = new Intent(this, LoginActivity.class)
.putExtra(IntentKey.EMAIL, email.getText().toString());
startActivityWithTransition(intent, R.anim.fade_in_slide_in_left, R.anim.slide_out_right);
}
private void setFormEnabled(final boolean isEnabled) {
resetPasswordButton.setEnabled(isEnabled);
}
private void setFormDisabled(final boolean isDisabled) {
setFormEnabled(!isDisabled);
}
}