Skip to content

Commit d7fd3e0

Browse files
committed
Refresh again in case of failing for language change
1 parent 305110a commit d7fd3e0

3 files changed

Lines changed: 12 additions & 10 deletions

File tree

common/src/main/java/com/sample/tmdb/common/base/BaseViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ open class BaseViewModel<T>(
77
languageRepository: LanguageRepository? = null,
88
) : CoreBaseViewModel<T>(languageRepository) {
99

10-
override fun refresh(isUserRefresh: Boolean) {
11-
execute {
10+
override fun refresh(isUserRefresh: Boolean, languageCode: String?) {
11+
execute(languageCode) {
1212
repository.getResult(isUserRefresh)
1313
}
1414
}

common/src/main/java/com/sample/tmdb/common/base/BaseViewModelWithId.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ open class BaseViewModelWithId<T, S>(
1212
refresh()
1313
}
1414

15-
override fun refresh(isUserRefresh: Boolean) {
16-
execute {
15+
override fun refresh(isUserRefresh: Boolean, languageCode: String?) {
16+
execute(languageCode) {
1717
repository.getResult(id, isUserRefresh)
1818
}
1919
}

common/src/main/java/com/sample/tmdb/common/base/CoreBaseViewModel.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,21 +32,20 @@ abstract class CoreBaseViewModel<T>(languageRepository: LanguageRepository? = nu
3232
lastLanguage = languageRepository?.languageCode?.value
3333
}
3434

35-
abstract fun refresh(isUserRefresh: Boolean = false)
35+
abstract fun refresh(isUserRefresh: Boolean = false, languageCode: String? = null)
3636

37-
protected fun execute(block: () -> Flow<Async<T>>) {
38-
block.invoke().onEach { repoResource -> reduce(repoResource) }
37+
protected fun execute(languageCode: String? = null, block: () -> Flow<Async<T>>) {
38+
block.invoke().onEach { repoResource -> reduce(repoResource, languageCode) }
3939
.launchIn(viewModelScope)
4040
}
4141

4242
fun refreshOnLanguageChange(language: String) {
4343
if (language != lastLanguage) {
44-
refresh(true)
45-
lastLanguage = language
44+
refresh(true, language)
4645
}
4746
}
4847

49-
private suspend fun reduce(resource: Async<T>) {
48+
private suspend fun reduce(resource: Async<T>, languageCode: String? = null) {
5049
when (resource) {
5150
is Async.Loading -> {
5251
_state.update {
@@ -60,6 +59,9 @@ abstract class CoreBaseViewModel<T>(languageRepository: LanguageRepository? = nu
6059

6160
is Async.Success -> {
6261
_state.value = ViewState(items = resource.data)
62+
languageCode?.let {
63+
lastLanguage = it
64+
}
6365
}
6466

6567
is Async.Error -> {

0 commit comments

Comments
 (0)