Skip to content

Commit a226736

Browse files
Remove code in AndroidVersionRepository.kt
1 parent 421ca3d commit a226736

File tree

2 files changed

+32
-17
lines changed

2 files changed

+32
-17
lines changed

app/src/main/java/com/lukaslechner/coroutineusecasesonandroid/usecases/coroutines/usecase14/AndroidVersionRepository.kt

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ package com.lukaslechner.coroutineusecasesonandroid.usecases.coroutines.usecase1
33
import com.lukaslechner.coroutineusecasesonandroid.mock.AndroidVersion
44
import com.lukaslechner.coroutineusecasesonandroid.mock.MockApi
55
import kotlinx.coroutines.CoroutineScope
6-
import kotlinx.coroutines.async
7-
import kotlinx.coroutines.launch
8-
import timber.log.Timber
96

107
class AndroidVersionRepository(
118
private var database: AndroidVersionDao,
@@ -18,20 +15,10 @@ class AndroidVersionRepository(
1815
}
1916

2017
suspend fun loadAndStoreRemoteAndroidVersions(): List<AndroidVersion> {
21-
return scope.async {
22-
val recentVersions = api.getRecentAndroidVersions()
23-
Timber.d("Recent Android versions loaded")
24-
for (recentVersion in recentVersions) {
25-
Timber.d("Insert $recentVersion to database")
26-
database.insert(recentVersion.mapToEntity())
27-
}
28-
recentVersions
29-
}.await()
30-
}
18+
return emptyList()
19+
}
3120

3221
fun clearDatabase() {
33-
scope.launch {
34-
database.clear()
35-
}
22+
3623
}
3724
}

app/src/main/java/com/lukaslechner/coroutineusecasesonandroid/usecases/coroutines/usecase14/ContinueCoroutineWhenUserLeavesScreenViewModel.kt

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,45 @@
11
package com.lukaslechner.coroutineusecasesonandroid.usecases.coroutines.usecase14
22

3+
import androidx.lifecycle.viewModelScope
34
import com.lukaslechner.coroutineusecasesonandroid.base.BaseViewModel
5+
import kotlinx.coroutines.launch
46

57
class ContinueCoroutineWhenUserLeavesScreenViewModel(
68
private var repository: AndroidVersionRepository
79
) : BaseViewModel<UiState>() {
810

11+
// more information in this blogpost about "Coroutines & Patterns for work that shouldn't
12+
// be cancelled" =>
13+
// https://medium.com/androiddevelopers/coroutines-patterns-for-work-that-shouldnt-be-cancelled-e26c40f142ad
14+
915
fun loadData() {
16+
uiState.value = UiState.Loading.LoadFromDb
17+
18+
viewModelScope.launch {
19+
val localVersions = repository.getLocalAndroidVersions()
20+
if (localVersions.isNotEmpty()) {
21+
uiState.value =
22+
UiState.Success(DataSource.Database, localVersions)
23+
} else {
24+
uiState.value =
25+
UiState.Error(DataSource.Database, "Database empty!")
26+
}
1027

28+
uiState.value = UiState.Loading.LoadFromNetwork
29+
30+
try {
31+
uiState.value = UiState.Success(
32+
DataSource.Network,
33+
repository.loadAndStoreRemoteAndroidVersions()
34+
)
35+
} catch (exception: Exception) {
36+
uiState.value = UiState.Error(DataSource.Network, "Network Request failed")
37+
}
38+
}
1139
}
1240

1341
fun clearDatabase() {
14-
42+
repository.clearDatabase()
1543
}
1644
}
1745

0 commit comments

Comments
 (0)