Настраиваемый вход с использованием Firebase Add On Complete Listener к активности - PullRequest
0 голосов
/ 02 декабря 2019

Привет, это моя модель просмотра.

class AuthViewModel(private val repository: UserRepository) : ViewModel() {
    /** Variables for custom login */
    var email: String? = null
    var password: String? = null
    var authListener : AuthListener? = null
    var authCompletedListener : OnCompleteListener<AuthResult>? = null
    /** Method to perform login operation with facebook */
    fun onClickLoginWithFacebook(){

    }
    /** Method to perform login operation with google */
    fun onClickLoginWithGoogle(){

    }
    /** Method to perform login operation with custom  */
    fun onClickCustomLogin(){
        repository.userLogin(email!!,password!!)
    }
    /** Method to perform sign up operation with custom */
    fun onClickSignUp(){

    }
}

Когда я нажимаю на ClickCustomLogin, я вызываю забаву userLogin из хранилища мгновенно

, а это мой класс хранилища

class UserRepository(private val appAuth: FirebaseAuth) {

    fun userLogin(email: String,password: String){
        appAuth.signInWithEmailAndPassword(email,password).
            addOnCompleteListener(OnCompleteListener { })
    }
}

но в соответствии с MVVM слушатель должен быть добавлен в действие, и он должен взаимодействовать только с моделью представления, поэтому я хочу внедрить OnCompleteListener для моего действия, как это

class LoginActivity : AppCompatActivity(), OnCompleteListener {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)
    }

    // onComplete Task here how it is possible

}

1 Ответ

0 голосов
/ 02 декабря 2019

Как минимум, верните задачу из хранилища.

fun userLogin(email: String,password: String): Task<AuthResult> {
    return appAuth.signInWithEmailAndPassword(email,password)
}

Кроме того, верните ее из метода ViewModel, вызывающего хранилище. Затем добавьте слушателей в Activity.

Это просто минимальный способ начать. Он не обрабатывает изменения конфигурации и не полностью абстрагирует детали реализации Firestore от Activity. Для всего этого вам понадобится намного больше кода в качестве уровня абстракции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...