sammy nduba
03/26/2024, 8:00 AMclass 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()
}
}