Kaynağa Gözat

Address more Compose lint warnings

arkon 1 yıl önce
ebeveyn
işleme
2c032ff70d
42 değiştirilmiş dosya ile 238 ekleme ve 193 silme
  1. 1 1
      app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt
  2. 37 34
      app/src/main/java/eu/kanade/presentation/browse/ExtensionDetailsScreen.kt
  3. 1 1
      app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt
  4. 1 1
      app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt
  5. 1 1
      app/src/main/java/eu/kanade/presentation/browse/MigrateMangaScreen.kt
  6. 1 1
      app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt
  7. 2 2
      app/src/main/java/eu/kanade/presentation/browse/SourcesFilterScreen.kt
  8. 1 1
      app/src/main/java/eu/kanade/presentation/browse/components/BaseSourceItem.kt
  9. 38 25
      app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt
  10. 2 1
      app/src/main/java/eu/kanade/presentation/category/CategoryScreen.kt
  11. 1 1
      app/src/main/java/eu/kanade/presentation/category/components/CategoryListItem.kt
  12. 1 1
      app/src/main/java/eu/kanade/presentation/components/AdaptiveSheet.kt
  13. 2 1
      app/src/main/java/eu/kanade/presentation/components/AppBar.kt
  14. 1 1
      app/src/main/java/eu/kanade/presentation/components/RelativeDateHeader.kt
  15. 3 2
      app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt
  16. 4 2
      app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt
  17. 2 1
      app/src/main/java/eu/kanade/presentation/history/HistoryScreen.kt
  18. 0 13
      app/src/main/java/eu/kanade/presentation/history/HistoryUiModelProviders.kt
  19. 1 1
      app/src/main/java/eu/kanade/presentation/history/components/HistoryItem.kt
  20. 2 1
      app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt
  21. 3 2
      app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt
  22. 2 1
      app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt
  23. 13 16
      app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt
  24. 44 41
      app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt
  25. 2 1
      app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMainScreen.kt
  26. 2 1
      app/src/main/java/eu/kanade/presentation/more/settings/screen/about/OpenSourceLibraryLicenseScreen.kt
  27. 2 1
      app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt
  28. 2 1
      app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/BackupSchemaScreen.kt
  29. 2 1
      app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt
  30. 37 20
      app/src/main/java/eu/kanade/presentation/reader/appbars/ReaderAppBars.kt
  31. 2 1
      app/src/main/java/eu/kanade/presentation/reader/settings/ReaderSettingsDialog.kt
  32. 2 2
      app/src/main/java/eu/kanade/presentation/track/TrackInfoDialogHome.kt
  33. 1 1
      app/src/main/java/eu/kanade/presentation/track/TrackInfoDialogSelector.kt
  34. 4 3
      app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt
  35. 1 1
      app/src/main/java/eu/kanade/presentation/updates/UpdatesUiItem.kt
  36. 3 0
      app/src/main/java/eu/kanade/presentation/util/Navigator.kt
  37. 4 3
      app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt
  38. 2 1
      app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseTab.kt
  39. 2 1
      app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsTab.kt
  40. 2 1
      app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceTab.kt
  41. 2 1
      app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt
  42. 2 1
      app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt

@@ -146,7 +146,7 @@ fun BrowseSourceContent(
 }
 
 @Composable
