LoginActivity.java 6.83 KB
package com.dinhcv.lifelogpedometer.activity;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;

import com.dinhcv.lifelogpedometer.R;
import com.dinhcv.lifelogpedometer.interfaces.LLAPIManagerListener;
import com.dinhcv.lifelogpedometer.model.Shareprefer.Setting;
import com.dinhcv.lifelogpedometer.portal.ApiServices;
import com.dinhcv.lifelogpedometer.portal.LLAPIManager;
import com.dinhcv.lifelogpedometer.utils.Const;
import com.dinhcv.lifelogpedometer.utils.Debug;

import org.json.JSONObject;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class LoginActivity extends ActivityBase {

    @BindView(R.id.edt_user)
    TextView edtUser;
    @BindView(R.id.edt_password)
    TextView edtPassword;
    @BindView(R.id.btn_login)
    Button btnLogin;
    @BindView(R.id.btn_register)
    Button btnRegister;
    @BindView(R.id.tv_forgetPass)
    TextView tvForgetPass;


    private ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ButterKnife.bind(this);
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

        initData();

    }


    private void initData() {

    }

    private boolean verifyData(String user, String pass) {
        if (user.isEmpty()) {
            showAlerDialog(LoginActivity.this, getResources().getString(R.string.account_is_null));
            return false;
        }

        if (pass.isEmpty()) {
            showAlerDialog(LoginActivity.this, getResources().getString(R.string.password_is_null));
            return false;
        }

        return true;
    }

    private void handleLogin() {
        final String user = edtUser.getText().toString();
        String pass = edtPassword.getText().toString();

        // verify
        boolean isOk = verifyData(user, pass);
        if (!isOk) {
            return;
        }

        progressDialog = new ProgressDialog(LoginActivity.this);
        progressDialog.setMessage(getResources().getString(R.string.waite_some_minute));
        progressDialog.setCancelable(false);
        progressDialog.show();

        ApiServices.login(LoginActivity.this, user, pass, new LLAPIManagerListener() {
            @Override
            public void onError(Error error) {
                progressDialog.dismiss();
                Debug.error("Version JSON result: ERROR " + error);
                String err = getResources().getString(R.string.login_error);
                notifyErr(err);
            }

            @Override
            public void onSuccess(String json) {
                Debug.warn("Version JSON result: " + json.toString());
                progressDialog.dismiss();
            }

            @Override
            public void onSuccess(JSONObject object) {
                Debug.warn("Version JSON object result: Success");
                progressDialog.dismiss();

                String email = object.optString("email");
                String username = object.optString("username");
                String pass = object.optString("password");
                int id = object.optInt("id");
                Debug.normal("Email: "+email +"\n"+ "Username: "+username);
                // save data
                Setting.setUserIdSharepre(LoginActivity.this, id);
                Setting.setUserDataSharepre(LoginActivity.this, Setting.EMAIL_SHAREPRE, email);
                Setting.setUserDataSharepre(LoginActivity.this, Setting.USER_SHAREPRE, username);
                Setting.setUserDataSharepre(LoginActivity.this, Setting.PASS_SHAREPRE, pass);
                loginDone();
            }
        });
    }

    private void loginDone(){
        Intent intent = new Intent(LoginActivity.this, PedometerActivity.class);
        startActivity(intent);
    }

    private void handleSendConfirm(final String email){
        progressDialog = new ProgressDialog(LoginActivity.this);
        progressDialog.setMessage(getResources().getString(R.string.waite_some_minute));
        progressDialog.setCancelable(false);
        progressDialog.show();

        ApiServices.forgetPass(email, new LLAPIManagerListener() {
            @Override
            public void onError(Error error) {
                progressDialog.dismiss();
                Debug.error("Send confirm JSON result: ERROR " + error);
                String err = getResources().getString(R.string.request_pass_error);
                notifyErr(err);
            }

            @Override
            public void onSuccess(String json) {
                Debug.warn("Send confirm JSON result: " + json.toString());
                progressDialog.dismiss();

                confirmDone(email);
            }

            @Override
            public void onSuccess(JSONObject object) {
                Debug.warn("Send confirm JSON object result: Success");
                progressDialog.dismiss();
            }
        });
    }

    private void confirmDone(String email){
        Intent intent = new Intent(LoginActivity.this, InputConfirmCodeActivity.class);
        intent.putExtra(Const.EMAIL, email );
        startActivity(intent);
    }

    private void notifyErr(String err) {
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(LoginActivity.this);
        alertDialog.setMessage(err);
        alertDialog.setCancelable(false);
        alertDialog.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //finish();
                edtUser.setText("");
                edtPassword.setText("");
            }
        });
        alertDialog.show();
    }

    @OnClick({R.id.btn_login, R.id.btn_register, R.id.tv_forgetPass})
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_login:
                // handle login
                handleLogin();
                break;
            case R.id.btn_register:
                // hanle register
                Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
                startActivity(intent);
                break;

            case R.id.tv_forgetPass:
                // hanle register
                String email = edtUser.getText().toString();
                if (email.isEmpty()){
                    showAlerDialog(LoginActivity.this, getResources().getString(R.string.please_input_email));
                    return;
                }

                handleSendConfirm(email);

                break;

            default:
                break;
        }
    }
}