https://kotlinlang.org logo
Join SlackCommunities
Powered by
# rxjava
  • s

    sammy nduba

    03/26/2024, 8:00 AM
    does this code work for my rxjava user onboarding:
    Copy code
    class AuthViewModel @Inject constructor(private val repository: UserRepository) : ViewModel() {
    
    
        var oFirstName = ObservableField<String> ()
        var oLastName = ObservableField<String> ()
        var oUid = ObservableField<String> ()
    
    
        private val disposables = CompositeDisposable()
        var authListener: AuthListener? = null
    
        fun registerUser() {
            try {
                if (oFirstName.get().isNullOrEmpty() || oLastName.get().isNullOrEmpty()) {
                    authListener?.onFailure("Please enter both first name and last name")
                    Log.d("ViewModel", "Registration started")
                    return
                }
                val user = User( firstName = oFirstName.get(), lastName = oLastName.get(),
                    id = oUid.get()?.toIntOrNull() ?: 0
                )
    
                disposables.add(
                    repository.register(user)
                        .subscribeOn(<http://Schedulers.io|Schedulers.io>())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(
                            {
                                Log.d("ViewModel", "User Registered")
                                authListener?.onSuccess()
                            },
                            {
                                Log.d("ViewModel", "Registration failed")
                                authListener?.onFailure("")?.let { error(it) }
                            }
                        )
                )
            }catch (e: Exception) {
                Log.e("ViewModel", "Unable to complete registration")
            }
        }
        override fun onCleared() {
            super.onCleared()
            disposables.clear()
        }
    }