Fix: Reorder feeds (#786)
* Fix: Reorder feeds * Addressing @gemini-code-assist comment * Convert feeds.items to ImmutableList
This commit is contained in:
parent
543109f380
commit
8786d8b43a
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.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.runtime.toMutableStateList
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import eu.kanade.presentation.browse.components.FeedOrderListItem
|
import eu.kanade.presentation.browse.components.FeedOrderListItem
|
||||||
import eu.kanade.tachiyomi.ui.browse.feed.FeedScreenState
|
import eu.kanade.tachiyomi.ui.browse.feed.FeedScreenState
|
||||||
|
|
@ -39,7 +40,7 @@ fun FeedOrderScreen(
|
||||||
val lazyListState = rememberLazyListState()
|
val lazyListState = rememberLazyListState()
|
||||||
val feeds = state.items
|
val feeds = state.items
|
||||||
|
|
||||||
val feedsState = remember { feeds.toMutableList() }
|
val feedsState = remember { feeds.toMutableStateList() }
|
||||||
val reorderableState = rememberReorderableLazyListState(lazyListState) { from, to ->
|
val reorderableState = rememberReorderableLazyListState(lazyListState) { from, to ->
|
||||||
val item = feedsState.removeAt(from.index)
|
val item = feedsState.removeAt(from.index)
|
||||||
feedsState.add(to.index, item)
|
feedsState.add(to.index, item)
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.runtime.toMutableStateList
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import eu.kanade.presentation.browse.components.FeedOrderListItem
|
import eu.kanade.presentation.browse.components.FeedOrderListItem
|
||||||
import eu.kanade.presentation.components.AppBar
|
import eu.kanade.presentation.components.AppBar
|
||||||
|
|
@ -60,7 +61,7 @@ fun SourceFeedOrderScreen(
|
||||||
val feeds = state.items
|
val feeds = state.items
|
||||||
.filterIsInstance<SourceFeedUI.SourceSavedSearch>()
|
.filterIsInstance<SourceFeedUI.SourceSavedSearch>()
|
||||||
|
|
||||||
val feedsState = remember { feeds.toMutableList() }
|
val feedsState = remember { feeds.toMutableStateList() }
|
||||||
val reorderableState = rememberReorderableLazyListState(lazyListState, paddingValues) { from, to ->
|
val reorderableState = rememberReorderableLazyListState(lazyListState, paddingValues) { from, to ->
|
||||||
val item = feedsState.removeAt(from.index)
|
val item = feedsState.removeAt(from.index)
|
||||||
feedsState.add(to.index, item)
|
feedsState.add(to.index, item)
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,10 @@ open class FeedScreenModel(
|
||||||
}
|
}
|
||||||
mutableState.update { state ->
|
mutableState.update { state ->
|
||||||
state.copy(
|
state.copy(
|
||||||
items = items,
|
items = items
|
||||||
|
// KMK -->
|
||||||
|
.toImmutableList(),
|
||||||
|
// KMK <--
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
getFeed(items)
|
getFeed(items)
|
||||||
|
|
@ -108,7 +111,10 @@ open class FeedScreenModel(
|
||||||
val newItems = state.value.items?.map { it.copy(results = null) } ?: return@launchIO
|
val newItems = state.value.items?.map { it.copy(results = null) } ?: return@launchIO
|
||||||
mutableState.update { state ->
|
mutableState.update { state ->
|
||||||
state.copy(
|
state.copy(
|
||||||
items = newItems,
|
items = newItems
|
||||||
|
// KMK -->
|
||||||
|
.toImmutableList(),
|
||||||
|
// KMK <--
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
getFeed(newItems)
|
getFeed(newItems)
|
||||||
|
|
@ -306,7 +312,10 @@ open class FeedScreenModel(
|
||||||
|
|
||||||
mutableState.update { state ->
|
mutableState.update { state ->
|
||||||
state.copy(
|
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(
|
data class FeedScreenState(
|
||||||
val dialog: FeedScreenModel.Dialog? = null,
|
val dialog: FeedScreenModel.Dialog? = null,
|
||||||
val items: List<FeedItemUI>? = null,
|
val items: ImmutableList<FeedItemUI>? = null,
|
||||||
) {
|
) {
|
||||||
val isLoading
|
val isLoading
|
||||||
get() = items == null
|
get() = items == null
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue