Fix: Reorder feeds (#786)
* Fix: Reorder feeds * Addressing @gemini-code-assist comment * Convert feeds.items to ImmutableList
This commit is contained in:
parent
259a00ebaf
commit
f0d9eb0a61
3 changed files with 17 additions and 6 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue