diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/main/SearchFilter.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/main/SearchFilter.kt
index ac56be1339..e27db9f718 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/main/SearchFilter.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/main/SearchFilter.kt
@@ -22,7 +22,6 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
@@ -35,14 +34,11 @@ import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.unit.dp
import arrow.core.raise.ensure
import com.hippo.ehviewer.R
-import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhTagDatabase
import com.hippo.ehviewer.client.EhUtils
import com.hippo.ehviewer.client.data.GalleryInfo.Companion.S_LANG_TAGS
-import com.hippo.ehviewer.collectAsState
import com.hippo.ehviewer.ui.tools.DialogState
import com.hippo.ehviewer.ui.tools.DropdownFilterChip
-import com.hippo.ehviewer.ui.tools.thenIf
import com.hippo.ehviewer.util.toIntOrDefault
import kotlinx.coroutines.launch
@@ -72,7 +68,6 @@ fun SearchFilter(
) = Column(modifier) {
val scope = rememberCoroutineScope()
val context = LocalContext.current
- val animateItems by Settings.animateItems.collectAsState()
fun isCategoryChecked(bit: Int) = category and bit != 0
val categories = remember(category) { categoryTable.sortedBy { !isCategoryChecked(it.first) } }
LazyRow(
@@ -87,7 +82,7 @@ fun SearchFilter(
selected = isCategoryChecked(it.first),
onClick = { onCategoryChange(category xor it.first) },
label = { Text(text = stringResource(id = it.second)) },
- modifier = Modifier.thenIf(animateItems) { animateItem() },
+ modifier = Modifier.animateItem(),
)
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt
index c48dd41d46..3d3dae3982 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt
@@ -116,7 +116,6 @@ import com.hippo.ehviewer.ui.tools.HapticFeedbackType
import com.hippo.ehviewer.ui.tools.asyncState
import com.hippo.ehviewer.ui.tools.rememberHapticFeedback
import com.hippo.ehviewer.ui.tools.rememberInVM
-import com.hippo.ehviewer.ui.tools.thenIf
import com.hippo.ehviewer.util.mapToLongArray
import com.hippo.ehviewer.util.takeAndClear
import com.jamal.composeprefs3.ui.ifTrueThen
@@ -143,7 +142,6 @@ fun AnimatedVisibilityScope.DownloadsScreen(navigator: DestinationsNavigator) =
var invalidateKey by rememberSaveable { mutableStateOf(false) }
var searchBarExpanded by rememberSaveable { mutableStateOf(false) }
var searchBarOffsetY by remember { mutableIntStateOf(0) }
- val animateItems by Settings.animateItems.collectAsState()
var fabExpanded by remember { mutableStateOf(false) }
var fabHidden by remember { mutableStateOf(false) }
@@ -364,7 +362,6 @@ fun AnimatedVisibilityScope.DownloadsScreen(navigator: DestinationsNavigator) =
reorderableLabelState,
id,
enabled = editEnable,
- animateItemModifier = Modifier.thenIf(animateItems) { animateItem() },
) { isDragging ->
SwipeToDismissBox(
state = dismissState,
@@ -560,7 +557,7 @@ fun AnimatedVisibilityScope.DownloadsScreen(navigator: DestinationsNavigator) =
onClick = ::onItemClick.partially1(info),
onLongClick = { navigate(info.galleryInfo.asDst()) },
info = info,
- modifier = Modifier.thenIf(animateItems) { animateItem() },
+ modifier = Modifier.animateItem(),
showLanguage = false,
)
}
@@ -575,7 +572,7 @@ fun AnimatedVisibilityScope.DownloadsScreen(navigator: DestinationsNavigator) =
val checked = info.gid in checkedInfoMap
CheckableItem(
checked = checked,
- modifier = Modifier.thenIf(animateItems) { animateItem() },
+ modifier = Modifier.animateItem(),
) { interactionSource ->
DownloadCard(
onClick = {
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/FavoritesScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/FavoritesScreen.kt
index b92af7937c..2d11d2fc12 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/FavoritesScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/FavoritesScreen.kt
@@ -83,7 +83,6 @@ import com.hippo.ehviewer.ui.tools.EmptyWindowInsets
import com.hippo.ehviewer.ui.tools.asyncState
import com.hippo.ehviewer.ui.tools.foldToLoadResult
import com.hippo.ehviewer.ui.tools.rememberInVM
-import com.hippo.ehviewer.ui.tools.thenIf
import com.hippo.ehviewer.util.mapToLongArray
import com.hippo.ehviewer.util.takeAndClear
import com.ramcosta.composedestinations.annotation.Destination
@@ -105,7 +104,6 @@ fun AnimatedVisibilityScope.FavouritesScreen(navigator: DestinationsNavigator) =
// Immutables
val localFavName = stringResource(R.string.local_favorites)
val cloudFavName = stringResource(R.string.cloud_favorites)
- val animateItems by Settings.animateItems.collectAsState()
val hasSignedIn by Settings.hasSignedIn.collectAsState()
// Meta State
@@ -284,7 +282,7 @@ fun AnimatedVisibilityScope.FavouritesScreen(navigator: DestinationsNavigator) =
val checked = info.gid in checkedInfoMap
CheckableItem(
checked = checked,
- modifier = Modifier.thenIf(animateItems) { animateItem() },
+ modifier = Modifier.animateItem(),
) { interactionSource ->
GalleryInfoListItem(
onClick = {
@@ -313,7 +311,7 @@ fun AnimatedVisibilityScope.FavouritesScreen(navigator: DestinationsNavigator) =
val checked = info.gid in checkedInfoMap
CheckableItem(
checked = checked,
- modifier = Modifier.thenIf(animateItems) { animateItem() },
+ modifier = Modifier.animateItem(),
) { interactionSource ->
GalleryInfoGridItem(
onClick = {
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryCommentsScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryCommentsScreen.kt
index c7d0f0c78e..3c8dfc1a59 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryCommentsScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryCommentsScreen.kt
@@ -99,7 +99,6 @@ import com.hippo.ehviewer.ui.tools.animateFloatMergePredictiveBackAsState
import com.hippo.ehviewer.ui.tools.normalizeSpan
import com.hippo.ehviewer.ui.tools.rememberBBCodeTextToolbar
import com.hippo.ehviewer.ui.tools.snackBarPadding
-import com.hippo.ehviewer.ui.tools.thenIf
import com.hippo.ehviewer.ui.tools.toBBCode
import com.hippo.ehviewer.ui.tools.updateSpan
import com.hippo.ehviewer.util.ReadableTime
@@ -173,7 +172,6 @@ fun AnimatedVisibilityScope.GalleryCommentsScreen(gid: Long, navigator: Destinat
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior()
var commenting by rememberSaveable { mutableStateOf(false) }
val animationProgress by animateFloatMergePredictiveBackAsState(enable = commenting) { commenting = false }
- val animateItems by Settings.animateItems.collectAsState()
val galleryDetail = remember { detailCache[gid]!! }
val userCommentBackField = remember { mutableStateOf(TextFieldValue()) }
@@ -390,7 +388,7 @@ fun AnimatedVisibilityScope.GalleryCommentsScreen(gid: Long, navigator: Destinat
}()
GalleryCommentCard(
- modifier = Modifier.thenIf(animateItems) { animateItem() },
+ modifier = Modifier.animateItem(),
comment = item,
onUserClick = {
navigate(
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt
index bf71900299..525ae87ea6 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt
@@ -119,7 +119,6 @@ import com.hippo.ehviewer.ui.tools.foldToLoadResult
import com.hippo.ehviewer.ui.tools.rememberHapticFeedback
import com.hippo.ehviewer.ui.tools.rememberInVM
import com.hippo.ehviewer.ui.tools.rememberMutableStateInDataStore
-import com.hippo.ehviewer.ui.tools.thenIf
import com.hippo.ehviewer.util.FavouriteStatusRouter
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootGraph
@@ -160,7 +159,6 @@ fun AnimatedVisibilityScope.GalleryListScreen(lub: ListUrlBuilder, navigator: De
var urlBuilder by rememberSaveable(lub) { mutableStateOf(lub) }
var searchBarExpanded by rememberSaveable { mutableStateOf(false) }
var searchBarOffsetY by remember { mutableIntStateOf(0) }
- val animateItems by Settings.animateItems.collectAsState()
var category by rememberMutableStateInDataStore("SearchCategory") { EhUtils.ALL_CATEGORY }
var advancedSearchOption by rememberMutableStateInDataStore("AdvancedSearchOption") { AdvancedSearchOption() }
@@ -364,7 +362,6 @@ fun AnimatedVisibilityScope.GalleryListScreen(lub: ListUrlBuilder, navigator: De
ReorderableItem(
reorderableLazyListState,
item.id!!,
- animateItemModifier = Modifier.thenIf(animateItems) { animateItem() },
) { isDragging ->
// Not using rememberSwipeToDismissBoxState to prevent LazyColumn from reusing it
// SQLite may reuse ROWIDs from previously deleted rows so they'll have the same key
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/HistoryScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/HistoryScreen.kt
index 2a017f2ac6..4c6ad7463c 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/HistoryScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/HistoryScreen.kt
@@ -59,7 +59,6 @@ import com.hippo.ehviewer.ui.main.plus
import com.hippo.ehviewer.ui.tools.Await
import com.hippo.ehviewer.ui.tools.FastScrollLazyColumn
import com.hippo.ehviewer.ui.tools.rememberInVM
-import com.hippo.ehviewer.ui.tools.thenIf
import com.hippo.ehviewer.util.FavouriteStatusRouter
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootGraph
@@ -74,7 +73,6 @@ import kotlinx.coroutines.launch
fun AnimatedVisibilityScope.HistoryScreen(navigator: DestinationsNavigator) = Screen(navigator) {
val title = stringResource(id = R.string.history)
val hint = stringResource(R.string.search_bar_hint, title)
- val animateItems by Settings.animateItems.collectAsState()
var searchBarExpanded by rememberSaveable { mutableStateOf(false) }
var searchBarOffsetY by remember { mutableIntStateOf(0) }
@@ -158,7 +156,7 @@ fun AnimatedVisibilityScope.HistoryScreen(navigator: DestinationsNavigator) = Sc
SwipeToDismissBox(
state = dismissState,
backgroundContent = {},
- modifier = Modifier.thenIf(animateItems) { animateItem() },
+ modifier = Modifier.animateItem(),
enableDismissFromStartToEnd = false,
) {
GalleryInfoListItem(
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/SearchBarScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/SearchBarScreen.kt
index 8bf1a20cbd..2bcaede897 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/SearchBarScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/SearchBarScreen.kt
@@ -65,7 +65,6 @@ import com.hippo.ehviewer.R
import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhTagDatabase
import com.hippo.ehviewer.client.data.TagNamespace
-import com.hippo.ehviewer.collectAsState
import com.hippo.ehviewer.dao.Search
import com.hippo.ehviewer.dao.SearchDao
import com.hippo.ehviewer.ui.LocalNavDrawerState
@@ -120,7 +119,6 @@ fun SearchBarScreen(
val mSearchDatabase = searchDatabase.searchDao()
val scope = rememberCoroutineScope { Dispatchers.IO }
val context = LocalContext.current
- val animateItems by Settings.animateItems.collectAsState()
class TagSuggestion(
override val hint: String?,
@@ -294,7 +292,7 @@ fun SearchBarScreen(
}
},
colors = ListItemDefaults.colors(containerColor = Color.Transparent),
- modifier = Modifier.clickable { it.onClick() }.thenIf(animateItems) { animateItem() },
+ modifier = Modifier.clickable { it.onClick() }.animateItem(),
)
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
index fb975d91ff..9a862bffd4 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
@@ -196,13 +196,6 @@ fun AdvancedScreen(navigator: DestinationsNavigator) {
title = stringResource(id = R.string.preload_thumb_aggressively),
value = Settings::preloadThumbAggressively,
)
- var animateItems by Settings.animateItems.asMutableState()
- SwitchPref(
- checked = animateItems,
- onMutate = { animateItems = !animateItems },
- title = stringResource(id = R.string.animate_items),
- summary = stringResource(id = R.string.animate_items_summary),
- )
val exportFailed = stringResource(id = R.string.settings_advanced_export_data_failed)
LauncherPreference(
title = stringResource(id = R.string.settings_advanced_export_data),
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/FilterScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/FilterScreen.kt
index 4f8a611644..6711d4f1c7 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/FilterScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/FilterScreen.kt
@@ -53,17 +53,14 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.unit.dp
import com.hippo.ehviewer.R
-import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhFilter
import com.hippo.ehviewer.client.EhFilter.forget
import com.hippo.ehviewer.client.EhFilter.remember
import com.hippo.ehviewer.client.EhFilter.trigger
-import com.hippo.ehviewer.collectAsState
import com.hippo.ehviewer.dao.Filter
import com.hippo.ehviewer.dao.FilterMode
import com.hippo.ehviewer.ui.Screen
import com.hippo.ehviewer.ui.tools.Await
-import com.hippo.ehviewer.ui.tools.thenIf
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootGraph
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
@@ -79,7 +76,6 @@ fun AnimatedVisibilityScope.FilterScreen(navigator: DestinationsNavigator) = Scr
val allFilterMap = remember { async { EhFilter.filters.await().groupByToObserved { it.mode } } }
val textIsEmpty = stringResource(R.string.text_is_empty)
val labelExist = stringResource(R.string.label_text_exist)
- val animateItems by Settings.animateItems.collectAsState()
fun addFilter() {
launch {
@@ -231,7 +227,7 @@ fun AnimatedVisibilityScope.FilterScreen(navigator: DestinationsNavigator) = Scr
item(key = filterMode) {
Text(
text = stringResource(id = title),
- modifier = Modifier.padding(horizontal = 24.dp, vertical = 8.dp).thenIf(animateItems) { animateItem() },
+ modifier = Modifier.padding(horizontal = 24.dp, vertical = 8.dp).animateItem(),
color = MaterialTheme.colorScheme.tertiary,
style = MaterialTheme.typography.titleMedium,
)
@@ -239,7 +235,7 @@ fun AnimatedVisibilityScope.FilterScreen(navigator: DestinationsNavigator) = Scr
items(filters, key = { requireNotNull(it.id) }) { filter ->
val filterCheckBoxRecomposeScope = currentRecomposeScope
Row(
- modifier = Modifier.fillMaxWidth().thenIf(animateItems) { animateItem() }.clickable { filter.trigger { filterCheckBoxRecomposeScope.invalidate() } },
+ modifier = Modifier.fillMaxWidth().animateItem().clickable { filter.trigger { filterCheckBoxRecomposeScope.invalidate() } },
verticalAlignment = Alignment.CenterVertically,
) {
Checkbox(
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 026866f4dc..ee92c0c821 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -493,8 +493,6 @@
詳細モードのサムネイルの大きさ
アカウント
サムネイルを積極的にプリロードする
- リスト項目のアニメーション
- クラッシュやフレームドロップが発生する場合はこれを無効化してください
自動で更新を確認する
しない
毎日
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index ff08c399c8..508f003190 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -491,8 +491,6 @@
详情模式下缩略图大小
账户
激进地预载缩略图
- 列表项目动画
- 如遇崩溃/掉帧请尝试禁用此项
自动检查更新
从不
每天
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 78a67c2a3c..2cd46d3b73 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -477,8 +477,6 @@
詳情模式下縮圖大小
帳號
積極地預載入縮圖
- 列表項目動畫
- 如遇崩潰/低幀率請嘗試停用此項
自動檢查更新
從不
每天
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9f42976d4d..c38340b653 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -510,8 +510,6 @@
Thumb size in detail mode
Account
Preload thumbs aggressively
- List item animations
- Try disabling this if you are facing crashes / frame drops
Automatically check for updates
Never
Daily