Fix language in source filter list jumping to top incorrectly

Fixes #9068

(cherry picked from commit f5ad95d78a857c226d53e010e52e8563ecd38f0d)

# Conflicts:
#	app/src/main/java/eu/kanade/presentation/browse/SourcesFilterScreen.kt
This commit is contained in:
arkon
2023-05-03 15:07:41 -04:00
committed by Jobobby04
parent 4baa396aa6
commit 18f65d4ca4
4 changed files with 44 additions and 36 deletions
@@ -74,7 +74,7 @@ private fun SourcesFilterContent(
state.items.forEach { (language, sources) ->
val enabled = language in state.enabledLanguages
item(
key = language.hashCode(),
key = language,
contentType = "source-filter-header",
) {
SourcesFilterHeader(
@@ -84,35 +84,36 @@ private fun SourcesFilterContent(
onClickItem = onClickLanguage,
)
}
if (!enabled) return@forEach
// SY -->
item(
key = "toggle-$language",
contentType = "source-filter-toggle",
) {
val toggleEnabled = remember(state.disabledSources) {
sources.none { it.id.toString() in state.disabledSources }
if (enabled) {
// SY -->
item(
key = "toggle-$language",
contentType = "source-filter-toggle",
) {
val toggleEnabled = remember(state.disabledSources) {
sources.none { it.id.toString() in state.disabledSources }
}
SourcesFilterToggle(
modifier = Modifier.animateItemPlacement(),
isEnabled = toggleEnabled,
onClickItem = {
onClickSources(!toggleEnabled, sources)
},
)
}
// SY <--
items(
items = sources,
key = { "source-filter-${it.key()}" },
contentType = { "source-filter-item" },
) { source ->
SourcesFilterItem(
modifier = Modifier.animateItemPlacement(),
source = source,
enabled = "${source.id}" !in state.disabledSources,
onClickItem = onClickSource,
)
}
SourcesFilterToggle(
modifier = Modifier.animateItemPlacement(),
isEnabled = toggleEnabled,
onClickItem = {
onClickSources(!toggleEnabled, sources)
},
)
}
// SY <--
items(
items = sources,
key = { "source-filter-${it.key()}" },
contentType = { "source-filter-item" },
) { source ->
SourcesFilterItem(
modifier = Modifier.animateItemPlacement(),
source = source,
enabled = "${source.id}" !in state.disabledSources,
onClickItem = onClickSource,
)
}
}
}