Skip to content

Commit be9411f

Browse files
Add solution for Flow exception handling exercise
1 parent d09ede2 commit be9411f

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

app/src/main/java/com/lukaslechner/coroutineusecasesonandroid/usecases/flow/usecase3/FlowUseCase3ViewModel.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.lukaslechner.coroutineusecasesonandroid.usecases.flow.usecase3
33
import androidx.lifecycle.LiveData
44
import androidx.lifecycle.asLiveData
55
import com.lukaslechner.coroutineusecasesonandroid.base.BaseViewModel
6+
import kotlinx.coroutines.flow.catch
67
import kotlinx.coroutines.flow.map
78
import kotlinx.coroutines.flow.onCompletion
89
import kotlinx.coroutines.flow.onStart
@@ -37,5 +38,9 @@ class FlowUseCase3ViewModel(
3738
.onCompletion {
3839
Timber.tag("Flow").d("Flow has completed.")
3940
}
41+
.catch { throwable ->
42+
Timber.tag("Flow").d("Enter catch operator with $throwable")
43+
emit(UiState.Error("something went wrong"))
44+
}
4045
.asLiveData()
4146
}

app/src/main/java/com/lukaslechner/coroutineusecasesonandroid/usecases/flow/usecase3/StockPriceDataSource.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import com.lukaslechner.coroutineusecasesonandroid.usecases.flow.mock.Stock
55
import kotlinx.coroutines.delay
66
import kotlinx.coroutines.flow.Flow
77
import kotlinx.coroutines.flow.flow
8+
import kotlinx.coroutines.flow.retry
9+
import retrofit2.HttpException
810
import timber.log.Timber
911

1012
interface StockPriceDataSource {
@@ -20,5 +22,15 @@ class NetworkStockPriceDataSource(mockApi: FlowMockApi) : StockPriceDataSource {
2022
emit(currentStockList)
2123
delay(5_000)
2224
}
25+
}.retry { cause ->
26+
Timber.tag("Flow").d("Enter retry operator with $cause")
27+
28+
val shouldRetry = cause is HttpException
29+
30+
if (shouldRetry) {
31+
delay(5_000)
32+
}
33+
34+
shouldRetry
2335
}
2436
}

0 commit comments

Comments
 (0)