Nicolai
03/17/2022, 10:54 AMsignupUseCase.signUp(createPostRegister(email, password))
.flatMapConcat {
when (it) {
is NetworkResult.Success -> loginUseCase.login(
createPostToken(
email,
password
)
)
is NetworkResult.Error -> {
it.rbError?.let { error -> handleErrors(error) }
emptyFlow()
}
else -> emptyFlow()
}
}
.flatMapConcat {
when (it) {
is NetworkResult.Success -> {
prefManager.saveString(AppConstants.TOKEN_STORAGE, it.data)
prefManager.saveString(AppConstants.EMAIL_STORAGE, email)
prefManager.savePasswordEncrypted(password)
updateCountryUseCase.updateCountry()
return@flatMapConcat patchSelfUseCase.patchSelf(name, ApiConstants.fullName)
}
else -> emptyFlow()
}
}.flatMapConcat {
when (it) {
is NetworkResult.Success -> getSelfUseCase.getSelf()
is NetworkResult.Error -> {
it.rbError?.let { error -> handleErrors(error) }
emptyFlow()
}
else -> emptyFlow()
}
}.flatMapConcat {
when (it) {
is NetworkResult.Success -> {
it.data?.let { self -> instance.setSelf(self) }
legalRevisions.value?.let { revisions ->
return@flatMapConcat putLegalAcceptUseCase.putLegalAccept(revisions)
} ?: run {
return@flatMapConcat emptyFlow()
}
}
is NetworkResult.Error -> {
it.rbError?.let { error -> handleErrors(error) }
emptyFlow()
}
else -> emptyFlow()
}
}.collect { signupCompleted.postValue(true) }
Michael Marshall
03/17/2022, 11:00 AMsignupUseCase.signUp
?suspend
function than a Flow
.suspend fun NetworkResult.getResultOrNull(): Any? =
when (this) {
is NetworkResult.Success -> it.data
is NetworkResult.Error -> {
rbError?.let { error -> handleErrors(error) }
null
}
}
suspend fun foo() {
val signUpResult = signupUseCase.signUp(createPostRegister(email, password)).getResultOrNull() ?: return
val loginResult = loginUseCase.login(createPostToken(email, password)).getResultOrNull() ?: return
prefManager.saveString(AppConstants.TOKEN_STORAGE, it.data)
prefManager.saveString(AppConstants.EMAIL_STORAGE, email)
prefManager.savePasswordEncrypted(password)
updateCountryUseCase.updateCountry()
val patchSelfResult = patchSelfUseCase.patchSelf(name, ApiConstants.fullName).getResultOrNull() ?: return
val getSelfResult = getSelfUseCase.getSelf().getResultOrNull() ?: return
instance.setSelf(getSelfResult)
val putLegalAcceptResult = legalRevisions.value?.let { revisions -> putLegalAcceptUseCase.putLegalAccept(revisions) }
.getResultOrNull() ?: return
signupCompleted.postValue(true)
}
Nicolai
03/17/2022, 11:54 AM