Я ищу способ реагировать на такие события, как onComplete(), onFailure()
, ... внутри модели представления.
Например:
Я создал класс с именем EmailSignInService, который вызывает OnCompleteListener
из экземпляра firebase в случае входа пользователя в систему.Я хотел бы обработать это событие в viewmodel для обновления пользовательского интерфейса.
EmailSignInService
fun signInUser(email: String, password: String) {
auth.signInWithEmailAndPassword(email, password).
addOnCompleteListener(OnCompleteListener<AuthResult> { task -> {
if(task.isSuccessful) {
val currentUser = auth.currentUser;
// inform somehow viewmodel to change UI state later
} //...
} });
}
LoginViewModel
class LoginViewModel : ViewModel() {
var userName: String? = null; //...
var userPassword: String? = null; //...
// Button on click
fun LoginUser() {
// Create an instance of signin service and get result to inform UI
}
Можно создать интерфейс и передать его какпараметр для EmailSignInService
(обратный вызов), который затем вызывает соответствующий метод внутри addOnCompleteListener
.LoginViewModel
должен также реализовать интерфейс и поместить логику в соответствующий метод.
Есть ли другой или лучший способ справиться с такой ситуацией?