Я пытаюсь реализовать архитектуру MVC в простой регистрации через firebase.
пользователь вставит электронную почту и пароль в представление, затем представление вызовет контроллер
Это фрагмент кода вида (LoginView):
@Override
public void onClick(View view) {
if(view==buttonLogin){
LoginResult(editTextEmail.getText().toString().trim(),editTextPassword.getText().toString().trim());
}
@Override
public void LoginResult(String email , String password) {
message = loginController.getInformedLogin(email , password);
Toast.makeText(this, message ,Toast.LENGTH_SHORT).show();
}
Это фрагмент кода контроллера (LoginController):
@Override
public void getInformedLogin(String email, String password) {
userm = new UserModel(email , password);
userm.LoginStatus();
}
Это фрагмент кода модели (Пользователь):
@Override
public void LoginStatus() {
if(TextUtils.isEmpty(this.email)){
//email is empty
ResultMessage= "Please enter an email";
}
if(TextUtils.isEmpty(password)){
//password is empty
ResultMessage = "Please enter a password";
}
firebaseAuth.signInWithEmailAndPassword(this.email,this.password)
.addOnCompleteListener(UserModel.this ,new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
if(firebaseAuth.getCurrentUser().isEmailVerified()){
ResultMessage= "Login successful";
}else{
ResultMessage="You need to verify your email first";
}
}else{
ResultMessage=task.getException().getMessage();
}
}
});
}
При отладке я знаю, что процесс приложения достигает модели и входит в функцию LoginStatus, моя главная проблема в том, что я не знаю, что делать, когда получаю задачу из firebase.
например, скажем, task.successful равно true. Что мне делать дальше? для того, чтобы уведомить представление класса
Я пытался сделать намерение, но это не сработало
Я также попытался передать ссылку на класс представления в конструктор модели, а затем поместил класс представления в setoncompletelistener. Но я думаю, что здесь что-то упущено, но оно не сработало.
Может быть, это не верный способ сделать это, я открыт для любых предложений
Спасибо за ваше время