-fun MissingSourceScreen(
+internal fun MissingSourceScreen(
     source: StubSource,
     navigateUp: () -> Unit,
 ) {

+ 37 - 34
app/src/main/java/eu/kanade/presentation/browse/ExtensionDetailsScreen.kt

@@ -55,6 +55,7 @@ import eu.kanade.tachiyomi.extension.model.Extension
 import eu.kanade.tachiyomi.source.ConfigurableSource
 import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreenModel
 import eu.kanade.tachiyomi.util.system.LocaleHelper
+import kotlinx.collections.immutable.persistentListOf
 import tachiyomi.presentation.core.components.ScrollbarLazyColumn
 import tachiyomi.presentation.core.components.material.Scaffold
 import tachiyomi.presentation.core.components.material.padding
@@ -80,40 +81,42 @@ fun ExtensionDetailsScreen(
                 navigateUp = navigateUp,
                 actions = {
                     AppBarActions(
-                        actions = buildList {
-                            if (state.extension?.isUnofficial == false) {
-                                add(
-                                    AppBar.Action(
-                                        title = stringResource(R.string.whats_new),
-                                        icon = Icons.Outlined.History,
-                                        onClick = onClickWhatsNew,
-                                    ),
-                                )
-                                add(
-                                    AppBar.Action(
-                                        title = stringResource(R.string.action_faq_and_guides),
-                                        icon = Icons.AutoMirrored.Outlined.HelpOutline,
-                                        onClick = onClickReadme,
+                        actions = persistentListOf<AppBar.AppBarAction>().builder()
+                            .apply {
+                                if (state.extension?.isUnofficial == false) {
+                                    add(
+                                        AppBar.Action(
+                                            title = stringResource(R.string.whats_new),
+                                            icon = Icons.Outlined.History,
+                                            onClick = onClickWhatsNew,
+                                        ),
+                                    )
+                                    add(
+                                        AppBar.Action(
+                                            title = stringResource(R.string.action_faq_and_guides),
+                                            icon = Icons.AutoMirrored.Outlined.HelpOutline,
+                                            onClick = onClickReadme,
+                                        ),
+                                    )
+                                }
+                                addAll(
+                                    listOf(
+                                        AppBar.OverflowAction(
+                                            title = stringResource(R.string.action_enable_all),
+                                            onClick = onClickEnableAll,
+                                        ),
+                                        AppBar.OverflowAction(
+                                            title = stringResource(R.string.action_disable_all),
+                                            onClick = onClickDisableAll,
+                                        ),
+                                        AppBar.OverflowAction(
+                                            title = stringResource(R.string.pref_clear_cookies),
+                                            onClick = onClickClearCookies,
+                                        ),
                                     ),
                                 )
                             }
-                            addAll(
-                                listOf(
-                                    AppBar.OverflowAction(
-                                        title = stringResource(R.string.action_enable_all),
-                                        onClick = onClickEnableAll,
-                                    ),
-                                    AppBar.OverflowAction(
-                                        title = stringResource(R.string.action_disable_all),
-                                        onClick = onClickDisableAll,
-                                    ),
-                                    AppBar.OverflowAction(
-                                        title = stringResource(R.string.pref_clear_cookies),
-                                        onClick = onClickClearCookies,
-                                    ),
-                                ),
-                            )
-                        },
+                            .build(),
                     )
                 },
                 scrollBehavior = scrollBehavior,
@@ -320,10 +323,10 @@ private fun DetailsHeader(
 
 @Composable
 private fun InfoText(
-    modifier: Modifier,
     primaryText: String,
-    primaryTextStyle: TextStyle = MaterialTheme.typography.bodyLarge,
     secondaryText: String,
+    modifier: Modifier = Modifier,
+    primaryTextStyle: TextStyle = MaterialTheme.typography.bodyLarge,
     onClick: (() -> Unit)? = null,
 ) {
     val interactionSource = remember { MutableInteractionSource() }
@@ -363,10 +366,10 @@ private fun InfoDivider() {
 
 @Composable
 private fun SourceSwitchPreference(
-    modifier: Modifier = Modifier,
     source: ExtensionSourceItem,
     onClickSourcePreferences: (sourceId: Long) -> Unit,
     onClickSource: (sourceId: Long) -> Unit,
+    modifier: Modifier = Modifier,
 ) {
     val context = LocalContext.current
 

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt

@@ -214,12 +214,12 @@ private fun ExtensionContent(
 
 @Composable
 private fun ExtensionItem(
-    modifier: Modifier = Modifier,
     item: ExtensionUiModel.Item,
     onClickItem: (Extension) -> Unit,
     onLongClickItem: (Extension) -> Unit,
     onClickItemCancel: (Extension) -> Unit,
     onClickItemAction: (Extension) -> Unit,
+    modifier: Modifier = Modifier,
 ) {
     val (extension, installStep) = item
     BaseBrowseItem(

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt

@@ -60,13 +60,13 @@ fun GlobalSearchScreen(
 
 @Composable
 internal fun GlobalSearchContent(
-    fromSourceId: Long? = null,
     items: Map<CatalogueSource, SearchItemResult>,
     contentPadding: PaddingValues,
     getManga: @Composable (Manga) -> State<Manga>,
     onClickSource: (CatalogueSource) -> Unit,
     onClickItem: (Manga) -> Unit,
     onLongClickItem: (Manga) -> Unit,
+    fromSourceId: Long? = null,
 ) {
     LazyColumn(
         contentPadding = contentPadding,

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/MigrateMangaScreen.kt

@@ -70,10 +70,10 @@ private fun MigrateMangaContent(
 
 @Composable
 private fun MigrateMangaItem(
-    modifier: Modifier = Modifier,
     manga: Manga,
     onClickItem: (Manga) -> Unit,
     onClickCover: (Manga) -> Unit,
+    modifier: Modifier = Modifier,
 ) {
     BaseMangaListItem(
         modifier = modifier,

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt

@@ -144,11 +144,11 @@ private fun MigrateSourceList(
 
 @Composable
 private fun MigrateSourceItem(
-    modifier: Modifier = Modifier,
     source: Source,
     count: Long,
     onClickItem: () -> Unit,
     onLongClickItem: () -> Unit,
+    modifier: Modifier = Modifier,
 ) {
     BaseSourceItem(
         modifier = modifier,

+ 2 - 2
app/src/main/java/eu/kanade/presentation/browse/SourcesFilterScreen.kt

@@ -94,10 +94,10 @@ private fun SourcesFilterContent(
 
 @Composable
 private fun SourcesFilterHeader(
-    modifier: Modifier,
     language: String,
     enabled: Boolean,
     onClickItem: (String) -> Unit,
+    modifier: Modifier = Modifier,
 ) {
     SwitchPreferenceWidget(
         modifier = modifier,
@@ -109,10 +109,10 @@ private fun SourcesFilterHeader(
 
 @Composable
 private fun SourcesFilterItem(
-    modifier: Modifier,
     source: Source,
     enabled: Boolean,
     onClickItem: (Source) -> Unit,
+    modifier: Modifier = Modifier,
 ) {
     BaseSourceItem(
         modifier = modifier,

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/components/BaseSourceItem.kt

@@ -16,8 +16,8 @@ import tachiyomi.presentation.core.util.secondaryItemAlpha
 
 @Composable
 fun BaseSourceItem(
-    modifier: Modifier = Modifier,
     source: Source,
+    modifier: Modifier = Modifier,
     showLanguageInContent: Boolean = true,
     onClickItem: () -> Unit = {},
     onLongClickItem: () -> Unit = {},

+ 38 - 25
app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt

@@ -20,6 +20,7 @@ import eu.kanade.presentation.components.SearchToolbar
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.source.ConfigurableSource
 import eu.kanade.tachiyomi.source.Source
+import kotlinx.collections.immutable.persistentListOf
 import tachiyomi.domain.library.model.LibraryDisplayMode
 import tachiyomi.source.local.LocalSource
 
@@ -53,32 +54,44 @@ fun BrowseSourceToolbar(
         onClickCloseSearch = navigateUp,
         actions = {
             AppBarActions(
-                actions = listOfNotNull(
-                    AppBar.Action(
-                        title = stringResource(R.string.action_display_mode),
-                        icon = if (displayMode == LibraryDisplayMode.List) {
-                            Icons.AutoMirrored.Filled.ViewList
-                        } else {
-                            Icons.Filled.ViewModule
-                        },
-                        onClick = { selectingDisplayMode = true },
-                    ),
-                    if (isLocalSource) {
-                        AppBar.OverflowAction(
-                            title = stringResource(R.string.label_help),
-                            onClick = onHelpClick,
-                        )
-                    } else {
-                        AppBar.OverflowAction(
-                            title = stringResource(R.string.action_open_in_web_view),
-                            onClick = onWebViewClick,
+                actions = persistentListOf<AppBar.AppBarAction>().builder()
+                    .apply {
+                        add(
+                            AppBar.Action(
+                                title = stringResource(R.string.action_display_mode),
+                                icon = if (displayMode == LibraryDisplayMode.List) {
+                                    Icons.AutoMirrored.Filled.ViewList
+                                } else {
+                                    Icons.Filled.ViewModule
+                                },
+                                onClick = { selectingDisplayMode = true },
+                            ),
                         )
-                    },
-                    AppBar.OverflowAction(
-                        title = stringResource(R.string.action_settings),
-                        onClick = onSettingsClick,
-                    ).takeIf { isConfigurableSource },
-                ),
+                        if (isLocalSource) {
+                            add(
+                                AppBar.OverflowAction(
+                                    title = stringResource(R.string.label_help),
+                                    onClick = onHelpClick,
+                                ),
+                            )
+                        } else {
+                            add(
+                                AppBar.OverflowAction(
+                                    title = stringResource(R.string.action_open_in_web_view),
+                                    onClick = onWebViewClick,
+                                ),
+                            )
+                        }
+                        if (isConfigurableSource) {
+                            add(
+                                AppBar.OverflowAction(
+                                    title = stringResource(R.string.action_settings),
+                                    onClick = onSettingsClick,
+                                ),
+                            )
+                        }
+                    }
+                    .build(),
             )
 
             DropdownMenu(

+ 2 - 1
app/src/main/java/eu/kanade/presentation/category/CategoryScreen.kt

@@ -19,6 +19,7 @@ import eu.kanade.presentation.components.AppBar
 import eu.kanade.presentation.components.AppBarActions
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.ui.category.CategoryScreenState
+import kotlinx.collections.immutable.persistentListOf
 import tachiyomi.domain.category.model.Category
 import tachiyomi.presentation.core.components.material.Scaffold
 import tachiyomi.presentation.core.components.material.padding
@@ -45,7 +46,7 @@ fun CategoryScreen(
                 navigateUp = navigateUp,
                 actions = {
                     AppBarActions(
-                        listOf(
+                        persistentListOf(
                             AppBar.Action(
                                 title = stringResource(R.string.action_sort),
                                 icon = Icons.Outlined.SortByAlpha,

+ 1 - 1
app/src/main/java/eu/kanade/presentation/category/components/CategoryListItem.kt

@@ -27,7 +27,6 @@ import tachiyomi.presentation.core.components.material.padding
 
 @Composable
 fun CategoryListItem(
-    modifier: Modifier = Modifier,
     category: Category,
     canMoveUp: Boolean,
     canMoveDown: Boolean,
@@ -35,6 +34,7 @@ fun CategoryListItem(
     onMoveDown: (Category) -> Unit,
     onRename: () -> Unit,
     onDelete: () -> Unit,
+    modifier: Modifier = Modifier,
 ) {
     ElevatedCard(
         modifier = modifier,

+ 1 - 1
app/src/main/java/eu/kanade/presentation/components/AdaptiveSheet.kt

@@ -71,10 +71,10 @@ fun NavigatorAdaptiveSheet(
  */
 @Composable
 fun AdaptiveSheet(
+    onDismissRequest: () -> Unit,
     modifier: Modifier = Modifier,
     tonalElevation: Dp = 1.dp,
     enableSwipeDismiss: Boolean = true,
-    onDismissRequest: () -> Unit,
     content: @Composable () -> Unit,
 ) {
     val isTabletUi = isTabletUi()

+ 2 - 1
app/src/main/java/eu/kanade/presentation/components/AppBar.kt

@@ -51,6 +51,7 @@ import androidx.compose.ui.text.style.TextOverflow
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
 import eu.kanade.tachiyomi.R
+import kotlinx.collections.immutable.ImmutableList
 import tachiyomi.presentation.core.util.clearFocusOnSoftKeyboardHide
 import tachiyomi.presentation.core.util.runOnEnterKeyPressed
 import tachiyomi.presentation.core.util.secondaryItemAlpha
@@ -184,7 +185,7 @@ fun AppBarTitle(
 
 @Composable
 fun AppBarActions(
-    actions: List<AppBar.AppBarAction>,
+    actions: ImmutableList<AppBar.AppBarAction>,
 ) {
     var showMenu by remember { mutableStateOf(false) }
 

+ 1 - 1
app/src/main/java/eu/kanade/presentation/components/RelativeDateHeader.kt

@@ -11,10 +11,10 @@ import java.util.Date
 
 @Composable
 fun RelativeDateHeader(
-    modifier: Modifier = Modifier,
     date: Date,
     relativeTime: Boolean,
     dateFormat: DateFormat,
+    modifier: Modifier = Modifier,
 ) {
     val context = LocalContext.current
     ListGroupHeader(

+ 3 - 2
app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt

@@ -28,6 +28,7 @@ import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.util.fastForEachIndexed
 import eu.kanade.tachiyomi.R
+import kotlinx.collections.immutable.ImmutableList
 import kotlinx.coroutines.launch
 import tachiyomi.presentation.core.components.HorizontalPager
 import tachiyomi.presentation.core.components.material.TabText
@@ -39,9 +40,9 @@ object TabbedDialogPaddings {
 
 @Composable
 fun TabbedDialog(
-    modifier: Modifier = Modifier,
     onDismissRequest: () -> Unit,
-    tabTitles: List<String>,
+    tabTitles: ImmutableList<String>,
+    modifier: Modifier = Modifier,
     tabOverflowMenuContent: (@Composable ColumnScope.(() -> Unit) -> Unit)? = null,
     pagerState: PagerState = rememberPagerState { tabTitles.size },
     content: @Composable (Int) -> Unit,

+ 4 - 2
app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt

@@ -21,6 +21,8 @@ import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.LocalLayoutDirection
 import androidx.compose.ui.res.stringResource
+import kotlinx.collections.immutable.ImmutableList
+import kotlinx.collections.immutable.persistentListOf
 import kotlinx.coroutines.launch
 import tachiyomi.presentation.core.components.HorizontalPager
 import tachiyomi.presentation.core.components.material.Scaffold
@@ -29,7 +31,7 @@ import tachiyomi.presentation.core.components.material.TabText
 @Composable
 fun TabbedScreen(
     @StringRes titleRes: Int,
-    tabs: List<TabContent>,
+    tabs: ImmutableList<TabContent>,
     startIndex: Int? = null,
     searchQuery: String? = null,
     onChangeSearchQuery: (String?) -> Unit = {},
@@ -97,6 +99,6 @@ data class TabContent(
     @StringRes val titleRes: Int,
     val badgeNumber: Int? = null,
     val searchEnabled: Boolean = false,
-    val actions: List<AppBar.Action> = emptyList(),
+    val actions: ImmutableList<AppBar.Action> = persistentListOf(),
     val content: @Composable (contentPadding: PaddingValues, snackbarHostState: SnackbarHostState) -> Unit,
 )

+ 2 - 1
app/src/main/java/eu/kanade/presentation/history/HistoryScreen.kt

@@ -23,6 +23,7 @@ import eu.kanade.presentation.history.components.HistoryItem
 import eu.kanade.presentation.theme.TachiyomiTheme
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.ui.history.HistoryScreenModel
+import kotlinx.collections.immutable.persistentListOf
 import tachiyomi.core.preference.InMemoryPreferenceStore
 import tachiyomi.domain.history.model.HistoryWithRelations
 import tachiyomi.presentation.core.components.FastScrollLazyColumn
@@ -51,7 +52,7 @@ fun HistoryScreen(
                 onChangeSearchQuery = onSearchQueryChange,
                 actions = {
                     AppBarActions(
-                        listOf(
+                        persistentListOf(
                             AppBar.Action(
                                 title = stringResource(R.string.pref_clear_history),
                                 icon = Icons.Outlined.DeleteSweep,

+ 0 - 13
app/src/main/java/eu/kanade/presentation/history/HistoryUiModelProviders.kt

@@ -1,13 +0,0 @@
-package eu.kanade.presentation.history
-
-import androidx.compose.ui.tooling.preview.PreviewParameterProvider
-import java.time.Instant
-import java.util.Date
-
-object HistoryUiModelProviders {
-
-    class HeadNow : PreviewParameterProvider<HistoryUiModel> {
-        override val values: Sequence<HistoryUiModel> =
-            sequenceOf(HistoryUiModel.Header(Date.from(Instant.now())))
-    }
-}

+ 1 - 1
app/src/main/java/eu/kanade/presentation/history/components/HistoryItem.kt

@@ -35,11 +35,11 @@ private val HistoryItemHeight = 96.dp
 
 @Composable
 fun HistoryItem(
-    modifier: Modifier = Modifier,
     history: HistoryWithRelations,
     onClickCover: () -> Unit,
     onClickResume: () -> Unit,
     onClickDelete: () -> Unit,
+    modifier: Modifier = Modifier,
 ) {
     Row(
         modifier = modifier

+ 2 - 1
app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt

@@ -18,6 +18,7 @@ import eu.kanade.presentation.components.TabbedDialog
 import eu.kanade.presentation.components.TabbedDialogPaddings
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.ui.library.LibrarySettingsScreenModel
+import kotlinx.collections.immutable.persistentListOf
 import tachiyomi.core.preference.TriState
 import tachiyomi.domain.category.model.Category
 import tachiyomi.domain.library.model.LibraryDisplayMode
@@ -40,7 +41,7 @@ fun LibrarySettingsDialog(
 ) {
     TabbedDialog(
         onDismissRequest = onDismissRequest,
-        tabTitles = listOf(
+        tabTitles = persistentListOf(
             stringResource(R.string.action_filter),
             stringResource(R.string.action_sort),
             stringResource(R.string.action_display),

+ 3 - 2
app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt

@@ -21,6 +21,7 @@ import eu.kanade.presentation.components.AppBar
 import eu.kanade.presentation.components.AppBarActions
 import eu.kanade.presentation.components.SearchToolbar
 import eu.kanade.tachiyomi.R
+import kotlinx.collections.immutable.persistentListOf
 import tachiyomi.presentation.core.components.Pill
 import tachiyomi.presentation.core.theme.active
 
@@ -95,7 +96,7 @@ private fun LibraryRegularToolbar(
         actions = {
             val filterTint = if (hasFilters) MaterialTheme.colorScheme.active else LocalContentColor.current
             AppBarActions(
-                listOf(
+                persistentListOf(
                     AppBar.Action(
                         title = stringResource(R.string.action_filter),
                         icon = Icons.Outlined.FilterList,
@@ -132,7 +133,7 @@ private fun LibrarySelectionToolbar(
         titleContent = { Text(text = "$selectedCount") },
         actions = {
             AppBarActions(
-                listOf(
+                persistentListOf(
                     AppBar.Action(
                         title = stringResource(R.string.action_select_all),
                         icon = Icons.Outlined.SelectAll,

+ 2 - 1
app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt

@@ -32,6 +32,7 @@ import eu.kanade.domain.manga.model.forceDownloaded
 import eu.kanade.presentation.components.TabbedDialog
 import eu.kanade.presentation.components.TabbedDialogPaddings
 import eu.kanade.tachiyomi.R
+import kotlinx.collections.immutable.persistentListOf
 import tachiyomi.core.preference.TriState
 import tachiyomi.domain.manga.model.Manga
 import tachiyomi.presentation.core.components.LabeledCheckbox
@@ -64,7 +65,7 @@ fun ChapterSettingsDialog(
 
     TabbedDialog(
         onDismissRequest = onDismissRequest,
-        tabTitles = listOf(
+        tabTitles = persistentListOf(
             stringResource(R.string.action_filter),
             stringResource(R.string.action_sort),
             stringResource(R.string.action_display),

+ 13 - 16
app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt

@@ -49,6 +49,7 @@ import eu.kanade.presentation.components.DropdownMenu
 import eu.kanade.presentation.manga.EditCoverAction
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.ui.reader.viewer.ReaderPageImageView
+import kotlinx.collections.immutable.persistentListOf
 import tachiyomi.domain.manga.model.Manga
 import tachiyomi.presentation.core.components.material.Scaffold
 import tachiyomi.presentation.core.util.clickableNoIndication
@@ -91,22 +92,18 @@ fun MangaCoverDialog(
                     Spacer(modifier = Modifier.weight(1f))
                     ActionsPill {
                         AppBarActions(
-                            actions = buildList {
-                                add(
-                                    AppBar.Action(
-                                        title = stringResource(R.string.action_share),
-                                        icon = Icons.Outlined.Share,
-                                        onClick = onShareClick,
-                                    ),
-                                )
-                                add(
-                                    AppBar.Action(
-                                        title = stringResource(R.string.action_save),
-                                        icon = Icons.Outlined.Save,
-                                        onClick = onSaveClick,
-                                    ),
-                                )
-                            },
+                            actions = persistentListOf(
+                                AppBar.Action(
+                                    title = stringResource(R.string.action_share),
+                                    icon = Icons.Outlined.Share,
+                                    onClick = onShareClick,
+                                ),
+                                AppBar.Action(
+                                    title = stringResource(R.string.action_save),
+                                    icon = Icons.Outlined.Save,
+                                    onClick = onSaveClick,
+                                ),
+                            ),
                         )
                         if (onEditClick != null) {
                             Box {

+ 44 - 41
app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt

@@ -30,6 +30,7 @@ import eu.kanade.presentation.components.DownloadDropdownMenu
 import eu.kanade.presentation.components.UpIcon
 import eu.kanade.presentation.manga.DownloadAction
 import eu.kanade.tachiyomi.R
+import kotlinx.collections.immutable.persistentListOf
 import tachiyomi.presentation.core.theme.active
 
 @Composable
@@ -72,7 +73,7 @@ fun MangaToolbar(
             actions = {
                 if (isActionMode) {
                     AppBarActions(
-                        listOf(
+                        persistentListOf(
                             AppBar.Action(
                                 title = stringResource(R.string.action_select_all),
                                 icon = Icons.Outlined.SelectAll,
@@ -98,55 +99,57 @@ fun MangaToolbar(
 
                     val filterTint = if (hasFilters) MaterialTheme.colorScheme.active else LocalContentColor.current
                     AppBarActions(
-                        actions = buildList {
-                            if (onClickDownload != null) {
+                        actions = persistentListOf<AppBar.AppBarAction>().builder()
+                            .apply {
+                                if (onClickDownload != null) {
+                                    add(
+                                        AppBar.Action(
+                                            title = stringResource(R.string.manga_download),
+                                            icon = Icons.Outlined.Download,
+                                            onClick = { downloadExpanded = !downloadExpanded },
+                                        ),
+                                    )
+                                }
                                 add(
                                     AppBar.Action(
-                                        title = stringResource(R.string.manga_download),
-                                        icon = Icons.Outlined.Download,
-                                        onClick = { downloadExpanded = !downloadExpanded },
+                                        title = stringResource(R.string.action_filter),
+                                        icon = Icons.Outlined.FilterList,
+                                        iconTint = filterTint,
+                                        onClick = onClickFilter,
                                     ),
                                 )
-                            }
-                            add(
-                                AppBar.Action(
-                                    title = stringResource(R.string.action_filter),
-                                    icon = Icons.Outlined.FilterList,
-                                    iconTint = filterTint,
-                                    onClick = onClickFilter,
-                                ),
-                            )
-                            add(
-                                AppBar.OverflowAction(
-                                    title = stringResource(R.string.action_webview_refresh),
-                                    onClick = onClickRefresh,
-                                ),
-                            )
-                            if (onClickEditCategory != null) {
-                                add(
-                                    AppBar.OverflowAction(
-                                        title = stringResource(R.string.action_edit_categories),
-                                        onClick = onClickEditCategory,
-                                    ),
-                                )
-                            }
-                            if (onClickMigrate != null) {
-                                add(
-                                    AppBar.OverflowAction(
-                                        title = stringResource(R.string.action_migrate),
-                                        onClick = onClickMigrate,
-                                    ),
-                                )
-                            }
-                            if (onClickShare != null) {
                                 add(
                                     AppBar.OverflowAction(
-                                        title = stringResource(R.string.action_share),
-                                        onClick = onClickShare,
+                                        title = stringResource(R.string.action_webview_refresh),
+                                        onClick = onClickRefresh,
                                     ),
                                 )
+                                if (onClickEditCategory != null) {
+                                    add(
+                                        AppBar.OverflowAction(
+                                            title = stringResource(R.string.action_edit_categories),
+                                            onClick = onClickEditCategory,
+                                        ),
+                                    )
+                                }
+                                if (onClickMigrate != null) {
+                                    add(
+                                        AppBar.OverflowAction(
+                                            title = stringResource(R.string.action_migrate),
+                                            onClick = onClickMigrate,
+                                        ),
+                                    )
+                                }
+                                if (onClickShare != null) {
+                                    add(
+                                        AppBar.OverflowAction(
+                                            title = stringResource(R.string.action_share),
+                                            onClick = onClickShare,
+                                        ),
+                                    )
+                                }
                             }
-                        },
+                            .build(),
                     )
                 }
             },

+ 2 - 1
app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMainScreen.kt

@@ -47,6 +47,7 @@ import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget
 import eu.kanade.presentation.util.LocalBackPress
 import eu.kanade.presentation.util.Screen
 import eu.kanade.tachiyomi.R
+import kotlinx.collections.immutable.persistentListOf
 import tachiyomi.presentation.core.components.material.Scaffold
 import cafe.adriel.voyager.core.screen.Screen as VoyagerScreen
 
@@ -88,7 +89,7 @@ object SettingsMainScreen : Screen() {
                     navigateUp = backPress::invoke,
                     actions = {
                         AppBarActions(
-                            listOf(
+                            persistentListOf(
                                 AppBar.Action(
                                     title = stringResource(R.string.action_search),
                                     icon = Icons.Outlined.Search,

+ 2 - 1
app/src/main/java/eu/kanade/presentation/more/settings/screen/about/OpenSourceLibraryLicenseScreen.kt

@@ -20,6 +20,7 @@ import eu.kanade.presentation.components.AppBar
 import eu.kanade.presentation.components.AppBarActions
 import eu.kanade.presentation.util.Screen
 import eu.kanade.tachiyomi.R
+import kotlinx.collections.immutable.persistentListOf
 import tachiyomi.presentation.core.components.material.Scaffold
 
 class OpenSourceLibraryLicenseScreen(
@@ -41,7 +42,7 @@ class OpenSourceLibraryLicenseScreen(
                     actions = {
                         if (!website.isNullOrEmpty()) {
                             AppBarActions(
-                                listOf(
+                                persistentListOf(
                                     AppBar.Action(
                                         title = stringResource(R.string.website),
                                         icon = Icons.Default.Public,

+ 2 - 1
app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt

@@ -41,6 +41,7 @@ import eu.kanade.presentation.components.AppBarActions
 import eu.kanade.presentation.util.Screen
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.util.system.toast
+import kotlinx.collections.immutable.persistentListOf
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.update
 import tachiyomi.core.util.lang.launchIO
@@ -106,7 +107,7 @@ class ClearDatabaseScreen : Screen() {
                             actions = {
                                 if (s.items.isNotEmpty()) {
                                     AppBarActions(
-                                        actions = listOf(
+                                        actions = persistentListOf(
                                             AppBar.Action(
                                                 title = stringResource(R.string.action_select_all),
                                                 icon = Icons.Outlined.SelectAll,

+ 2 - 1
app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/BackupSchemaScreen.kt

@@ -21,6 +21,7 @@ import eu.kanade.presentation.util.Screen
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.backup.models.Backup
 import eu.kanade.tachiyomi.util.system.copyToClipboard
+import kotlinx.collections.immutable.persistentListOf
 import kotlinx.serialization.protobuf.schema.ProtoBufSchemaGenerator
 import tachiyomi.presentation.core.components.material.Scaffold
 
@@ -44,7 +45,7 @@ class BackupSchemaScreen : Screen() {
                     navigateUp = navigator::pop,
                     actions = {
                         AppBarActions(
-                            listOf(
+                            persistentListOf(
                                 AppBar.Action(
                                     title = stringResource(R.string.action_copy_to_clipboard),
                                     icon = Icons.Default.ContentCopy,

+ 2 - 1
app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt

@@ -33,6 +33,7 @@ import eu.kanade.presentation.util.ioCoroutineScope
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.util.system.copyToClipboard
 import eu.kanade.tachiyomi.util.system.workManager
+import kotlinx.collections.immutable.persistentListOf
 import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.stateIn
@@ -62,7 +63,7 @@ class WorkerInfoScreen : Screen() {
                     navigateUp = navigator::pop,
                     actions = {
                         AppBarActions(
-                            listOf(
+                            persistentListOf(
                                 AppBar.Action(
                                     title = stringResource(R.string.action_copy_to_clipboard),
                                     icon = Icons.Default.ContentCopy,

+ 37 - 20
app/src/main/java/eu/kanade/presentation/reader/appbars/ReaderAppBars.kt

@@ -29,6 +29,7 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation
 import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode
 import eu.kanade.tachiyomi.ui.reader.viewer.Viewer
 import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer
+import kotlinx.collections.immutable.persistentListOf
 
 private val animationSpec = tween<IntOffset>(200)
 
@@ -98,27 +99,43 @@ fun ReaderAppBars(
                 navigateUp = navigateUp,
                 actions = {
                     AppBarActions(
-                        listOfNotNull(
-                            AppBar.Action(
-                                title = stringResource(
-                                    if (bookmarked) R.string.action_remove_bookmark else R.string.action_bookmark,
-                                ),
-                                icon = if (bookmarked) Icons.Outlined.Bookmark else Icons.Outlined.BookmarkBorder,
-                                onClick = onToggleBookmarked,
-                            ),
-                            onOpenInWebView?.let {
-                                AppBar.OverflowAction(
-                                    title = stringResource(R.string.action_open_in_web_view),
-                                    onClick = it,
+                        actions = persistentListOf<AppBar.AppBarAction>().builder()
+                            .apply {
+                                add(
+                                    AppBar.Action(
+                                        title = stringResource(
+                                            if (bookmarked) {
+                                                R.string.action_remove_bookmark
+                                            } else {
+                                                R.string.action_bookmark
+                                            },
+                                        ),
+                                        icon = if (bookmarked) {
+                                            Icons.Outlined.Bookmark
+                                        } else {
+                                            Icons.Outlined.BookmarkBorder
+                                        },
+                                        onClick = onToggleBookmarked,
+                                    ),
                                 )
-                            },
-                            onShare?.let {
-                                AppBar.OverflowAction(
-                                    title = stringResource(R.string.action_share),
-                                    onClick = it,
-                                )
-                            },
-                        ),
+                                onOpenInWebView?.let {
+                                    add(
+                                        AppBar.OverflowAction(
+                                            title = stringResource(R.string.action_open_in_web_view),
+                                            onClick = it,
+                                        ),
+                                    )
+                                }
+                                onShare?.let {
+                                    add(
+                                        AppBar.OverflowAction(
+                                            title = stringResource(R.string.action_share),
+                                            onClick = it,
+                                        ),
+                                    )
+                                }
+                            }
+                            .build(),
                     )
                 },
             )

+ 2 - 1
app/src/main/java/eu/kanade/presentation/reader/settings/ReaderSettingsDialog.kt

@@ -17,6 +17,7 @@ import eu.kanade.presentation.components.TabbedDialog
 import eu.kanade.presentation.components.TabbedDialogPaddings
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel
+import kotlinx.collections.immutable.persistentListOf
 
 @Composable
 fun ReaderSettingsDialog(
@@ -25,7 +26,7 @@ fun ReaderSettingsDialog(
     onHideMenus: () -> Unit,
     screenModel: ReaderSettingsScreenModel,
 ) {
-    val tabTitles = listOf(
+    val tabTitles = persistentListOf(
         stringResource(R.string.pref_category_reading_mode),
         stringResource(R.string.pref_category_general),
         stringResource(R.string.custom_filter),

+ 2 - 2
app/src/main/java/eu/kanade/presentation/track/TrackInfoDialogHome.kt

@@ -240,10 +240,10 @@ private fun TrackInfoItem(
 
 @Composable
 private fun TrackDetailsItem(
-    modifier: Modifier = Modifier,
     text: String?,
-    placeholder: String = "",
     onClick: () -> Unit,
+    modifier: Modifier = Modifier,
+    placeholder: String = "",
 ) {
     Box(
         modifier = modifier

+ 1 - 1
app/src/main/java/eu/kanade/presentation/track/TrackInfoDialogSelector.kt

@@ -191,9 +191,9 @@ fun TrackDateSelector(
 private fun BaseSelector(
     title: String,
     content: @Composable BoxScope.() -> Unit,
-    thirdButton: @Composable (RowScope.() -> Unit)? = null,
     onConfirm: () -> Unit,
     onDismissRequest: () -> Unit,
+    thirdButton: @Composable (RowScope.() -> Unit)? = null,
 ) {
     AlertDialogContent(
         modifier = Modifier.windowInsetsPadding(WindowInsets.systemBars),

+ 4 - 3
app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt

@@ -29,6 +29,7 @@ import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.download.model.Download
 import eu.kanade.tachiyomi.ui.updates.UpdatesItem
 import eu.kanade.tachiyomi.ui.updates.UpdatesScreenModel
+import kotlinx.collections.immutable.persistentListOf
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
 import tachiyomi.presentation.core.components.FastScrollLazyColumn
@@ -128,7 +129,6 @@ fun UpdateScreen(
 
 @Composable
 private fun UpdatesAppBar(
-    modifier: Modifier = Modifier,
     onUpdateLibrary: () -> Unit,
     // For action mode
     actionModeCounter: Int,
@@ -136,13 +136,14 @@ private fun UpdatesAppBar(
     onInvertSelection: () -> Unit,
     onCancelActionMode: () -> Unit,
     scrollBehavior: TopAppBarScrollBehavior,
+    modifier: Modifier = Modifier,
 ) {
     AppBar(
         modifier = modifier,
         title = stringResource(R.string.label_recent_updates),
         actions = {
             AppBarActions(
-                listOf(
+                persistentListOf(
                     AppBar.Action(
                         title = stringResource(R.string.action_update_library),
                         icon = Icons.Outlined.Refresh,
@@ -155,7 +156,7 @@ private fun UpdatesAppBar(
         onCancelActionMode = onCancelActionMode,
         actionModeActions = {
             AppBarActions(
-                listOf(
+                persistentListOf(
                     AppBar.Action(
                         title = stringResource(R.string.action_select_all),
                         icon = Icons.Outlined.SelectAll,

+ 1 - 1
app/src/main/java/eu/kanade/presentation/updates/UpdatesUiItem.kt

@@ -131,7 +131,6 @@ internal fun LazyListScope.updatesUiItems(
 
 @Composable
 private fun UpdatesUiItem(
-    modifier: Modifier,
     update: UpdatesWithRelations,
     selected: Boolean,
     readProgress: String?,
@@ -142,6 +141,7 @@ private fun UpdatesUiItem(
     // Download Indicator
     downloadStateProvider: () -> Download.State,
     downloadProgressProvider: () -> Int,
+    modifier: Modifier = Modifier,
 ) {
     val haptic = LocalHapticFeedback.current
     val textAlpha = if (update.read) ReadItemAlpha else 1f

+ 3 - 0
app/src/main/java/eu/kanade/presentation/util/Navigator.kt

@@ -1,5 +1,6 @@
 package eu.kanade.presentation.util
 
+import android.annotation.SuppressLint
 import androidx.compose.animation.AnimatedContent
 import androidx.compose.animation.AnimatedContentTransitionScope
 import androidx.compose.animation.ContentTransform
@@ -27,6 +28,7 @@ import soup.compose.material.motion.animation.rememberSlideDistance
 /**
  * For invoking back press to the parent activity
  */
+@SuppressLint("ComposeCompositionLocalUsage")
 val LocalBackPress: ProvidableCompositionLocal<(() -> Unit)?> = staticCompositionLocalOf { null }
 
 interface Tab : cafe.adriel.voyager.navigator.tab.Tab {
@@ -79,6 +81,7 @@ fun ScreenTransition(
         targetState = navigator.lastItem,
         transitionSpec = transition,
         modifier = modifier,
+        label = "transition",
     ) { screen ->
         navigator.saveableState("transition", screen) {
             content(screen)

+ 4 - 3
app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt

@@ -43,6 +43,7 @@ import eu.kanade.tachiyomi.BuildConfig
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.util.system.getHtml
 import eu.kanade.tachiyomi.util.system.setDefaultSettings
+import kotlinx.collections.immutable.persistentListOf
 import kotlinx.coroutines.launch
 import tachiyomi.presentation.core.components.material.Scaffold
 
@@ -51,11 +52,11 @@ fun WebViewScreenContent(
     onNavigateUp: () -> Unit,
     initialTitle: String?,
     url: String,
-    headers: Map<String, String> = emptyMap(),
-    onUrlChange: (String) -> Unit = {},
     onShare: (String) -> Unit,
     onOpenInBrowser: (String) -> Unit,
     onClearCookies: (String) -> Unit,
+    headers: Map<String, String> = emptyMap(),
+    onUrlChange: (String) -> Unit = {},
 ) {
     val state = rememberWebViewState(url = url, additionalHttpHeaders = headers)
     val navigator = rememberWebViewNavigator()
@@ -124,7 +125,7 @@ fun WebViewScreenContent(
                         navigationIcon = Icons.Outlined.Close,
                         actions = {
                             AppBarActions(
-                                listOf(
+                                persistentListOf(
                                     AppBar.Action(
                                         title = stringResource(R.string.action_webview_back),
                                         icon = Icons.AutoMirrored.Outlined.ArrowBack,

+ 2 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseTab.kt

@@ -23,6 +23,7 @@ import eu.kanade.tachiyomi.ui.browse.migration.sources.migrateSourceTab
 import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchScreen
 import eu.kanade.tachiyomi.ui.browse.source.sourcesTab
 import eu.kanade.tachiyomi.ui.main.MainActivity
+import kotlinx.collections.immutable.persistentListOf
 
 data class BrowseTab(
     private val toExtensions: Boolean = false,
@@ -54,7 +55,7 @@ data class BrowseTab(
 
         TabbedScreen(
             titleRes = R.string.browse,
-            tabs = listOf(
+            tabs = persistentListOf(
                 sourcesTab(),
                 extensionsTab(extensionsScreenModel),
                 migrateSourceTab(),

+ 2 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsTab.kt

@@ -14,6 +14,7 @@ import eu.kanade.presentation.components.TabContent
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.extension.model.Extension
 import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreen
+import kotlinx.collections.immutable.persistentListOf
 
 @Composable
 fun extensionsTab(
@@ -26,7 +27,7 @@ fun extensionsTab(
         titleRes = R.string.label_extensions,
         badgeNumber = state.updates.takeIf { it > 0 },
         searchEnabled = true,
-        actions = listOf(
+        actions = persistentListOf(
             AppBar.Action(
                 title = stringResource(R.string.action_filter),
                 icon = Icons.Outlined.Translate,

+ 2 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceTab.kt

@@ -17,6 +17,7 @@ import eu.kanade.presentation.components.AppBar
 import eu.kanade.presentation.components.TabContent
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrateMangaScreen
+import kotlinx.collections.immutable.persistentListOf
 
 @Composable
 fun Screen.migrateSourceTab(): TabContent {
@@ -27,7 +28,7 @@ fun Screen.migrateSourceTab(): TabContent {
 
     return TabContent(
         titleRes = R.string.label_migration,
-        actions = listOf(
+        actions = persistentListOf(
             AppBar.Action(
                 title = stringResource(R.string.migration_help_guide),
                 icon = Icons.AutoMirrored.Outlined.HelpOutline,

+ 2 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt

@@ -19,6 +19,7 @@ import eu.kanade.presentation.components.TabContent
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreen
 import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchScreen
+import kotlinx.collections.immutable.persistentListOf
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.launch
 
@@ -30,7 +31,7 @@ fun Screen.sourcesTab(): TabContent {
 
     return TabContent(
         titleRes = R.string.label_sources,
-        actions = listOf(
+        actions = persistentListOf(
             AppBar.Action(
                 title = stringResource(R.string.action_global_search),
                 icon = Icons.Outlined.TravelExplore,

+ 2 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt

@@ -55,6 +55,7 @@ import eu.kanade.presentation.components.NestedMenuItem
 import eu.kanade.presentation.util.Screen
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.databinding.DownloadListBinding
+import kotlinx.collections.immutable.persistentListOf
 import tachiyomi.core.util.lang.launchUI
 import tachiyomi.presentation.core.components.Pill
 import tachiyomi.presentation.core.components.material.ExtendedFloatingActionButton
@@ -183,7 +184,7 @@ object DownloadQueueScreen : Screen() {
                             }
 
                             AppBarActions(
-                                listOf(
+                                persistentListOf(
                                     AppBar.Action(
                                         title = stringResource(R.string.action_sort),
                                         icon = Icons.AutoMirrored.Outlined.Sort,