Fix: Reorder feeds (#786)

* Fix: Reorder feeds

* Addressing @gemini-code-assist comment

* Convert feeds.items to ImmutableList
This commit is contained in:
Cuong-Tran 2025-03-25 15:22:18 +07:00 committed by GitHub
parent 259a00ebaf
commit f0d9eb0a61
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 17 additions and 6 deletions

View file

@ -10,6 +10,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.runtime.toMutableStateList
import androidx.compose.ui.Modifier
import eu.kanade.presentation.browse.components.FeedOrderListItem
import eu.kanade.tachiyomi.ui.browse.feed.FeedScreenState
@ -39,7 +40,7 @@ fun FeedOrderScreen(
val lazyListState = rememberLazyListState()
val feeds = state.items
val feedsState = remember { feeds.toMutableList() }
val feedsState = remember { feeds.toMutableStateList() }
val reorderableState = rememberReorderableLazyListState(lazyListState) { from, to ->
val item = feedsState.removeAt(from.index)
feedsState.add(to.index, item)

View file

@ -10,6 +10,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.runtime.toMutableStateList
import androidx.compose.ui.Modifier
import eu.kanade.presentation.browse.components.FeedOrderListItem
import eu.kanade.presentation.components.AppBar
@ -60,7 +61,7 @@ fun SourceFeedOrderScreen(
val feeds = state.items
.filterIsInstance<SourceFeedUI.SourceSavedSearch>()
val feedsState = remember { feeds.toMutableList() }
val feedsState = remember { feeds.toMutableStateList() }
val reorderableState = rememberReorderableLazyListState(lazyListState, paddingValues) { from, to ->
val item = feedsState.removeAt(from.index)
feedsState.add(to.index, item)

View file

@ -93,7 +93,10 @@ open class FeedScreenModel(
}
mutableState.update { state ->
state.copy(
items = items,
items = items
// KMK -->
.toImmutableList(),
// KMK <--
)
}
getFeed(items)
@ -108,7 +111,10 @@ open class FeedScreenModel(
val newItems = state.value.items?.map { it.copy(results = null) } ?: return@launchIO
mutableState.update { state ->
state.copy(
items = newItems,
items = newItems
// KMK -->
.toImmutableList(),
// KMK <--
)
}
getFeed(newItems)
@ -306,7 +312,10 @@ open class FeedScreenModel(
mutableState.update { state ->
state.copy(
items = state.items?.map { if (it.feed.id == result.feed.id) result else it },
items = state.items?.map { if (it.feed.id == result.feed.id) result else it }
// KMK -->
?.toImmutableList(),
// KMK <--
)
}
}
@ -379,7 +388,7 @@ open class FeedScreenModel(
data class FeedScreenState(
val dialog: FeedScreenModel.Dialog? = null,
val items: List<FeedItemUI>? = null,
val items: ImmutableList<FeedItemUI>? = null,
) {
val isLoading
get() = items == null