Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- inline fun <T> dependantLiveData(
- vararg dependencies: LiveData<*>,
- crossinline mapper: () -> T?
- ) = MediatorLiveData<T>().also { mediatorLiveData ->
- val observer = Observer<Any> { mediatorLiveData.value = mapper() }
- dependencies.forEach { dependencyLiveData ->
- mediatorLiveData.addSource(dependencyLiveData, observer)
- }
- }
- sealed class LoginUiStates
- data class LoginUiStateSuccessfulLogin(val user: FirebaseUser) : LoginUiStates()
- data class LoginUiStateSuccessfulRegister(val dataOkDialog: DataOkDialog) : LoginUiStates()
- data class LoginUiStateError(val dataOkDialog: DataOkDialog) : LoginUiStates()
- open class LoginViewModel @Inject constructor(private val dataManager: DataManager) :
- RxAwareViewModel() {
- val liveUiStates = MutableLiveData<LoginUiStates>()
- val liveSnackbar = SingleLiveEvent<String>()
- val liveOkDialog = SingleLiveEvent<DataOkDialog>()
- val liveEmail = MutableLiveData<String>()
- val livePass = MutableLiveData<String>()
- val displayName = dependantLiveData(liveEmail) {
- liveEmail.value ?: "null"
- }
- open fun login(
- email: String,
- password: String
- ) {
- disposables.add(dataManager.loginUser(email, password)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- Logger.i("Kullanıcı girişi başarılı.")
- liveSnackbar.value = "${it?.email} ile oturum açıldı."
- liveUiStates.value = LoginUiStateSuccessfulLogin(it)
- }, {
- it.printStackTrace()
- val dialog = DataOkDialog("SweetLoc", it?.message ?: "") {}
- liveUiStates.value = LoginUiStateError(dialog)
- })
- )
- }
- fun register(
- email: String,
- password: String
- ) {
- disposables.add(dataManager.registerUser(email, password)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- Logger.i("Kullanıcı kaydı başarılı.")
- liveSnackbar.value = "${it?.email} ile kayıt olundu."
- liveUiStates.value = LoginUiStateSuccessfulLogin(it)
- }, {
- it.printStackTrace()
- val dialog = DataOkDialog("SweetLoc", it?.message ?: "") {}
- liveUiStates.value = LoginUiStateError(dialog)
- })
- )
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement