package com.xiaomai.geek.ui.module;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TextInputLayout;
import android.text.TextUtils;
import android.widget.Button;
import android.widget.EditText;
import com.xiaomai.geek.GeekApplication;
import com.xiaomai.geek.R;
import com.xiaomai.geek.common.utils.InputMethodUtils;
import com.xiaomai.geek.data.module.User;
import com.xiaomai.geek.data.pref.AccountPref;
import com.xiaomai.geek.di.IComponent;
import com.xiaomai.geek.di.component.AccountComponent;
import com.xiaomai.geek.di.component.DaggerAccountComponent;
import com.xiaomai.geek.di.module.AccountModule;
import com.xiaomai.geek.di.module.ActivityModule;
import com.xiaomai.geek.event.AccountEvent;
import com.xiaomai.geek.presenter.github.LoginPresenter;
import com.xiaomai.geek.ui.base.BaseLoadActivity;
import com.xiaomai.geek.view.ILoginView;
import org.greenrobot.eventbus.EventBus;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**
* Created by XiaoMai on 2017/4/26.
*/
public class LoginActivity extends BaseLoadActivity implements ILoginView, IComponent<AccountComponent> {
@BindView(R.id.userName)
EditText userName;
@BindView(R.id.userName_layout)
TextInputLayout userNameLayout;
@BindView(R.id.password)
EditText password;
@BindView(R.id.login_btn)
Button loginBtn;
@Inject
LoginPresenter mPresenter;
public static void launch(Context context) {
context.startActivity(new Intent(context, LoginActivity.class));
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getComponent().inject(this);
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
initViews();
mPresenter.attachView(this);
}
private void initViews() {
String name = AccountPref.getLoginUserName(this);
userName.setText(name);
if (!TextUtils.isEmpty(name)) {
password.requestFocus();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mPresenter.detachView();
}
@Override
public AccountComponent getComponent() {
return DaggerAccountComponent.builder()
.applicationComponent(GeekApplication.get(this).getComponent())
.activityModule(new ActivityModule(this))
.accountModule(new AccountModule())
.build();
}
@Override
public void loginSuccess(User user) {
Snackbar.make(loginBtn, "登录成功", Snackbar.LENGTH_LONG).show();
AccountPref.saveLoginUser(this, user);
AccountPref.saveLoginUserName(this, userName.getText().toString().trim());
EventBus.getDefault().post(new AccountEvent(AccountEvent.LOGIN));
finish();
}
@Override
public void error(Throwable e) {
Snackbar.make(loginBtn, "登录失败!请检查用户名或密码", Snackbar.LENGTH_LONG).show();
}
@OnClick(R.id.login_btn)
public void onViewClicked() {
String name = userName.getText().toString().trim();
String pass = password.getText().toString().trim();
if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(pass)) {
InputMethodUtils.hideSoftInput(this);
mPresenter.login(name, pass);
} else {
Snackbar.make(userName, "用户名或密码不能为空", Snackbar.LENGTH_LONG).show();
}
}
@Override
public String getLoadingMessage() {
return "登录中...";
}
}