Skip to content

Commit

Permalink
Merge pull request #3 from EASY-CODES/feat/use-catch-to-flow
Browse files Browse the repository at this point in the history
use catch flow
  • Loading branch information
eng-edu authored Feb 29, 2024
2 parents 641a0ee + 9132e2c commit 849c0ca
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 33 deletions.
10 changes: 5 additions & 5 deletions ceprace/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ android {

buildTypes {
release {
isMinifyEnabled = true
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
Expand All @@ -32,9 +32,9 @@ android {
}
kotlinOptions {
jvmTarget = "17"
freeCompilerArgs = listOf(
"-Xstring-concat=inline"
)
// freeCompilerArgs = listOf(
// "-Xstring-concat=inline"
// )
}

packaging {
Expand Down Expand Up @@ -73,7 +73,7 @@ publishing {
register<MavenPublication>("release") {
groupId = "com.github.EASY-CODES"
artifactId = "ceprace"
version = "1.0"
version = "1.0.15"

afterEvaluate {
from(components["release"])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import com.engedu.ceprace.domain.model.Response
import com.engedu.ceprace.domain.model.toVo
import com.example.cepraceapp.domain.useCase.GetAddressUseCase
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.flatMapMerge
Expand All @@ -14,44 +17,30 @@ import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map


internal class GetAddressUseCaseImpl(private val repository: AddressRepository) : GetAddressUseCase {
internal class GetAddressUseCaseImpl(private val repository: AddressRepository) :
GetAddressUseCase {
override suspend fun execute(cep: String): AddressVO? {
return ranceFlow(cep).first()
}

@OptIn(ExperimentalCoroutinesApi::class)
@OptIn(FlowPreview::class)
private suspend fun ranceFlow(cep: String) = flow {

val viaCepFlow = flow {
try {
emit(Response(success = true, addressVO = repository.getAddressViaCep(cep).toVo()))
} catch (e: Exception) {
emit(Response(errorMsg = e.message.toString()))
}
}
emit(Response(success = true, addressVO = repository.getAddressViaCep(cep).toVo()))
}.catch { emit(Response(errorMsg = it.message)) }

val openCepFlow = flow {
try {
emit(Response(success = true, addressVO = repository.getAddressOpenCep(cep).toVo()))
} catch (e: Exception) {
emit(Response(errorMsg = e.message.toString()))
}
}
emit(Response(success = true, addressVO = repository.getAddressOpenCep(cep).toVo()))
}.catch { emit(Response(errorMsg = it.message)) }

val postmonFlow = flow {
try {
emit(Response(success = true, addressVO = repository.getAddressPostmon(cep).toVo()))
} catch (e: Exception) {
emit(Response(errorMsg = e.message.toString()))
}
}
emit(Response(success = true, addressVO = repository.getAddressPostmon(cep).toVo()))
}.catch { emit(Response(errorMsg = it.message)) }

val widnetFlow = flow {
try {
emit(Response(success = true, addressVO = repository.getAddressWidnet(cep).toVo()))
} catch (e: Exception) {
emit(Response(errorMsg = e.message.toString()))
}
}
emit(Response(success = true, addressVO = repository.getAddressWidnet(cep).toVo()))
}.catch { emit(Response(errorMsg = it.message)) }

/**
* flatMapMerge é um operador do Kotlin Flow que permite combinar vários fluxos em um único fluxo,
Expand All @@ -62,7 +51,9 @@ internal class GetAddressUseCaseImpl(private val repository: AddressRepository)
* os elementos à medida que estão prontos, independentemente da ordem de chegada dos elementos originais.
*/
val combinedFlow = flowOf(viaCepFlow, openCepFlow, postmonFlow, widnetFlow)
.flatMapMerge { it }.filter { it.success }.map { it.addressVO }
.flatMapMerge { it }
.filter { it.success }
.map { it.addressVO }

combinedFlow.collect {
emit(it)
Expand Down
2 changes: 1 addition & 1 deletion version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.0.15
1.0.16

0 comments on commit 849c0ca

Please sign in to comment.