Архитектура MVP - PullRequest
       8

Архитектура MVP

0 голосов
/ 13 сентября 2018

Я пытался реорганизовать модуль входа в приложение. Любые ошибки и предложения, над чем еще я должен работать, и я должен помнить

Вход Presenter.java

public class LoginPresenter implements LoginInteractor.LoginPresenter {
private LoginInteractor.LoginView loginView;

public LoginPresenter(LoginInteractor.LoginView loginView) {
    this.loginView = loginView;


}
@Override
public void CheckIdUserVerified(FirebaseUser currentUser, Context context) {
    if (currentUser != null) {
        if (currentUser.isEmailVerified()) {
            loginView.OnLoginSuccess();
        }
    }
}
@Override
public void Register() {
    loginView.OnRegister();
}
@Override
public void Login(String email,String password,final FirebaseAuth mAuth){

    if (email.isEmpty() && password.isEmpty()) {
        loginView.OnMessage("password is empty");
        return;
    } else if (email.isEmpty()) {
        loginView.OnMessage("email is empty");
        return;
    } else if (password.isEmpty()) {
        loginView.OnMessage("password is empty");
        return;
    } else {
        mAuth.signInWithEmailAndPassword(email, password)
                .addOnCompleteListener((Executor) this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            if (mAuth.getCurrentUser().isEmailVerified()) {
                                loginView.OnLoginSuccess();


                            } else {
                                loginView.builderr("Verify","Verify mo to","Verify");

                                loginView.OnMessage("Failed");
                            }


                        }
                    }});}}}

Должен ли я использовать Firebase на части модели или все в порядке, если она в представлении

Login View.java

    public class LoginView extends AppCompatActivity implements 
   LoginInteractor.LoginView {
private LoginPresenter loginPresenter;
public Button login;
public TextView register;
EditText editTextEmail, editTextPassword;
FirebaseAuth mAuth;
FirebaseUser currentUser;
ProgressDialog progressDialog;




protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    Initialize();

    loginPresenter.CheckIdUserVerified(currentUser,this);


    //LoginButtonOnClick
    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

    loginPresenter.Login(editTextEmail.getText().toString(),
editTextPassword.getText().toString(),mAuth);
        }
    });

    //Goto Register Page
    register.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
           loginPresenter.Register();
     }
});

}

@Override
public void Initialize() {
    loginPresenter = new LoginPresenter(this);
    editTextEmail = (EditText) findViewById(R.id.editTextEmail);
    editTextPassword = (EditText) findViewById(R.id.editTextPassword);
    login = (Button)findViewById(R.id.buttonLogin);
    register = (TextView)findViewById(R.id.registertext);
    editTextEmail = (EditText) findViewById(R.id.editTextEmail);
    editTextPassword = (EditText) findViewById(R.id.editTextPassword);
    progressDialog = new ProgressDialog(this);
    progressDialog.setMessage("Logging in..");
    progressDialog.setCancelable(false);
    mAuth = FirebaseAuth.getInstance();
    currentUser = mAuth.getCurrentUser();

}
public void OnVerify(){

    Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.google.android.gm");
    if (launchIntent != null) {
        startActivity(launchIntent);//null pointer check in case package name was not found
    } else {
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://mail.google.com/mail/#inbox")));
    }

}
public void OnRegister(){
    startActivity(new Intent(LoginView.this, RegisterView.class));
}
public void OnMessage(String message){
Toast.makeText(LoginView.this, message, Toast.LENGTH_SHORT).show();
         }
 public void OnLoginSuccess(){
startActivity(new Intent(LoginView.this, MainActivity.class));
finish();
       }
public void builderr(String BulderTitle,String BuilderMessage,String 
      PositiveButton) {
    AlertDialog.Builder builder;
    builder = new AlertDialog.Builder(this);
    builder.setCancelable(true);
    builder.setTitle(BulderTitle);
    builder.setMessage(BuilderMessage);
    builder.setInverseBackgroundForced(true);
    builder.setPositiveButton(PositiveButton,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    OnVerify();

                }});
    AlertDialog alert = builder.create();
    alert.show();



}}

LoginInteractor

      public interface LoginInteractor {
interface LoginView{
    void Initialize();
    void OnLoginSuccess();
    void OnMessage(String message);
    void OnRegister();
    void builderr(String BulderTitle,String BuilderMessage,String 
    PositiveButton);
}
interface LoginPresenter{
    void CheckIdUserVerified(FirebaseUser currentUser, Context context);
    void Login(String email, String password, FirebaseAuth mAuth);
    void Register();

}
}

** Если бы мне нужно было использовать Firebase на модели, какая-нибудь идея, которая будет выглядеть?Я как бы заново изучал и искал ответы, но как мне инициализировать FireBase без создания метода? **

...