diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 066072296..9a10bc2f4 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -199,7 +199,6 @@ dependencies { implementation(libs.androidx.sqlite.bundled) implementation(libs.kotlin.reflect) - implementation(libs.kotlinx.collections.immutable) implementation(libs.bundles.kotlinx.coroutines) diff --git a/app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt index edda0f2d7..a69c9ffed 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt @@ -22,7 +22,6 @@ import eu.kanade.presentation.browse.components.BrowseSourceList import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.util.formattedMessage import eu.kanade.tachiyomi.source.Source -import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.flow.StateFlow import tachiyomi.core.common.i18n.stringResource import tachiyomi.domain.library.model.LibraryDisplayMode @@ -86,7 +85,7 @@ fun BrowseSourceContent( else -> stringResource(MR.strings.no_results_found) }, actions = if (source is LocalSource) { - persistentListOf( + listOf( EmptyScreenAction( stringRes = MR.strings.local_source_help_guide, icon = Icons.AutoMirrored.Outlined.HelpOutline, @@ -94,7 +93,7 @@ fun BrowseSourceContent( ), ) } else { - persistentListOf( + listOf( EmptyScreenAction( stringRes = MR.strings.action_retry, icon = Icons.Outlined.Refresh, diff --git a/app/src/main/java/eu/kanade/presentation/browse/ExtensionDetailsScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/ExtensionDetailsScreen.kt index 2848bde48..591307a62 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/ExtensionDetailsScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/ExtensionDetailsScreen.kt @@ -56,8 +56,6 @@ import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreenModel import eu.kanade.tachiyomi.util.system.LocaleHelper import eu.kanade.tachiyomi.util.system.copyToClipboard -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.ScrollbarLazyColumn import tachiyomi.presentation.core.components.material.Scaffold @@ -95,37 +93,35 @@ fun ExtensionDetailsScreen( navigateUp = navigateUp, actions = { AppBarActions( - actions = persistentListOf().builder() - .apply { - if (url != null) { - add( - AppBar.Action( - title = stringResource(MR.strings.action_open_repo), - icon = Icons.AutoMirrored.Outlined.Launch, - onClick = { - uriHandler.openUri(url) - }, - ), - ) - } - addAll( - listOf( - AppBar.OverflowAction( - title = stringResource(MR.strings.action_enable_all), - onClick = onClickEnableAll, - ), - AppBar.OverflowAction( - title = stringResource(MR.strings.action_disable_all), - onClick = onClickDisableAll, - ), - AppBar.OverflowAction( - title = stringResource(MR.strings.pref_clear_cookies), - onClick = onClickClearCookies, - ), + actions = buildList { + if (url != null) { + add( + AppBar.Action( + title = stringResource(MR.strings.action_open_repo), + icon = Icons.AutoMirrored.Outlined.Launch, + onClick = { + uriHandler.openUri(url) + }, ), ) } - .build(), + addAll( + listOf( + AppBar.OverflowAction( + title = stringResource(MR.strings.action_enable_all), + onClick = onClickEnableAll, + ), + AppBar.OverflowAction( + title = stringResource(MR.strings.action_disable_all), + onClick = onClickDisableAll, + ), + AppBar.OverflowAction( + title = stringResource(MR.strings.pref_clear_cookies), + onClick = onClickClearCookies, + ), + ), + ) + }, ) }, scrollBehavior = scrollBehavior, @@ -157,7 +153,7 @@ fun ExtensionDetailsScreen( private fun ExtensionDetails( contentPadding: PaddingValues, extension: Extension.Installed, - sources: ImmutableList, + sources: List, incognitoMode: Boolean, onClickSourcePreferences: (sourceId: Long) -> Unit, onClickUninstall: () -> Unit, diff --git a/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt index 04e72dfd4..52c2a4ab9 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt @@ -56,7 +56,6 @@ import eu.kanade.tachiyomi.ui.browse.extension.ExtensionUiModel import eu.kanade.tachiyomi.ui.browse.extension.ExtensionsScreenModel import eu.kanade.tachiyomi.util.system.LocaleHelper import eu.kanade.tachiyomi.util.system.launchRequestPackageInstallsPermission -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.FastScrollLazyColumn import tachiyomi.presentation.core.components.material.PullRefresh @@ -104,7 +103,7 @@ fun ExtensionScreen( EmptyScreen( stringRes = msg, modifier = Modifier.padding(contentPadding), - actions = persistentListOf( + actions = listOf( EmptyScreenAction( stringRes = MR.strings.extensionStores, icon = Icons.Outlined.Settings, diff --git a/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt index 3f8a67c4c..9ba192d9c 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt @@ -26,7 +26,6 @@ import eu.kanade.presentation.browse.components.BaseSourceItem import eu.kanade.presentation.browse.components.SourceIcon import eu.kanade.tachiyomi.ui.browse.migration.sources.MigrateSourceScreenModel import eu.kanade.tachiyomi.util.system.copyToClipboard -import kotlinx.collections.immutable.ImmutableList import tachiyomi.domain.source.model.Source import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.Badge @@ -76,7 +75,7 @@ fun MigrateSourceScreen( @Composable private fun MigrateSourceList( - list: ImmutableList>, + list: List>, contentPadding: PaddingValues, onClickItem: (Source) -> Unit, onLongClickItem: (Source) -> Unit, diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt index e1c3618ee..44de96ef0 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt @@ -18,7 +18,6 @@ import eu.kanade.presentation.components.RadioMenuItem import eu.kanade.presentation.components.SearchToolbar 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.i18n.MR import tachiyomi.presentation.core.i18n.stringResource @@ -54,44 +53,42 @@ fun BrowseSourceToolbar( onClickCloseSearch = navigateUp, actions = { AppBarActions( - actions = persistentListOf().builder() - .apply { + actions = buildList { + add( + AppBar.Action( + title = stringResource(MR.strings.action_display_mode), + icon = if (displayMode == LibraryDisplayMode.List) { + Icons.AutoMirrored.Filled.ViewList + } else { + Icons.Filled.ViewModule + }, + onClick = { selectingDisplayMode = true }, + ), + ) + if (isLocalSource) { add( - AppBar.Action( - title = stringResource(MR.strings.action_display_mode), - icon = if (displayMode == LibraryDisplayMode.List) { - Icons.AutoMirrored.Filled.ViewList - } else { - Icons.Filled.ViewModule - }, - onClick = { selectingDisplayMode = true }, + AppBar.OverflowAction( + title = stringResource(MR.strings.label_help), + onClick = onHelpClick, + ), + ) + } else { + add( + AppBar.OverflowAction( + title = stringResource(MR.strings.action_open_in_web_view), + onClick = onWebViewClick, ), ) - if (isLocalSource) { - add( - AppBar.OverflowAction( - title = stringResource(MR.strings.label_help), - onClick = onHelpClick, - ), - ) - } else { - add( - AppBar.OverflowAction( - title = stringResource(MR.strings.action_open_in_web_view), - onClick = onWebViewClick, - ), - ) - } - if (isConfigurableSource) { - add( - AppBar.OverflowAction( - title = stringResource(MR.strings.action_settings), - onClick = onSettingsClick, - ), - ) - } } - .build(), + if (isConfigurableSource) { + add( + AppBar.OverflowAction( + title = stringResource(MR.strings.action_settings), + onClick = onSettingsClick, + ), + ) + } + }, ) DropdownMenu( diff --git a/app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt b/app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt index 38e15e1ff..63cf5913a 100644 --- a/app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt +++ b/app/src/main/java/eu/kanade/presentation/category/components/CategoryDialogs.kt @@ -27,8 +27,6 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import eu.kanade.core.preference.asToggleableState import eu.kanade.presentation.category.visualName -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.delay import tachiyomi.core.common.preference.CheckboxState import tachiyomi.domain.category.model.Category @@ -41,7 +39,7 @@ import kotlin.time.Duration.Companion.seconds fun CategoryCreateDialog( onDismissRequest: () -> Unit, onCreate: (String) -> Unit, - categories: ImmutableList, + categories: List, ) { var name by remember { mutableStateOf("") } @@ -103,7 +101,7 @@ fun CategoryCreateDialog( fun CategoryRenameDialog( onDismissRequest: () -> Unit, onRename: (String) -> Unit, - categories: ImmutableList, + categories: List, category: String, ) { var name by remember { mutableStateOf(category) } @@ -195,7 +193,7 @@ fun CategoryDeleteDialog( @Composable fun ChangeCategoryDialog( - initialSelection: ImmutableList>, + initialSelection: List>, onDismissRequest: () -> Unit, onEditCategories: () -> Unit, onConfirm: (List, List) -> Unit, @@ -267,7 +265,7 @@ fun ChangeCategoryDialog( if (index != -1) { val mutableList = selection.toMutableList() mutableList[index] = it.next() - selection = mutableList.toList().toImmutableList() + selection = mutableList.toList() } } Row( diff --git a/app/src/main/java/eu/kanade/presentation/components/AppBar.kt b/app/src/main/java/eu/kanade/presentation/components/AppBar.kt index 1efeb34e3..019cba520 100644 --- a/app/src/main/java/eu/kanade/presentation/components/AppBar.kt +++ b/app/src/main/java/eu/kanade/presentation/components/AppBar.kt @@ -51,7 +51,6 @@ import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import kotlinx.collections.immutable.ImmutableList import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.util.clearFocusOnSoftKeyboardHide @@ -190,7 +189,7 @@ fun AppBarTitle( @Composable fun AppBarActions( - actions: ImmutableList, + actions: List, ) { var showMenu by remember { mutableStateOf(false) } diff --git a/app/src/main/java/eu/kanade/presentation/components/DownloadDropdownMenu.kt b/app/src/main/java/eu/kanade/presentation/components/DownloadDropdownMenu.kt index b6cebc932..fbc657e4d 100644 --- a/app/src/main/java/eu/kanade/presentation/components/DownloadDropdownMenu.kt +++ b/app/src/main/java/eu/kanade/presentation/components/DownloadDropdownMenu.kt @@ -6,7 +6,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.DpOffset import eu.kanade.presentation.manga.DownloadAction -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.pluralStringResource import tachiyomi.presentation.core.i18n.stringResource @@ -52,7 +51,7 @@ private fun DownloadDropdownMenuItems( onDismissRequest: () -> Unit, onDownloadClicked: (DownloadAction) -> Unit, ) { - val options = persistentListOf( + val options = listOf( DownloadAction.NEXT_1_CHAPTER to pluralStringResource(MR.plurals.download_amount, 1, 1), DownloadAction.NEXT_5_CHAPTERS to pluralStringResource(MR.plurals.download_amount, 5, 5), DownloadAction.NEXT_10_CHAPTERS to pluralStringResource(MR.plurals.download_amount, 10, 10), diff --git a/app/src/main/java/eu/kanade/presentation/components/EmptyScreen.kt b/app/src/main/java/eu/kanade/presentation/components/EmptyScreen.kt index 5355318a9..d68892ab4 100644 --- a/app/src/main/java/eu/kanade/presentation/components/EmptyScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/components/EmptyScreen.kt @@ -7,7 +7,6 @@ import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.PreviewLightDark import eu.kanade.presentation.theme.TachiyomiPreviewTheme -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.presentation.core.screens.EmptyScreen import tachiyomi.presentation.core.screens.EmptyScreenAction @@ -31,7 +30,7 @@ private fun WithActionPreview() { Surface { EmptyScreen( stringRes = MR.strings.empty_screen, - actions = persistentListOf( + actions = listOf( EmptyScreenAction( stringRes = MR.strings.action_retry, icon = Icons.Outlined.Refresh, diff --git a/app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt b/app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt index 69b58c616..d352302d0 100644 --- a/app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/components/TabbedDialog.kt @@ -27,7 +27,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.compose.ui.util.fastForEachIndexed -import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.launch import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.material.TabText @@ -41,7 +40,7 @@ object TabbedDialogPaddings { @Composable fun TabbedDialog( onDismissRequest: () -> Unit, - tabTitles: ImmutableList, + tabTitles: List, modifier: Modifier = Modifier, tabOverflowMenuContent: (@Composable ColumnScope.(() -> Unit) -> Unit)? = null, pagerState: PagerState = rememberPagerState { tabTitles.size }, diff --git a/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt b/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt index 31cacae13..b8506df82 100644 --- a/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt @@ -22,8 +22,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.zIndex import dev.icerock.moko.resources.StringResource -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.launch import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.TabText @@ -32,7 +30,7 @@ import tachiyomi.presentation.core.i18n.stringResource @Composable fun TabbedScreen( titleRes: StringResource, - tabs: ImmutableList, + tabs: List, state: PagerState = rememberPagerState { tabs.size }, searchQuery: String? = null, onChangeSearchQuery: (String?) -> Unit = {}, @@ -94,6 +92,6 @@ data class TabContent( val titleRes: StringResource, val badgeNumber: Int? = null, val searchEnabled: Boolean = false, - val actions: ImmutableList = persistentListOf(), + val actions: List = listOf(), val content: @Composable (contentPadding: PaddingValues, snackbarHostState: SnackbarHostState) -> Unit, ) diff --git a/app/src/main/java/eu/kanade/presentation/history/HistoryScreen.kt b/app/src/main/java/eu/kanade/presentation/history/HistoryScreen.kt index 6b8b760d6..1a41df97c 100644 --- a/app/src/main/java/eu/kanade/presentation/history/HistoryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/history/HistoryScreen.kt @@ -20,7 +20,6 @@ import eu.kanade.presentation.history.components.HistoryItem import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.presentation.util.animateItemFastScroll import eu.kanade.tachiyomi.ui.history.HistoryScreenModel -import kotlinx.collections.immutable.persistentListOf import tachiyomi.domain.history.model.HistoryWithRelations import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.FastScrollLazyColumn @@ -49,7 +48,7 @@ fun HistoryScreen( onChangeSearchQuery = onSearchQueryChange, actions = { AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.pref_clear_history), icon = Icons.Outlined.DeleteSweep, diff --git a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt index 5405ff000..4d18e2733 100644 --- a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt @@ -21,7 +21,6 @@ import eu.kanade.presentation.components.TabbedDialog import eu.kanade.presentation.components.TabbedDialogPaddings import eu.kanade.tachiyomi.ui.library.LibrarySettingsScreenModel import eu.kanade.tachiyomi.util.system.isReleaseBuildType -import kotlinx.collections.immutable.persistentListOf import tachiyomi.core.common.preference.TriState import tachiyomi.domain.category.model.Category import tachiyomi.domain.library.model.LibraryDisplayMode @@ -47,7 +46,7 @@ fun LibrarySettingsDialog( ) { TabbedDialog( onDismissRequest = onDismissRequest, - tabTitles = persistentListOf( + tabTitles = listOf( stringResource(MR.strings.action_filter), stringResource(MR.strings.action_sort), stringResource(MR.strings.action_display), diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt index 9845ca816..af699f291 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt @@ -19,7 +19,6 @@ import androidx.compose.ui.unit.sp import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBarActions import eu.kanade.presentation.components.SearchToolbar -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.Pill import tachiyomi.presentation.core.i18n.stringResource @@ -96,7 +95,7 @@ private fun LibraryRegularToolbar( actions = { val filterTint = if (hasFilters) MaterialTheme.colorScheme.active else LocalContentColor.current AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.action_filter), icon = Icons.Outlined.FilterList, @@ -133,7 +132,7 @@ private fun LibrarySelectionToolbar( titleContent = { Text(text = "$selectedCount") }, actions = { AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.action_select_all), icon = Icons.Outlined.SelectAll, diff --git a/app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt index 074b5664d..e4f9082d0 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/ChapterSettingsDialog.kt @@ -31,7 +31,6 @@ import eu.kanade.domain.base.BasePreferences import eu.kanade.domain.manga.model.downloadedFilter import eu.kanade.presentation.components.TabbedDialog import eu.kanade.presentation.components.TabbedDialogPaddings -import kotlinx.collections.immutable.persistentListOf import tachiyomi.core.common.preference.TriState import tachiyomi.domain.manga.model.Manga import tachiyomi.i18n.MR @@ -70,7 +69,7 @@ fun ChapterSettingsDialog( TabbedDialog( onDismissRequest = onDismissRequest, - tabTitles = persistentListOf( + tabTitles = listOf( stringResource(MR.strings.action_filter), stringResource(MR.strings.action_sort), stringResource(MR.strings.action_display), diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt index fc82c0117..c61a446d4 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaCoverDialog.kt @@ -48,7 +48,6 @@ import eu.kanade.presentation.components.AppBarActions import eu.kanade.presentation.components.DropdownMenu import eu.kanade.presentation.manga.EditCoverAction import eu.kanade.tachiyomi.ui.reader.viewer.ReaderPageImageView -import kotlinx.collections.immutable.persistentListOf import tachiyomi.domain.manga.model.Manga import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.material.Scaffold @@ -93,7 +92,7 @@ fun MangaCoverDialog( Spacer(modifier = Modifier.weight(1f)) ActionsPill { AppBarActions( - actions = persistentListOf( + actions = listOf( AppBar.Action( title = stringResource(MR.strings.action_share), icon = Icons.Outlined.Share, diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaDialogs.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaDialogs.kt index c0a7778d0..fd3b393e2 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaDialogs.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaDialogs.kt @@ -20,7 +20,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import eu.kanade.tachiyomi.util.system.isReleaseBuildType -import kotlinx.collections.immutable.toImmutableList import tachiyomi.domain.manga.interactor.FetchInterval import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.WheelTextPicker @@ -124,7 +123,7 @@ fun SetIntervalDialog( it.toString() } } - .toImmutableList() + WheelTextPicker( items = items, size = size, diff --git a/app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt b/app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt index 5ab5c6401..b2d33c3de 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/components/MangaToolbar.kt @@ -21,7 +21,6 @@ import eu.kanade.presentation.components.AppBarActions import eu.kanade.presentation.components.AppBarTitle import eu.kanade.presentation.components.DownloadDropdownMenu import eu.kanade.presentation.manga.DownloadAction -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.theme.active @@ -76,7 +75,7 @@ fun MangaToolbar( val filterTint = if (hasFilters) MaterialTheme.colorScheme.active else LocalContentColor.current AppBarActions( - actions = persistentListOf().builder().apply { + actions = buildList { if (isActionMode) { add( AppBar.Action( @@ -92,7 +91,7 @@ fun MangaToolbar( onClick = onInvertSelection, ), ) - return@apply + return@buildList } if (onClickDownload != null) { add( @@ -147,8 +146,7 @@ fun MangaToolbar( onClick = onClickEditNotes, ), ) - } - .build(), + }, ) }, isActionMode = isActionMode, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/Preference.kt b/app/src/main/java/eu/kanade/presentation/more/settings/Preference.kt index 258fdf752..467ad5672 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/Preference.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/Preference.kt @@ -5,8 +5,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.graphics.vector.ImageVector import eu.kanade.tachiyomi.data.track.Tracker -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.ImmutableMap import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.core.common.preference.Preference as PreferenceData @@ -69,10 +67,10 @@ sealed class Preference { @Suppress("UNCHECKED_CAST") data class ListPreference( val preference: PreferenceData, - val entries: ImmutableMap, + val entries: Map, override val title: String, override val subtitle: String? = "%s", - val subtitleProvider: @Composable (value: T, entries: ImmutableMap) -> String? = + val subtitleProvider: @Composable (value: T, entries: Map) -> String? = { v, e -> subtitle?.format(e[v]) }, override val icon: ImageVector? = null, override val enabled: Boolean = true, @@ -82,8 +80,8 @@ sealed class Preference { internal suspend fun internalOnValueChanged(value: Any) = onValueChanged(value as T) @Composable - internal fun internalSubtitleProvider(value: Any?, entries: ImmutableMap) = - subtitleProvider(value as T, entries as ImmutableMap) + internal fun internalSubtitleProvider(value: Any?, entries: Map) = + subtitleProvider(value as T, entries as Map) } /** @@ -91,10 +89,10 @@ sealed class Preference { */ data class BasicListPreference( val value: String, - val entries: ImmutableMap, + val entries: Map, override val title: String, override val subtitle: String? = "%s", - val subtitleProvider: @Composable (value: String, entries: ImmutableMap) -> String? = + val subtitleProvider: @Composable (value: String, entries: Map) -> String? = { v, e -> subtitle?.format(e[v]) }, override val icon: ImageVector? = null, override val enabled: Boolean = true, @@ -107,10 +105,10 @@ sealed class Preference { */ data class MultiSelectListPreference( val preference: PreferenceData>, - val entries: ImmutableMap, + val entries: Map, override val title: String, override val subtitle: String? = "%s", - val subtitleProvider: @Composable (value: Set, entries: ImmutableMap) -> String? = + val subtitleProvider: @Composable (value: Set, entries: Map) -> String? = { v, e -> val combined = remember(v, e) { v.mapNotNull { e[it] } @@ -177,6 +175,6 @@ sealed class Preference { override val title: String, override val enabled: Boolean = true, - val preferenceItems: ImmutableList>, + val preferenceItems: List>, ) : Preference() } diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt index 0403546cb..31cbd6dac 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt @@ -53,9 +53,6 @@ import eu.kanade.tachiyomi.util.system.isShizukuInstalled import eu.kanade.tachiyomi.util.system.powerManager import eu.kanade.tachiyomi.util.system.setDefaultSettings import eu.kanade.tachiyomi.util.system.toast -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.persistentMapOf -import kotlinx.collections.immutable.toImmutableMap import kotlinx.coroutines.launch import logcat.LogPriority import okhttp3.Headers @@ -140,7 +137,7 @@ object SettingsAdvancedScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.label_background_activity), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.TextPreference( title = stringResource(MR.strings.pref_disable_battery_optimization), subtitle = stringResource(MR.strings.pref_disable_battery_optimization_summary), @@ -179,7 +176,7 @@ object SettingsAdvancedScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.label_data), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.TextPreference( title = stringResource(MR.strings.pref_invalidate_download_cache), subtitle = stringResource(MR.strings.pref_invalidate_download_cache_summary), @@ -209,7 +206,7 @@ object SettingsAdvancedScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.label_network), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.TextPreference( title = stringResource(MR.strings.pref_clear_cookies), onClick = { @@ -239,7 +236,7 @@ object SettingsAdvancedScreen : SearchableSettings { ), Preference.PreferenceItem.ListPreference( preference = networkPreferences.dohProvider, - entries = persistentMapOf( + entries = mapOf( -1 to stringResource(MR.strings.disabled), PREF_DOH_CLOUDFLARE to "Cloudflare", PREF_DOH_GOOGLE to "Google", @@ -296,7 +293,7 @@ object SettingsAdvancedScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.label_library), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.TextPreference( title = stringResource(MR.strings.pref_refresh_library_covers), onClick = { MetadataUpdateJob.startNow(context) }, @@ -348,7 +345,7 @@ object SettingsAdvancedScreen : SearchableSettings { } return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_category_reader), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.ListPreference( preference = basePreferences.hardwareBitmapThreshold, entries = GLUtil.CUSTOM_TEXTURE_LIMIT_OPTIONS @@ -360,8 +357,7 @@ object SettingsAdvancedScreen : SearchableSettings { } option to display } - .toMap() - .toImmutableMap(), + .toMap(), title = stringResource(MR.strings.pref_hardware_bitmap_threshold), subtitleProvider = { value, options -> stringResource(MR.strings.pref_hardware_bitmap_threshold_summary, options[value].orEmpty()) @@ -420,7 +416,7 @@ object SettingsAdvancedScreen : SearchableSettings { } return Preference.PreferenceGroup( title = stringResource(MR.strings.label_extensions), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.ListPreference( preference = extensionInstallerPref, entries = extensionInstallerPref.entries @@ -432,8 +428,7 @@ object SettingsAdvancedScreen : SearchableSettings { true } } - .associateWith { stringResource(it.titleRes) } - .toImmutableMap(), + .associateWith { stringResource(it.titleRes) }, title = stringResource(MR.strings.ext_installer_pref), onValueChanged = { if (it == BasePreferences.ExtensionInstaller.SHIZUKU && diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt index a29cdcf48..10bbbc07e 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt @@ -19,8 +19,6 @@ import eu.kanade.presentation.more.settings.screen.appearance.AppLanguageScreen import eu.kanade.presentation.more.settings.widget.AppThemeModePreferenceWidget import eu.kanade.presentation.more.settings.widget.AppThemePreferenceWidget import eu.kanade.tachiyomi.util.system.toast -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toImmutableMap import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.stringResource import tachiyomi.presentation.core.util.collectAsState @@ -61,7 +59,7 @@ object SettingsAppearanceScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_category_theme), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.CustomPreference( title = stringResource(MR.strings.pref_app_theme), ) { @@ -110,7 +108,7 @@ object SettingsAppearanceScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_category_display), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.TextPreference( title = stringResource(MR.strings.pref_app_language), onClick = { navigator.push(AppLanguageScreen()) }, @@ -118,8 +116,7 @@ object SettingsAppearanceScreen : SearchableSettings { Preference.PreferenceItem.ListPreference( preference = uiPreferences.tabletUiMode, entries = TabletUiMode.entries - .associateWith { stringResource(it.titleRes) } - .toImmutableMap(), + .associateWith { stringResource(it.titleRes) }, title = stringResource(MR.strings.pref_tablet_ui_mode), onValueChanged = { context.toast(MR.strings.requires_app_restart) @@ -132,8 +129,7 @@ object SettingsAppearanceScreen : SearchableSettings { .associateWith { val formattedDate = UiPreferences.dateFormat(it).format(now) "${it.ifEmpty { stringResource(MR.strings.label_default) }} ($formattedDate)" - } - .toImmutableMap(), + }, title = stringResource(MR.strings.pref_date_format), ), Preference.PreferenceItem.SwitchPreference( diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt index 6211761cc..0c401d855 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt @@ -13,7 +13,6 @@ import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.presentation.more.settings.Preference import eu.kanade.presentation.more.settings.screen.browse.ExtensionStoresScreen import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.authenticate -import kotlinx.collections.immutable.persistentListOf import mihon.domain.extension.interactor.GetExtensionStoreCountAsFlow import tachiyomi.core.common.i18n.stringResource import tachiyomi.i18n.MR @@ -41,7 +40,7 @@ object SettingsBrowseScreen : SearchableSettings { return listOf( Preference.PreferenceGroup( title = stringResource(MR.strings.label_sources), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.SwitchPreference( preference = sourcePreferences.hideInLibraryItems, title = stringResource(MR.strings.pref_hide_in_library_items), @@ -57,7 +56,7 @@ object SettingsBrowseScreen : SearchableSettings { ), Preference.PreferenceGroup( title = stringResource(MR.strings.pref_category_nsfw_content), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.SwitchPreference( preference = sourcePreferences.showNsfwSource, title = stringResource(MR.strings.pref_show_nsfw_source), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt index d90aac40d..4e1f89ed1 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt @@ -56,8 +56,6 @@ import eu.kanade.tachiyomi.data.export.LibraryExporter import eu.kanade.tachiyomi.data.export.LibraryExporter.ExportOptions import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.toast -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.persistentMapOf import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import logcat.LogPriority @@ -103,7 +101,7 @@ object SettingsDataScreen : SearchableSettings { val backupPreferences = Injekt.get() val storagePreferences = Injekt.get() - return persistentListOf( + return listOf( getStorageLocationPref(storagePreferences = storagePreferences), Preference.PreferenceItem.InfoPreference(stringResource(MR.strings.pref_storage_location_info)), @@ -207,7 +205,7 @@ object SettingsDataScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.label_backup), - preferenceItems = persistentListOf( + preferenceItems = listOf( // Manual actions Preference.PreferenceItem.CustomPreference( title = stringResource(restorePreferenceKeyString), @@ -255,7 +253,7 @@ object SettingsDataScreen : SearchableSettings { // Automatic backups Preference.PreferenceItem.ListPreference( preference = backupPreferences.backupInterval, - entries = persistentMapOf( + entries = mapOf( 0 to stringResource(MR.strings.off), 6 to stringResource(MR.strings.update_6hour), 12 to stringResource(MR.strings.update_12hour), @@ -289,7 +287,7 @@ object SettingsDataScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_storage_usage), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.CustomPreference( title = stringResource(MR.strings.pref_storage_usage), ) { @@ -382,7 +380,7 @@ object SettingsDataScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.export), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.TextPreference( title = stringResource(MR.strings.library_list), onClick = { showDialog = true }, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt index 17b34e2ef..fbcd0dbc0 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt @@ -12,9 +12,6 @@ import androidx.compose.ui.util.fastMap import eu.kanade.presentation.category.visualName import eu.kanade.presentation.more.settings.Preference import eu.kanade.presentation.more.settings.widget.TriStateListDialog -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.persistentMapOf -import kotlinx.collections.immutable.toImmutableMap import tachiyomi.domain.category.interactor.GetCategories import tachiyomi.domain.category.model.Category import tachiyomi.domain.download.service.DownloadPreferences @@ -85,14 +82,14 @@ object SettingsDownloadScreen : SearchableSettings { ): Preference.PreferenceGroup { return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_category_delete_chapters), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.SwitchPreference( preference = downloadPreferences.removeAfterMarkedAsRead, title = stringResource(MR.strings.pref_remove_after_marked_as_read), ), Preference.PreferenceItem.ListPreference( preference = downloadPreferences.removeAfterReadSlots, - entries = persistentMapOf( + entries = mapOf( -1 to stringResource(MR.strings.disabled), 0 to stringResource(MR.strings.last_read_chapter), 1 to stringResource(MR.strings.second_to_last), @@ -122,8 +119,7 @@ object SettingsDownloadScreen : SearchableSettings { return Preference.PreferenceItem.MultiSelectListPreference( preference = downloadPreferences.removeExcludeCategories, entries = categories() - .associate { it.id.toString() to it.visualName } - .toImmutableMap(), + .associate { it.id.toString() to it.visualName }, title = stringResource(MR.strings.pref_remove_exclude_categories), ) } @@ -162,7 +158,7 @@ object SettingsDownloadScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_category_auto_download), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.SwitchPreference( preference = downloadNewChaptersPref, title = stringResource(MR.strings.pref_download_new), @@ -192,7 +188,7 @@ object SettingsDownloadScreen : SearchableSettings { ): Preference.PreferenceGroup { return Preference.PreferenceGroup( title = stringResource(MR.strings.download_ahead), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.ListPreference( preference = downloadPreferences.autoDownloadWhileReading, entries = listOf(0, 2, 3, 5, 10) @@ -202,8 +198,7 @@ object SettingsDownloadScreen : SearchableSettings { } else { pluralStringResource(MR.plurals.next_unread_chapters, count = it, it) } - } - .toImmutableMap(), + }, title = stringResource(MR.strings.auto_download_while_reading), ), Preference.PreferenceItem.InfoPreference(stringResource(MR.strings.download_ahead_info)), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt index 61f89ceca..531c7b6dc 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt @@ -20,9 +20,6 @@ import eu.kanade.presentation.more.settings.Preference import eu.kanade.presentation.more.settings.widget.TriStateListDialog import eu.kanade.tachiyomi.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.ui.category.CategoryScreen -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.persistentMapOf -import kotlinx.collections.immutable.toImmutableMap import kotlinx.coroutines.launch import tachiyomi.domain.category.interactor.GetCategories import tachiyomi.domain.category.interactor.ResetCategoryFlags @@ -80,7 +77,7 @@ object SettingsLibraryScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.categories), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.TextPreference( title = stringResource(MR.strings.action_edit_categories), subtitle = pluralStringResource( @@ -92,7 +89,7 @@ object SettingsLibraryScreen : SearchableSettings { ), Preference.PreferenceItem.ListPreference( preference = libraryPreferences.defaultCategory, - entries = ids.zip(labels).toMap().toImmutableMap(), + entries = ids.zip(labels).toMap(), title = stringResource(MR.strings.default_category), ), Preference.PreferenceItem.SwitchPreference( @@ -146,10 +143,10 @@ object SettingsLibraryScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_category_library_update), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.ListPreference( preference = autoUpdateIntervalPref, - entries = persistentMapOf( + entries = mapOf( 0 to stringResource(MR.strings.update_never), 12 to stringResource(MR.strings.update_12hour), 24 to stringResource(MR.strings.update_24hour), @@ -165,7 +162,7 @@ object SettingsLibraryScreen : SearchableSettings { ), Preference.PreferenceItem.MultiSelectListPreference( preference = libraryPreferences.autoUpdateDeviceRestrictions, - entries = persistentMapOf( + entries = mapOf( DEVICE_ONLY_ON_WIFI to stringResource(MR.strings.connected_to_wifi), DEVICE_NETWORK_NOT_METERED to stringResource(MR.strings.network_not_metered), DEVICE_CHARGING to stringResource(MR.strings.charging), @@ -195,7 +192,7 @@ object SettingsLibraryScreen : SearchableSettings { ), Preference.PreferenceItem.MultiSelectListPreference( preference = libraryPreferences.autoUpdateMangaRestrictions, - entries = persistentMapOf( + entries = mapOf( MANGA_HAS_UNREAD to stringResource(MR.strings.pref_update_only_completely_read), MANGA_NON_READ to stringResource(MR.strings.pref_update_only_started), MANGA_NON_COMPLETED to stringResource(MR.strings.pref_update_only_non_completed), @@ -217,10 +214,10 @@ object SettingsLibraryScreen : SearchableSettings { ): Preference.PreferenceGroup { return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_behavior), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.ListPreference( preference = libraryPreferences.swipeToStartAction, - entries = persistentMapOf( + entries = mapOf( LibraryPreferences.ChapterSwipeAction.Disabled to stringResource(MR.strings.disabled), LibraryPreferences.ChapterSwipeAction.ToggleBookmark to @@ -234,7 +231,7 @@ object SettingsLibraryScreen : SearchableSettings { ), Preference.PreferenceItem.ListPreference( preference = libraryPreferences.swipeToEndAction, - entries = persistentMapOf( + entries = mapOf( LibraryPreferences.ChapterSwipeAction.Disabled to stringResource(MR.strings.disabled), LibraryPreferences.ChapterSwipeAction.ToggleBookmark to @@ -248,7 +245,7 @@ object SettingsLibraryScreen : SearchableSettings { ), Preference.PreferenceItem.MultiSelectListPreference( preference = libraryPreferences.markDuplicateReadChapterAsRead, - entries = persistentMapOf( + entries = mapOf( MARK_DUPLICATE_CHAPTER_READ_EXISTING to stringResource(MR.strings.pref_mark_duplicate_read_chapter_read_existing), MARK_DUPLICATE_CHAPTER_READ_NEW to diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMainScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMainScreen.kt index cfb010e59..c539ab40f 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMainScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMainScreen.kt @@ -44,7 +44,6 @@ import eu.kanade.presentation.more.settings.screen.about.AboutScreen import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget import eu.kanade.presentation.util.LocalBackPress import eu.kanade.presentation.util.Screen -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.i18n.stringResource @@ -88,7 +87,7 @@ object SettingsMainScreen : Screen() { navigateUp = backPress::invoke, actions = { AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.action_search), icon = Icons.Outlined.Search, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt index eb34f1175..4a259a903 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt @@ -10,9 +10,6 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode import eu.kanade.tachiyomi.util.system.hasDisplayCutout -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.persistentMapOf -import kotlinx.collections.immutable.toImmutableMap import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.pluralStringResource import tachiyomi.presentation.core.i18n.stringResource @@ -35,13 +32,12 @@ object SettingsReaderScreen : SearchableSettings { Preference.PreferenceItem.ListPreference( preference = readerPref.defaultReadingMode, entries = ReadingMode.entries.drop(1) - .associate { it.flagValue to stringResource(it.stringRes) } - .toImmutableMap(), + .associate { it.flagValue to stringResource(it.stringRes) }, title = stringResource(MR.strings.pref_viewer_type), ), Preference.PreferenceItem.ListPreference( preference = readerPref.doubleTapAnimSpeed, - entries = persistentMapOf( + entries = mapOf( 1 to stringResource(MR.strings.double_tap_anim_speed_0), 500 to stringResource(MR.strings.double_tap_anim_speed_normal), 250 to stringResource(MR.strings.double_tap_anim_speed_fast), @@ -78,17 +74,16 @@ object SettingsReaderScreen : SearchableSettings { val verticalNavigatorForLongStrip by readerPreferences.verticalNavigatorForLongStrip.collectAsState() return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_category_display), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.ListPreference( preference = readerPreferences.defaultOrientationType, entries = ReaderOrientation.entries.drop(1) - .associate { it.flagValue to stringResource(it.stringRes) } - .toImmutableMap(), + .associate { it.flagValue to stringResource(it.stringRes) }, title = stringResource(MR.strings.pref_rotation_type), ), Preference.PreferenceItem.ListPreference( preference = readerPreferences.readerTheme, - entries = persistentMapOf( + entries = mapOf( 1 to stringResource(MR.strings.black_background), 2 to stringResource(MR.strings.gray_background), 0 to stringResource(MR.strings.white_background), @@ -140,7 +135,7 @@ object SettingsReaderScreen : SearchableSettings { return Preference.PreferenceGroup( title = "E-Ink", - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.SwitchPreference( preference = readerPreferences.flashOnPageChange, title = stringResource(MR.strings.pref_flash_page), @@ -164,7 +159,7 @@ object SettingsReaderScreen : SearchableSettings { ), Preference.PreferenceItem.ListPreference( preference = flashColorPref, - entries = persistentMapOf( + entries = mapOf( ReaderPreferences.FlashColor.BLACK to stringResource(MR.strings.pref_flash_style_black), ReaderPreferences.FlashColor.WHITE to stringResource(MR.strings.pref_flash_style_white), ReaderPreferences.FlashColor.WHITE_BLACK @@ -181,7 +176,7 @@ object SettingsReaderScreen : SearchableSettings { private fun getReadingGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup { return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_category_reading), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.SwitchPreference( preference = readerPreferences.skipRead, title = stringResource(MR.strings.pref_skip_read_chapters), @@ -216,25 +211,23 @@ object SettingsReaderScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.pager_viewer), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.ListPreference( preference = navModePref, entries = ReaderPreferences.TapZones .mapIndexed { index, it -> index to stringResource(it) } - .toMap() - .toImmutableMap(), + .toMap(), title = stringResource(MR.strings.pref_viewer_nav), ), Preference.PreferenceItem.ListPreference( preference = readerPreferences.pagerNavInverted, - entries = persistentListOf( + entries = listOf( ReaderPreferences.TappingInvertMode.NONE, ReaderPreferences.TappingInvertMode.HORIZONTAL, ReaderPreferences.TappingInvertMode.VERTICAL, ReaderPreferences.TappingInvertMode.BOTH, ) - .associateWith { stringResource(it.titleRes) } - .toImmutableMap(), + .associateWith { stringResource(it.titleRes) }, title = stringResource(MR.strings.pref_read_with_tapping_inverted), enabled = navMode != 5, ), @@ -242,16 +235,14 @@ object SettingsReaderScreen : SearchableSettings { preference = imageScaleTypePref, entries = ReaderPreferences.ImageScaleType .mapIndexed { index, it -> index + 1 to stringResource(it) } - .toMap() - .toImmutableMap(), + .toMap(), title = stringResource(MR.strings.pref_image_scale_type), ), Preference.PreferenceItem.ListPreference( preference = readerPreferences.zoomStart, entries = ReaderPreferences.ZoomStart .mapIndexed { index, it -> index + 1 to stringResource(it) } - .toMap() - .toImmutableMap(), + .toMap(), title = stringResource(MR.strings.pref_zoom_start), ), Preference.PreferenceItem.SwitchPreference( @@ -315,25 +306,23 @@ object SettingsReaderScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.webtoon_viewer), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.ListPreference( preference = navModePref, entries = ReaderPreferences.TapZones .mapIndexed { index, it -> index to stringResource(it) } - .toMap() - .toImmutableMap(), + .toMap(), title = stringResource(MR.strings.pref_viewer_nav), ), Preference.PreferenceItem.ListPreference( preference = readerPreferences.webtoonNavInverted, - entries = persistentListOf( + entries = listOf( ReaderPreferences.TappingInvertMode.NONE, ReaderPreferences.TappingInvertMode.HORIZONTAL, ReaderPreferences.TappingInvertMode.VERTICAL, ReaderPreferences.TappingInvertMode.BOTH, ) - .associateWith { stringResource(it.titleRes) } - .toImmutableMap(), + .associateWith { stringResource(it.titleRes) }, title = stringResource(MR.strings.pref_read_with_tapping_inverted), enabled = navMode != 5, ), @@ -348,7 +337,7 @@ object SettingsReaderScreen : SearchableSettings { ), Preference.PreferenceItem.ListPreference( preference = readerPreferences.readerHideThreshold, - entries = persistentMapOf( + entries = mapOf( ReaderPreferences.ReaderHideThreshold.HIGHEST to stringResource(MR.strings.pref_highest), ReaderPreferences.ReaderHideThreshold.HIGH to stringResource(MR.strings.pref_high), ReaderPreferences.ReaderHideThreshold.LOW to stringResource(MR.strings.pref_low), @@ -405,7 +394,7 @@ object SettingsReaderScreen : SearchableSettings { val readWithVolumeKeys by readWithVolumeKeysPref.collectAsState() return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_reader_navigation), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.SwitchPreference( preference = readWithVolumeKeysPref, title = stringResource(MR.strings.pref_read_with_volume_keys), @@ -423,7 +412,7 @@ object SettingsReaderScreen : SearchableSettings { private fun getActionsGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup { return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_reader_actions), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.SwitchPreference( preference = readerPreferences.readWithLongTap, title = stringResource(MR.strings.pref_read_with_long_tap), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt index 69a599326..fb1249337 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt @@ -12,8 +12,6 @@ import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.authenticate import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticationSupported import eu.kanade.tachiyomi.util.system.telemetryIncluded -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toImmutableMap import tachiyomi.core.common.i18n.stringResource import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.pluralStringResource @@ -50,7 +48,7 @@ object SettingsSecurityScreen : SearchableSettings { return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_security), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.SwitchPreference( preference = useAuthPref, title = stringResource(MR.strings.lock_with_biometrics), @@ -70,8 +68,7 @@ object SettingsSecurityScreen : SearchableSettings { 0 -> stringResource(MR.strings.lock_always) else -> pluralStringResource(MR.plurals.lock_after_mins, count = it, it) } - } - .toImmutableMap(), + }, title = stringResource(MR.strings.lock_when_idle), enabled = authSupported && useAuth, onValueChanged = { @@ -88,8 +85,7 @@ object SettingsSecurityScreen : SearchableSettings { Preference.PreferenceItem.ListPreference( preference = securityPreferences.secureScreen, entries = SecurityPreferences.SecureScreenMode.entries - .associateWith { stringResource(it.titleRes) } - .toImmutableMap(), + .associateWith { stringResource(it.titleRes) }, title = stringResource(MR.strings.secure_screen), ), Preference.PreferenceItem.InfoPreference(stringResource(MR.strings.secure_screen_summary)), @@ -103,7 +99,7 @@ object SettingsSecurityScreen : SearchableSettings { ): Preference.PreferenceGroup { return Preference.PreferenceGroup( title = stringResource(MR.strings.pref_firebase), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.SwitchPreference( preference = privacyPreferences.crashlytics, title = stringResource(MR.strings.onboarding_permission_crashlytics), @@ -120,7 +116,7 @@ object SettingsSecurityScreen : SearchableSettings { } } -private val LockAfterValues = persistentListOf( +private val LockAfterValues = listOf( 0, // Always 1, 2, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt index 3b9846555..d3ab00118 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt @@ -55,9 +55,6 @@ import eu.kanade.tachiyomi.data.track.myanimelist.MyAnimeListApi import eu.kanade.tachiyomi.data.track.shikimori.ShikimoriApi import eu.kanade.tachiyomi.util.system.openInBrowser import eu.kanade.tachiyomi.util.system.toast -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toImmutableList -import kotlinx.collections.immutable.toPersistentMap import tachiyomi.core.common.util.lang.launchIO import tachiyomi.core.common.util.lang.withUIContext import tachiyomi.domain.source.service.SourceManager @@ -134,13 +131,12 @@ object SettingsTrackingScreen : SearchableSettings { Preference.PreferenceItem.ListPreference( preference = trackPreferences.autoUpdateTrackOnMarkRead, entries = AutoTrackState.entries - .associateWith { stringResource(it.titleRes) } - .toPersistentMap(), + .associateWith { stringResource(it.titleRes) }, title = stringResource(MR.strings.pref_auto_update_manga_on_mark_read), ), Preference.PreferenceGroup( title = stringResource(MR.strings.services), - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.TrackerPreference( tracker = trackerManager.myAnimeList, login = { context.openInBrowser(MyAnimeListApi.authUrl(), forceDefaultBrowser = true) }, @@ -185,7 +181,7 @@ object SettingsTrackingScreen : SearchableSettings { logout = service::logout, ) } + listOf(Preference.PreferenceItem.InfoPreference(enhancedTrackerInfo)) - ).toImmutableList(), + ), ), ) } diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/OpenSourceLibraryLicenseScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/OpenSourceLibraryLicenseScreen.kt index 725ed6407..0d15667e9 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/OpenSourceLibraryLicenseScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/about/OpenSourceLibraryLicenseScreen.kt @@ -18,7 +18,6 @@ import com.google.android.material.textview.MaterialTextView import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBarActions import eu.kanade.presentation.util.Screen -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.i18n.stringResource @@ -42,7 +41,7 @@ class OpenSourceLibraryLicenseScreen( actions = { if (!website.isNullOrEmpty()) { AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.website), icon = Icons.Default.Public, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt index aab15bff2..af2f4575e 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt @@ -40,7 +40,6 @@ import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBarActions import eu.kanade.presentation.util.Screen 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.common.util.lang.launchIO @@ -140,7 +139,7 @@ class ClearDatabaseScreen : Screen() { actions = { if (s.items.isNotEmpty()) { AppBarActions( - actions = persistentListOf( + actions = listOf( AppBar.Action( title = stringResource(MR.strings.action_select_all), icon = Icons.Outlined.SelectAll, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/appearance/AppLanguageScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/appearance/AppLanguageScreen.kt index b59b26aca..cfd8d8545 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/appearance/AppLanguageScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/appearance/AppLanguageScreen.kt @@ -27,8 +27,6 @@ import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.util.Screen import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.util.system.LocaleHelper -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import org.xmlpull.v1.XmlPullParser import tachiyomi.core.common.i18n.stringResource import tachiyomi.i18n.MR @@ -94,8 +92,7 @@ class AppLanguageScreen : Screen() { } } - private fun getLangs(context: Context): ImmutableList { - val langs = mutableListOf() + private fun getLangs(context: Context): List = buildList { val parser = context.resources.getXml(R.xml.locales_config) var eventType = parser.eventType while (eventType != XmlPullParser.END_DOCUMENT) { @@ -105,7 +102,7 @@ class AppLanguageScreen : Screen() { val langTag = parser.getAttributeValue(i) val displayName = LocaleHelper.getLocalizedDisplayName(langTag) if (displayName.isNotEmpty()) { - langs.add(Language(langTag, displayName, LocaleHelper.getDisplayName(langTag))) + add(Language(langTag, displayName, LocaleHelper.getDisplayName(langTag))) } } } @@ -113,10 +110,8 @@ class AppLanguageScreen : Screen() { eventType = parser.next() } - langs.sortBy { it.displayName } - langs.add(0, Language("", context.stringResource(MR.strings.label_default), null)) - - return langs.toImmutableList() + sortBy { it.displayName } + add(0, Language("", context.stringResource(MR.strings.label_default), null)) } private data class Language( diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt index fdadafb43..88e597af0 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt @@ -23,7 +23,6 @@ import eu.kanade.tachiyomi.data.backup.create.BackupCreator import eu.kanade.tachiyomi.data.backup.create.BackupOptions import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.toast -import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.flow.update import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.LabeledCheckbox @@ -103,7 +102,7 @@ class CreateBackupScreen : Screen() { @Composable private fun Options( - options: ImmutableList, + options: List, state: CreateBackupScreenModel.State, model: CreateBackupScreenModel, ) { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/BackupSchemaScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/BackupSchemaScreen.kt index 8fe1d18c1..cf8a2e413 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/BackupSchemaScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/BackupSchemaScreen.kt @@ -19,7 +19,6 @@ import eu.kanade.presentation.components.AppBarActions import eu.kanade.presentation.util.Screen 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.i18n.MR import tachiyomi.presentation.core.components.material.Scaffold @@ -45,7 +44,7 @@ class BackupSchemaScreen : Screen() { navigateUp = navigator::pop, actions = { AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.action_copy_to_clipboard), icon = Icons.Default.ContentCopy, diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/DebugInfoScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/DebugInfoScreen.kt index a07679f51..f1cd38f5f 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/DebugInfoScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/DebugInfoScreen.kt @@ -24,8 +24,6 @@ import eu.kanade.presentation.util.Screen import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.WebViewUtil import eu.kanade.tachiyomi.util.system.copyToClipboard -import kotlinx.collections.immutable.mutate -import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.guava.await import kotlinx.coroutines.launch import mihon.core.common.FeatureFlags @@ -69,7 +67,7 @@ class DebugInfoScreen : Screen() { return Preference.PreferenceGroup( title = "App info", - preferenceItems = persistentListOf( + preferenceItems = listOf( Preference.PreferenceItem.TextPreference( title = "Version", subtitle = AboutScreen.getVersionName(false), @@ -141,8 +139,8 @@ class DebugInfoScreen : Screen() { } private fun getDeviceInfoGroup(): Preference.PreferenceGroup { - val items = persistentListOf>().mutate { - it.add( + val items = buildList { + add( Preference.PreferenceItem.TextPreference( title = "Model", subtitle = "${Build.MANUFACTURER} ${Build.MODEL} (${Build.DEVICE})", @@ -150,14 +148,14 @@ class DebugInfoScreen : Screen() { ) if (DeviceUtil.oneUiVersion != null) { - it.add( + add( Preference.PreferenceItem.TextPreference( title = "OneUI version", subtitle = "${DeviceUtil.oneUiVersion}", ), ) } else if (DeviceUtil.miuiMajorVersion != null) { - it.add( + add( Preference.PreferenceItem.TextPreference( title = "MIUI version", subtitle = "${DeviceUtil.miuiMajorVersion}", @@ -172,7 +170,7 @@ class DebugInfoScreen : Screen() { } else { Build.VERSION.RELEASE } - it.add( + add( Preference.PreferenceItem.TextPreference( title = "Android version", subtitle = "$androidVersion (${Build.DISPLAY})", diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt index e006deb89..9fff3cf41 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt @@ -32,7 +32,6 @@ import eu.kanade.presentation.util.ioCoroutineScope import eu.kanade.tachiyomi.util.lang.toDateTimestampString 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 @@ -69,7 +68,7 @@ class WorkerInfoScreen : Screen() { navigateUp = navigator::pop, actions = { AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.action_copy_to_clipboard), icon = Icons.Default.ContentCopy, diff --git a/app/src/main/java/eu/kanade/presentation/reader/ChapterTransition.kt b/app/src/main/java/eu/kanade/presentation/reader/ChapterTransition.kt index f76628b1a..bbeaf19f9 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/ChapterTransition.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/ChapterTransition.kt @@ -37,7 +37,6 @@ import eu.kanade.presentation.theme.TachiyomiPreviewTheme import eu.kanade.tachiyomi.data.database.models.toDomainChapter import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter -import kotlinx.collections.immutable.persistentMapOf import tachiyomi.domain.chapter.model.Chapter import tachiyomi.domain.chapter.service.calculateChapterGap import tachiyomi.i18n.MR @@ -235,7 +234,7 @@ private fun ChapterText( maxLines = 5, overflow = TextOverflow.Ellipsis, style = MaterialTheme.typography.titleLarge, - inlineContent = persistentMapOf( + inlineContent = mapOf( DOWNLOADED_ICON_ID to InlineTextContent( Placeholder( width = 22.sp, diff --git a/app/src/main/java/eu/kanade/presentation/reader/appbars/ReaderTopBar.kt b/app/src/main/java/eu/kanade/presentation/reader/appbars/ReaderTopBar.kt index 9d783af7b..29152a466 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/appbars/ReaderTopBar.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/appbars/ReaderTopBar.kt @@ -8,7 +8,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBarActions -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.stringResource @@ -32,51 +31,49 @@ fun ReaderTopBar( navigateUp = navigateUp, actions = { AppBarActions( - actions = persistentListOf().builder() - .apply { - add( - AppBar.Action( - title = stringResource( - if (bookmarked) { - MR.strings.action_remove_bookmark - } else { - MR.strings.action_bookmark - }, - ), - icon = if (bookmarked) { - Icons.Outlined.Bookmark + actions = buildList { + add( + AppBar.Action( + title = stringResource( + if (bookmarked) { + MR.strings.action_remove_bookmark } else { - Icons.Outlined.BookmarkBorder + MR.strings.action_bookmark }, - onClick = onToggleBookmarked, + ), + icon = if (bookmarked) { + Icons.Outlined.Bookmark + } else { + Icons.Outlined.BookmarkBorder + }, + onClick = onToggleBookmarked, + ), + ) + onOpenInWebView?.let { + add( + AppBar.OverflowAction( + title = stringResource(MR.strings.action_open_in_web_view), + onClick = it, ), ) - onOpenInWebView?.let { - add( - AppBar.OverflowAction( - title = stringResource(MR.strings.action_open_in_web_view), - onClick = it, - ), - ) - } - onOpenInBrowser?.let { - add( - AppBar.OverflowAction( - title = stringResource(MR.strings.action_open_in_browser), - onClick = it, - ), - ) - } - onShare?.let { - add( - AppBar.OverflowAction( - title = stringResource(MR.strings.action_share), - onClick = it, - ), - ) - } } - .build(), + onOpenInBrowser?.let { + add( + AppBar.OverflowAction( + title = stringResource(MR.strings.action_open_in_browser), + onClick = it, + ), + ) + } + onShare?.let { + add( + AppBar.OverflowAction( + title = stringResource(MR.strings.action_share), + onClick = it, + ), + ) + } + }, ) }, ) diff --git a/app/src/main/java/eu/kanade/presentation/reader/settings/ReaderSettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/reader/settings/ReaderSettingsDialog.kt index a15c9e541..832007449 100644 --- a/app/src/main/java/eu/kanade/presentation/reader/settings/ReaderSettingsDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/reader/settings/ReaderSettingsDialog.kt @@ -15,7 +15,6 @@ import androidx.compose.ui.window.DialogWindowProvider import eu.kanade.presentation.components.TabbedDialog import eu.kanade.presentation.components.TabbedDialogPaddings import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.stringResource @@ -26,7 +25,7 @@ fun ReaderSettingsDialog( onHideMenus: () -> Unit, screenModel: ReaderSettingsScreenModel, ) { - val tabTitles = persistentListOf( + val tabTitles = listOf( stringResource(MR.strings.pref_category_reading_mode), stringResource(MR.strings.pref_category_general), stringResource(MR.strings.custom_filter), diff --git a/app/src/main/java/eu/kanade/presentation/track/TrackInfoDialogSelector.kt b/app/src/main/java/eu/kanade/presentation/track/TrackInfoDialogSelector.kt index c6fda5cc5..8fb3df1d2 100644 --- a/app/src/main/java/eu/kanade/presentation/track/TrackInfoDialogSelector.kt +++ b/app/src/main/java/eu/kanade/presentation/track/TrackInfoDialogSelector.kt @@ -33,9 +33,6 @@ import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.unit.dp import dev.icerock.moko.resources.StringResource import eu.kanade.presentation.theme.TachiyomiPreviewTheme -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentMapOf -import kotlinx.collections.immutable.toImmutableList import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.ScrollbarLazyColumn import tachiyomi.presentation.core.components.WheelNumberPicker @@ -104,7 +101,7 @@ fun TrackChapterSelector( title = stringResource(MR.strings.chapters), content = { WheelNumberPicker( - items = range.toImmutableList(), + items = range.toList(), modifier = Modifier.align(Alignment.Center), startIndex = selection, onSelectionChanged = { onSelectionChange(it) }, @@ -119,7 +116,7 @@ fun TrackChapterSelector( fun TrackScoreSelector( selection: String, onSelectionChange: (String) -> Unit, - selections: ImmutableList, + selections: List, onConfirm: () -> Unit, onDismissRequest: () -> Unit, ) { @@ -232,7 +229,7 @@ private fun TrackStatusSelectorPreviews() { TrackStatusSelector( selection = 1, onSelectionChange = {}, - selections = persistentMapOf( + selections = mapOf( // Anilist values 1L to MR.strings.reading, 2L to MR.strings.plan_to_read, diff --git a/app/src/main/java/eu/kanade/presentation/updates/UpdatesFilterDialog.kt b/app/src/main/java/eu/kanade/presentation/updates/UpdatesFilterDialog.kt index e17c9a022..95b8a7162 100644 --- a/app/src/main/java/eu/kanade/presentation/updates/UpdatesFilterDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/updates/UpdatesFilterDialog.kt @@ -20,7 +20,6 @@ import androidx.compose.ui.Modifier import eu.kanade.presentation.components.TabbedDialog import eu.kanade.presentation.components.TabbedDialogPaddings import eu.kanade.tachiyomi.ui.updates.UpdatesSettingsScreenModel -import kotlinx.collections.immutable.persistentListOf import tachiyomi.core.common.preference.getAndSet import tachiyomi.domain.updates.service.UpdatesPreferences import tachiyomi.i18n.MR @@ -37,7 +36,7 @@ fun UpdatesFilterDialog( ) { TabbedDialog( onDismissRequest = onDismissRequest, - tabTitles = persistentListOf( + tabTitles = listOf( stringResource(MR.strings.action_filter), ), ) { diff --git a/app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt b/app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt index 84507b994..87cde8425 100644 --- a/app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt @@ -30,7 +30,6 @@ import eu.kanade.presentation.manga.components.MangaBottomActionMenu 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.i18n.MR @@ -156,7 +155,7 @@ private fun UpdatesAppBar( title = stringResource(MR.strings.label_recent_updates), actions = { AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.action_filter), icon = Icons.Outlined.FilterList, @@ -180,7 +179,7 @@ private fun UpdatesAppBar( onCancelActionMode = onCancelActionMode, actionModeActions = { AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.action_select_all), icon = Icons.Outlined.SelectAll, diff --git a/app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt b/app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt index 72b8d2fda..5254cde3d 100644 --- a/app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt +++ b/app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt @@ -51,7 +51,6 @@ 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.i18n.MR import tachiyomi.presentation.core.components.material.Scaffold @@ -234,7 +233,7 @@ fun WebViewScreenContent( navigationIcon = Icons.Outlined.Close, actions = { AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.action_webview_back), icon = Icons.AutoMirrored.Outlined.ArrowBack, @@ -271,7 +270,7 @@ fun WebViewScreenContent( title = stringResource(MR.strings.pref_clear_cookies), onClick = { onClearCookies(currentUrl) }, ), - ).builder().apply { + ).toMutableList().apply { if (windowStack.size > 1) { add( 0, @@ -282,7 +281,7 @@ fun WebViewScreenContent( ), ) } - }.build(), + }, ) }, ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt index 27397c6e1..3639a016d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt @@ -1,7 +1,6 @@ package eu.kanade.tachiyomi.data.backup.create import dev.icerock.moko.resources.StringResource -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR data class BackupOptions( @@ -33,7 +32,7 @@ data class BackupOptions( fun canCreate() = libraryEntries || categories || appSettings || extensionStores || sourceSettings companion object { - val libraryOptions = persistentListOf( + val libraryOptions = listOf( Entry( label = MR.strings.manga, getter = BackupOptions::libraryEntries, @@ -70,7 +69,7 @@ data class BackupOptions( ), ) - val settingsOptions = persistentListOf( + val settingsOptions = listOf( Entry( label = MR.strings.app_settings, getter = BackupOptions::appSettings, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/RestoreOptions.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/RestoreOptions.kt index 4bdd44916..5ae73cd28 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/RestoreOptions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/RestoreOptions.kt @@ -1,7 +1,6 @@ package eu.kanade.tachiyomi.data.backup.restore import dev.icerock.moko.resources.StringResource -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR data class RestoreOptions( @@ -23,7 +22,7 @@ data class RestoreOptions( fun canRestore() = libraryEntries || categories || appSettings || extensionStores || sourceSettings companion object { - val options = persistentListOf( + val options = listOf( Entry( label = MR.strings.label_library, getter = RestoreOptions::libraryEntries, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/Tracker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/Tracker.kt index c146c2e4e..f016dca0a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/Tracker.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/Tracker.kt @@ -5,7 +5,6 @@ import androidx.annotation.DrawableRes import dev.icerock.moko.resources.StringResource import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.track.model.TrackSearch -import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.flow.Flow import okhttp3.OkHttpClient import tachiyomi.domain.track.model.Track as DomainTrack @@ -36,7 +35,7 @@ interface Tracker { fun getCompletionStatus(): Long - fun getScoreList(): ImmutableList + fun getScoreList(): List // TODO: Store all scores as 10 point in the future maybe? fun get10PointScore(track: DomainTrack): Double diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt index ecb98f015..67205f6e2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt @@ -8,9 +8,6 @@ import eu.kanade.tachiyomi.data.track.BaseTracker import eu.kanade.tachiyomi.data.track.DeletableTracker import eu.kanade.tachiyomi.data.track.anilist.dto.ALOAuth import eu.kanade.tachiyomi.data.track.model.TrackSearch -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toImmutableList import kotlinx.serialization.json.Json import tachiyomi.i18n.MR import uy.kohesive.injekt.injectLazy @@ -77,18 +74,18 @@ class Anilist(id: Long) : BaseTracker(id, "AniList"), DeletableTracker { override fun getCompletionStatus(): Long = COMPLETED - override fun getScoreList(): ImmutableList { + override fun getScoreList(): List { return when (scorePreference.get()) { // 10 point - POINT_10 -> IntRange(0, 10).map(Int::toString).toImmutableList() + POINT_10 -> IntRange(0, 10).map(Int::toString) // 100 point - POINT_100 -> IntRange(0, 100).map(Int::toString).toImmutableList() + POINT_100 -> IntRange(0, 100).map(Int::toString) // 5 stars - POINT_5 -> IntRange(0, 5).map { "$it ★" }.toImmutableList() + POINT_5 -> IntRange(0, 5).map { "$it ★" } // Smiley - POINT_3 -> persistentListOf("-", "😦", "😐", "😊") + POINT_3 -> listOf("-", "😦", "😐", "😊") // 10 point decimal - POINT_10_DECIMAL -> IntRange(0, 100).map { (it / 10f).toString() }.toImmutableList() + POINT_10_DECIMAL -> IntRange(0, 100).map { (it / 10f).toString() } else -> throw Exception("Unknown score type") } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt index ea1ca8634..3766e5956 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt @@ -6,8 +6,6 @@ import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.track.BaseTracker import eu.kanade.tachiyomi.data.track.bangumi.dto.BGMOAuth import eu.kanade.tachiyomi.data.track.model.TrackSearch -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.serialization.json.Json import tachiyomi.i18n.MR import uy.kohesive.injekt.injectLazy @@ -23,7 +21,7 @@ class Bangumi(id: Long) : BaseTracker(id, "Bangumi") { override val supportsPrivateTracking: Boolean = true - override fun getScoreList(): ImmutableList = SCORE_LIST + override fun getScoreList(): List = SCORE_LIST override fun displayScore(track: DomainTrack): String { return track.score.toInt().toString() @@ -142,6 +140,5 @@ class Bangumi(id: Long) : BaseTracker(id, "Bangumi") { private val SCORE_LIST = IntRange(0, 10) .map(Int::toString) - .toImmutableList() } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/Kavita.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/Kavita.kt index ae1068d68..ab66e0324 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/Kavita.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/Kavita.kt @@ -9,8 +9,6 @@ import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.sourcePreferences -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf import tachiyomi.domain.manga.model.Manga import tachiyomi.domain.source.service.SourceManager import tachiyomi.i18n.MR @@ -50,7 +48,7 @@ class Kavita(id: Long) : BaseTracker(id, "Kavita"), EnhancedTracker { override fun getCompletionStatus(): Long = COMPLETED - override fun getScoreList(): ImmutableList = persistentListOf() + override fun getScoreList(): List = listOf() override fun displayScore(track: DomainTrack): String = "" diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt index 9fec22523..ae7749cdd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt @@ -7,8 +7,6 @@ import eu.kanade.tachiyomi.data.track.BaseTracker import eu.kanade.tachiyomi.data.track.DeletableTracker import eu.kanade.tachiyomi.data.track.kitsu.dto.KitsuOAuth import eu.kanade.tachiyomi.data.track.model.TrackSearch -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.serialization.json.Json import tachiyomi.i18n.MR import uy.kohesive.injekt.injectLazy @@ -56,9 +54,9 @@ class Kitsu(id: Long) : BaseTracker(id, "Kitsu"), DeletableTracker { override fun getCompletionStatus(): Long = COMPLETED - override fun getScoreList(): ImmutableList { + override fun getScoreList(): List { val df = DecimalFormat("0.#") - return (listOf("0") + IntRange(2, 20).map { df.format(it / 2f) }).toImmutableList() + return (listOf("0") + IntRange(2, 20).map { df.format(it / 2f) }) } override fun indexToScore(index: Int): Double { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/komga/Komga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/komga/Komga.kt index 768df7dc3..8eb1a0f09 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/komga/Komga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/komga/Komga.kt @@ -7,8 +7,6 @@ import eu.kanade.tachiyomi.data.track.BaseTracker import eu.kanade.tachiyomi.data.track.EnhancedTracker import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.source.Source -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf import okhttp3.Dns import okhttp3.OkHttpClient import tachiyomi.domain.manga.model.Manga @@ -47,7 +45,7 @@ class Komga(id: Long) : BaseTracker(id, "Komga"), EnhancedTracker { override fun getCompletionStatus(): Long = COMPLETED - override fun getScoreList(): ImmutableList = persistentListOf() + override fun getScoreList(): List = listOf() override fun displayScore(track: DomainTrack): String = "" diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdates.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdates.kt index 5550028b7..038bde4e9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdates.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdates.kt @@ -10,8 +10,6 @@ import eu.kanade.tachiyomi.data.track.mangaupdates.dto.MURating import eu.kanade.tachiyomi.data.track.mangaupdates.dto.copyTo import eu.kanade.tachiyomi.data.track.mangaupdates.dto.toTrackSearch import eu.kanade.tachiyomi.data.track.model.TrackSearch -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import tachiyomi.i18n.MR import tachiyomi.domain.track.model.Track as DomainTrack @@ -34,7 +32,6 @@ class MangaUpdates(id: Long) : BaseTracker(id, "MangaUpdates"), DeletableTracker } } } - .toImmutableList() } private val interceptor by lazy { MangaUpdatesInterceptor(this) } @@ -62,7 +59,7 @@ class MangaUpdates(id: Long) : BaseTracker(id, "MangaUpdates"), DeletableTracker override fun getCompletionStatus(): Long = COMPLETE_LIST - override fun getScoreList(): ImmutableList = SCORE_LIST + override fun getScoreList(): List = SCORE_LIST override fun indexToScore(index: Int): Double = if (index == 0) 0.0 else SCORE_LIST[index].toDouble() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeList.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeList.kt index 1e529754d..929727272 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeList.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeList.kt @@ -7,8 +7,6 @@ import eu.kanade.tachiyomi.data.track.BaseTracker import eu.kanade.tachiyomi.data.track.DeletableTracker import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.data.track.myanimelist.dto.MALOAuth -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.serialization.json.Json import tachiyomi.i18n.MR import uy.kohesive.injekt.injectLazy @@ -29,7 +27,6 @@ class MyAnimeList(id: Long) : BaseTracker(id, "MyAnimeList"), DeletableTracker { private val SCORE_LIST = IntRange(0, 10) .map(Int::toString) - .toImmutableList() } private val json: Json by injectLazy() @@ -61,7 +58,7 @@ class MyAnimeList(id: Long) : BaseTracker(id, "MyAnimeList"), DeletableTracker { override fun getCompletionStatus(): Long = COMPLETED - override fun getScoreList(): ImmutableList = SCORE_LIST + override fun getScoreList(): List = SCORE_LIST override fun displayScore(track: DomainTrack): String { return track.score.toInt().toString() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/Shikimori.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/Shikimori.kt index fe22cd2e5..5b7240989 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/Shikimori.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/Shikimori.kt @@ -7,8 +7,6 @@ import eu.kanade.tachiyomi.data.track.BaseTracker import eu.kanade.tachiyomi.data.track.DeletableTracker import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.data.track.shikimori.dto.SMOAuth -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.serialization.json.Json import tachiyomi.i18n.MR import uy.kohesive.injekt.injectLazy @@ -26,7 +24,6 @@ class Shikimori(id: Long) : BaseTracker(id, "Shikimori"), DeletableTracker { private val SCORE_LIST = IntRange(0, 10) .map(Int::toString) - .toImmutableList() } private val json: Json by injectLazy() @@ -35,7 +32,7 @@ class Shikimori(id: Long) : BaseTracker(id, "Shikimori"), DeletableTracker { private val api by lazy { ShikimoriApi(id, client, interceptor) } - override fun getScoreList(): ImmutableList = SCORE_LIST + override fun getScoreList(): List = SCORE_LIST override fun displayScore(track: DomainTrack): String { return track.score.toInt().toString() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/Suwayomi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/Suwayomi.kt index 904fb0292..56fa46c4c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/Suwayomi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/Suwayomi.kt @@ -7,8 +7,6 @@ import eu.kanade.tachiyomi.data.track.BaseTracker import eu.kanade.tachiyomi.data.track.EnhancedTracker import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.source.Source -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.domain.manga.model.Manga as DomainManga import tachiyomi.domain.track.model.Track as DomainTrack @@ -43,7 +41,7 @@ class Suwayomi(id: Long) : BaseTracker(id, "Suwayomi"), EnhancedTracker { override fun getCompletionStatus(): Long = COMPLETED - override fun getScoreList(): ImmutableList = persistentListOf() + override fun getScoreList(): List = listOf() override fun displayScore(track: DomainTrack): String = "" diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseTab.kt index 166ad2ca5..d76b85ccd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseTab.kt @@ -22,7 +22,6 @@ 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 import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.collectLatest @@ -62,7 +61,7 @@ data object BrowseTab : Tab { val extensionsScreenModel = rememberScreenModel { ExtensionsScreenModel() } val extensionsState by extensionsScreenModel.state.collectAsState() - val tabs = persistentListOf( + val tabs = listOf( sourcesTab(), extensionsTab(extensionsScreenModel), migrateSourceTab(), diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreenModel.kt index d78af8ca9..192c8d806 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionFilterScreenModel.kt @@ -6,11 +6,6 @@ import cafe.adriel.voyager.core.model.screenModelScope import eu.kanade.domain.extension.interactor.GetExtensionLanguages import eu.kanade.domain.source.interactor.ToggleLanguage import eu.kanade.domain.source.service.SourcePreferences -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.ImmutableSet -import kotlinx.collections.immutable.persistentSetOf -import kotlinx.collections.immutable.toImmutableList -import kotlinx.collections.immutable.toImmutableSet import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.catch @@ -46,8 +41,8 @@ class ExtensionFilterScreenModel( .collectLatest { (extensionLanguages, enabledLanguages) -> mutableState.update { ExtensionFilterState.Success( - languages = extensionLanguages.toImmutableList(), - enabledLanguages = enabledLanguages.toImmutableSet(), + languages = extensionLanguages, + enabledLanguages = enabledLanguages, ) } } @@ -70,8 +65,8 @@ sealed interface ExtensionFilterState { @Immutable data class Success( - val languages: ImmutableList, - val enabledLanguages: ImmutableSet = persistentSetOf(), + val languages: List, + val enabledLanguages: Set = setOf(), ) : ExtensionFilterState { val isEmpty: Boolean diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsTab.kt index b92965f7a..355dd7772 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsTab.kt @@ -21,7 +21,6 @@ import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreen import eu.kanade.tachiyomi.ui.webview.WebViewScreen import eu.kanade.tachiyomi.util.system.isPackageInstalled -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.stringResource @@ -39,7 +38,7 @@ fun extensionsTab( titleRes = MR.strings.label_extensions, badgeNumber = state.updates.takeIf { it > 0 }, searchEnabled = true, - actions = persistentListOf( + actions = listOf( AppBar.OverflowAction( title = stringResource(MR.strings.action_filter), onClick = { navigator.push(ExtensionFilterScreen()) }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsScreenModel.kt index e763fb6b4..b682245f1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsScreenModel.kt @@ -14,9 +14,6 @@ import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.util.system.LocaleHelper -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.catch @@ -78,10 +75,10 @@ class ExtensionDetailsScreenModel( } .catch { throwable -> logcat(LogPriority.ERROR, throwable) - mutableState.update { it.copy(_sources = persistentListOf()) } + mutableState.update { it.copy(_sources = listOf()) } } .collectLatest { sources -> - mutableState.update { it.copy(_sources = sources.toImmutableList()) } + mutableState.update { it.copy(_sources = sources) } } } } @@ -142,11 +139,11 @@ class ExtensionDetailsScreenModel( data class State( val extension: Extension.Installed? = null, val isIncognito: Boolean = false, - private val _sources: ImmutableList? = null, + private val _sources: List? = null, ) { - val sources: ImmutableList - get() = _sources ?: persistentListOf() + val sources: List + get() = _sources ?: listOf() val isLoading: Boolean get() = extension == null || _sources == null diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrateMangaScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrateMangaScreenModel.kt index f3f3de4dd..81c472cf5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrateMangaScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrateMangaScreenModel.kt @@ -4,9 +4,6 @@ import androidx.compose.runtime.Immutable import cafe.adriel.voyager.core.model.StateScreenModel import cafe.adriel.voyager.core.model.screenModelScope import eu.kanade.tachiyomi.source.Source -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.catch @@ -44,13 +41,12 @@ class MigrateMangaScreenModel( logcat(LogPriority.ERROR, it) _events.send(MigrationMangaEvent.FailedFetchingFavorites) mutableState.update { state -> - state.copy(titleList = persistentListOf()) + state.copy(titleList = listOf()) } } .map { manga -> manga .sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER) { it.title }) - .toImmutableList() } .collectLatest { list -> mutableState.update { it.copy(titleList = list) } @@ -75,11 +71,11 @@ class MigrateMangaScreenModel( data class State( val source: Source? = null, val selection: Set = emptySet(), - private val titleList: ImmutableList? = null, + private val titleList: List? = null, ) { - val titles: ImmutableList - get() = titleList ?: persistentListOf() + val titles: List + get() = titleList ?: listOf() val isLoading: Boolean get() = source == null || titleList == null diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceScreenModel.kt index 5f41c137e..aa1339929 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceScreenModel.kt @@ -6,9 +6,6 @@ import cafe.adriel.voyager.core.model.screenModelScope import eu.kanade.domain.source.interactor.GetSourcesWithFavoriteCount import eu.kanade.domain.source.interactor.SetMigrateSorting import eu.kanade.domain.source.service.SourcePreferences -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.collectLatest @@ -43,7 +40,7 @@ class MigrateSourceScreenModel( mutableState.update { it.copy( isLoading = false, - items = sources.toImmutableList(), + items = sources, ) } } @@ -83,7 +80,7 @@ class MigrateSourceScreenModel( @Immutable data class State( val isLoading: Boolean = true, - val items: ImmutableList> = persistentListOf(), + val items: List> = listOf(), val sortingMode: SetMigrateSorting.Mode = SetMigrateSorting.Mode.ALPHABETICAL, val sortingDirection: SetMigrateSorting.Direction = SetMigrateSorting.Direction.ASCENDING, ) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceTab.kt index a3ebea28f..86566b113 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrateSourceTab.kt @@ -14,7 +14,6 @@ import eu.kanade.presentation.browse.MigrateSourceScreen import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.TabContent import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrateMangaScreen -import kotlinx.collections.immutable.persistentListOf import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.stringResource @@ -27,7 +26,7 @@ fun Screen.migrateSourceTab(): TabContent { return TabContent( titleRes = MR.strings.label_migration, - actions = persistentListOf( + actions = listOf( AppBar.Action( title = stringResource(MR.strings.migration_help_guide), icon = Icons.AutoMirrored.Outlined.HelpOutline, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesScreenModel.kt index 0f777f7e5..09510f4a2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesScreenModel.kt @@ -7,9 +7,6 @@ import eu.kanade.domain.source.interactor.GetEnabledSources import eu.kanade.domain.source.interactor.ToggleSource import eu.kanade.domain.source.interactor.ToggleSourcePin import eu.kanade.presentation.browse.SourceUiModel -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.collectLatest @@ -76,8 +73,7 @@ class SourcesScreenModel( SourceUiModel.Item(source) }.toTypedArray(), ) - } - .toImmutableList(), + }, ) } } @@ -108,7 +104,7 @@ class SourcesScreenModel( data class State( val dialog: Dialog? = null, val isLoading: Boolean = true, - val items: ImmutableList = persistentListOf(), + val items: List = listOf(), ) { val isEmpty = items.isEmpty() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt index f644f8c8d..d312fae90 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt @@ -17,7 +17,6 @@ import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.TabContent 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 import tachiyomi.i18n.MR @@ -31,7 +30,7 @@ fun Screen.sourcesTab(): TabContent { return TabContent( titleRes = MR.strings.label_sources, - actions = persistentListOf( + actions = listOf( AppBar.Action( title = stringResource(MR.strings.action_global_search), icon = Icons.Outlined.TravelExplore, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt index bf55f35f6..ef0d324d4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt @@ -23,8 +23,6 @@ import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.util.removeCovers -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.emptyFlow @@ -265,7 +263,7 @@ class BrowseSourceScreenModel( setDialog( Dialog.ChangeMangaCategory( manga, - categories.mapAsCheckboxState { it.id in preselectedIds }.toImmutableList(), + categories.mapAsCheckboxState { it.id in preselectedIds }, ), ) } @@ -339,7 +337,7 @@ class BrowseSourceScreenModel( data class AddDuplicateManga(val manga: Manga, val duplicates: List) : Dialog data class ChangeMangaCategory( val manga: Manga, - val initialSelection: ImmutableList>, + val initialSelection: List>, ) : Dialog data class Migrate(val target: Manga, val current: Manga) : Dialog } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt index cf3578bff..3bb0c60b6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt @@ -9,10 +9,6 @@ import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.presentation.util.ioCoroutineScope import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.source.CatalogueSource -import kotlinx.collections.immutable.PersistentMap -import kotlinx.collections.immutable.mutate -import kotlinx.collections.immutable.persistentMapOf -import kotlinx.collections.immutable.toPersistentMap import kotlinx.coroutines.Job import kotlinx.coroutines.asCoroutineDispatcher import kotlinx.coroutines.async @@ -143,14 +139,12 @@ abstract class SearchScreenModel( val existingResults = state.value.items updateItems( sources - .associateWith { existingResults[it] ?: SearchItemResult.Loading } - .toPersistentMap(), + .associateWith { existingResults[it] ?: SearchItemResult.Loading }, ) } else { updateItems( sources - .associateWith { SearchItemResult.Loading } - .toPersistentMap(), + .associateWith { SearchItemResult.Loading }, ) } @@ -185,21 +179,17 @@ abstract class SearchScreenModel( } } - private fun updateItems(items: PersistentMap) { + private fun updateItems(items: Map) { mutableState.update { it.copy( items = items - .toSortedMap(sortComparator(items)) - .toPersistentMap(), + .toSortedMap(sortComparator(items)), ) } } private fun updateItem(source: CatalogueSource, result: SearchItemResult) { - val newItems = state.value.items.mutate { - it[source] = result - } - updateItems(newItems) + updateItems(state.value.items + (source to result)) } fun setMigrateDialog(currentId: Long, target: Manga) { @@ -219,7 +209,7 @@ abstract class SearchScreenModel( val searchQuery: String? = null, val sourceFilter: SourceFilter = SourceFilter.PinnedOnly, val onlyShowHasResults: Boolean = false, - val items: PersistentMap = persistentMapOf(), + val items: Map = mapOf(), val dialog: Dialog? = null, ) { val progress: Int = items.count { it.value !is SearchItemResult.Loading } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryScreen.kt index 6d20c630e..4f73f6591 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryScreen.kt @@ -15,7 +15,6 @@ import eu.kanade.presentation.category.components.CategoryDeleteDialog import eu.kanade.presentation.category.components.CategoryRenameDialog import eu.kanade.presentation.util.Screen import eu.kanade.tachiyomi.util.system.toast -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.collectLatest import tachiyomi.presentation.core.screens.LoadingScreen @@ -51,14 +50,14 @@ class CategoryScreen : Screen() { CategoryCreateDialog( onDismissRequest = screenModel::dismissDialog, onCreate = screenModel::createCategory, - categories = successState.categories.fastMap { it.name }.toImmutableList(), + categories = successState.categories.fastMap { it.name }, ) } is CategoryDialog.Rename -> { CategoryRenameDialog( onDismissRequest = screenModel::dismissDialog, onRename = { screenModel.renameCategory(dialog.category, it) }, - categories = successState.categories.fastMap { it.name }.toImmutableList(), + categories = successState.categories.fastMap { it.name }, category = dialog.category.name, ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryScreenModel.kt index b98b77e4e..6d8999bf7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryScreenModel.kt @@ -4,8 +4,6 @@ import androidx.compose.runtime.Immutable import cafe.adriel.voyager.core.model.StateScreenModel import cafe.adriel.voyager.core.model.screenModelScope import dev.icerock.moko.resources.StringResource -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.receiveAsFlow @@ -39,8 +37,7 @@ class CategoryScreenModel( mutableState.update { CategoryScreenState.Success( categories = categories - .filterNot(Category::isSystemCategory) - .toImmutableList(), + .filterNot(Category::isSystemCategory), ) } } @@ -120,7 +117,7 @@ sealed interface CategoryScreenState { @Immutable data class Success( - val categories: ImmutableList, + val categories: List, val dialog: CategoryDialog? = null, ) : CategoryScreenState { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt index fd325a8be..1acac812f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadQueueScreen.kt @@ -51,7 +51,6 @@ import eu.kanade.presentation.components.DropdownMenu import eu.kanade.presentation.components.NestedMenuItem import eu.kanade.presentation.util.Screen import eu.kanade.tachiyomi.databinding.DownloadListBinding -import kotlinx.collections.immutable.persistentListOf import tachiyomi.core.common.util.lang.launchUI import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.Pill @@ -181,7 +180,7 @@ object DownloadQueueScreen : Screen() { } AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.action_sort), icon = Icons.AutoMirrored.Outlined.Sort, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt index 44cc1d6ec..06a4b7895 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt @@ -9,8 +9,6 @@ import eu.kanade.domain.manga.interactor.UpdateManga import eu.kanade.domain.track.interactor.AddTracks import eu.kanade.presentation.history.HistoryUiModel import eu.kanade.tachiyomi.util.lang.toLocalDate -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow @@ -230,7 +228,7 @@ class HistoryScreenModel( currentState.copy( dialog = Dialog.ChangeCategory( manga = manga, - initialSelection = categories.mapAsCheckboxState { it.id in selection }.toImmutableList(), + initialSelection = categories.mapAsCheckboxState { it.id in selection }, ), ) } @@ -250,7 +248,7 @@ class HistoryScreenModel( data class DuplicateManga(val manga: Manga, val duplicates: List) : Dialog data class ChangeCategory( val manga: Manga, - val initialSelection: ImmutableList>, + val initialSelection: List>, ) : Dialog data class Migrate(val target: Manga, val current: Manga) : Dialog } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt index 09d02f338..361616249 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt @@ -23,8 +23,6 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.util.chapter.getNextUnread import eu.kanade.tachiyomi.util.removeCovers -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.combine @@ -709,7 +707,7 @@ class LibraryScreenModel( else -> CheckboxState.State.None(it) } } - .toImmutableList() + mutableState.update { it.copy(dialog = Dialog.ChangeCategory(mangaList, preselected)) } } } @@ -726,7 +724,7 @@ class LibraryScreenModel( data object SettingsSheet : Dialog data class ChangeCategory( val manga: List, - val initialSelection: ImmutableList>, + val initialSelection: List>, ) : Dialog data class DeleteManga(val manga: List) : Dialog } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt index fc0199d38..a7a5cd031 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt @@ -43,7 +43,6 @@ import eu.kanade.tachiyomi.ui.home.HomeScreen import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.ui.manga.MangaScreen import eu.kanade.tachiyomi.ui.reader.ReaderActivity -import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.receiveAsFlow @@ -168,7 +167,7 @@ data object LibraryTab : Tab { EmptyScreen( stringRes = MR.strings.information_empty_library, modifier = Modifier.padding(contentPadding), - actions = persistentListOf( + actions = listOf( EmptyScreenAction( stringRes = MR.strings.getting_started_guide, icon = Icons.AutoMirrored.Outlined.HelpOutline, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt index 78c80c85f..f2ad61174 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt @@ -42,8 +42,6 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.util.chapter.getNextUnread import eu.kanade.tachiyomi.util.removeCovers import eu.kanade.tachiyomi.util.system.toast -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.flow.catch @@ -374,7 +372,7 @@ class MangaScreenModel( successState.copy( dialog = Dialog.ChangeCategory( manga = manga, - initialSelection = categories.mapAsCheckboxState { it.id in selection }.toImmutableList(), + initialSelection = categories.mapAsCheckboxState { it.id in selection }, ), ) } @@ -1081,7 +1079,7 @@ class MangaScreenModel( sealed interface Dialog { data class ChangeCategory( val manga: Manga, - val initialSelection: ImmutableList>, + val initialSelection: List>, ) : Dialog data class DeleteChapters(val chapters: List) : Dialog data class DuplicateManga(val manga: Manga, val duplicates: List) : Dialog diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt index 355c637dd..4bf0ee186 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt @@ -58,7 +58,6 @@ import eu.kanade.tachiyomi.util.lang.toLocalDate import eu.kanade.tachiyomi.util.system.copyToClipboard import eu.kanade.tachiyomi.util.system.openInBrowser import eu.kanade.tachiyomi.util.system.toast -import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.distinctUntilChanged @@ -416,7 +415,7 @@ private data class TrackScoreSelectorScreen( private val tracker: Tracker, ) : StateScreenModel(State(tracker.displayScore(track))) { - fun getSelections(): ImmutableList { + fun getSelections(): List { return tracker.getScoreList() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt index 943d34b30..ee64a5672 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt @@ -18,10 +18,6 @@ import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.util.lang.toLocalDate -import kotlinx.collections.immutable.PersistentList -import kotlinx.collections.immutable.mutate -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toPersistentList import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.catch @@ -106,7 +102,6 @@ class UpdatesScreenModel( updates .toUpdateItems() .applyFilters(itemPreferences) - .toPersistentList() } .collectLatest { updateItems -> mutableState.update { @@ -199,9 +194,9 @@ class UpdatesScreenModel( */ private fun updateDownloadState(download: Download) { mutableState.update { state -> - val newItems = state.items.mutate { list -> + val newItems = state.items.toMutableList().also { list -> val modifiedIndex = list.indexOfFirst { it.update.chapterId == download.chapter.id } - if (modifiedIndex < 0) return@mutate + if (modifiedIndex < 0) return@also val item = list[modifiedIndex] list[modifiedIndex] = item.copy( @@ -381,7 +376,7 @@ class UpdatesScreenModel( } } } - state.copy(items = newItems.toPersistentList()) + state.copy(items = newItems) } } @@ -391,7 +386,7 @@ class UpdatesScreenModel( selectedChapterIds.addOrRemove(it.update.chapterId, selected) it.copy(selected = selected) } - state.copy(items = newItems.toPersistentList()) + state.copy(items = newItems) } selectedPositions[0] = -1 @@ -404,7 +399,7 @@ class UpdatesScreenModel( selectedChapterIds.addOrRemove(it.update.chapterId, !it.selected) it.copy(selected = !it.selected) } - state.copy(items = newItems.toPersistentList()) + state.copy(items = newItems) } selectedPositions[0] = -1 selectedPositions[1] = -1 @@ -453,7 +448,7 @@ class UpdatesScreenModel( data class State( val isLoading: Boolean = true, val hasActiveFilters: Boolean = false, - val items: PersistentList = persistentListOf(), + val items: List = listOf(), val dialog: Dialog? = null, ) { val selected = items.filter { it.selected } diff --git a/app/src/main/java/eu/kanade/test/DummyTracker.kt b/app/src/main/java/eu/kanade/test/DummyTracker.kt index 884ccd9dd..bf4355a16 100644 --- a/app/src/main/java/eu/kanade/test/DummyTracker.kt +++ b/app/src/main/java/eu/kanade/test/DummyTracker.kt @@ -4,8 +4,6 @@ import dev.icerock.moko.resources.StringResource import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.track.Tracker import eu.kanade.tachiyomi.data.track.model.TrackSearch -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf import okhttp3.OkHttpClient @@ -24,7 +22,7 @@ data class DummyTracker( val valReadingStatus: Long = 1L, val valRereadingStatus: Long = 1L, val valCompletionStatus: Long = 2L, - val valScoreList: ImmutableList = (0..10).map(Int::toString).toImmutableList(), + val valScoreList: List = (0..10).map(Int::toString), val val10PointScore: Double = 5.4, val valSearchResults: List = listOf(), ) : Tracker { @@ -52,7 +50,7 @@ data class DummyTracker( override fun getCompletionStatus(): Long = valCompletionStatus - override fun getScoreList(): ImmutableList = valScoreList + override fun getScoreList(): List = valScoreList override fun get10PointScore(track: Track): Double = val10PointScore diff --git a/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreen.kt b/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreen.kt index 32a8e64db..fb445b8ae 100644 --- a/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreen.kt +++ b/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreen.kt @@ -49,7 +49,6 @@ import eu.kanade.presentation.util.Screen import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.ui.browse.migration.search.MigrateSearchScreen import eu.kanade.tachiyomi.util.system.LocaleHelper -import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.flow.update import mihon.feature.migration.list.MigrationListScreen import sh.calvin.reorderable.ReorderableCollectionItemScope @@ -118,7 +117,7 @@ class MigrationConfigScreen(private val mangaIds: Collection) : Screen() { scrollBehavior = it, actions = { AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.migrationConfigScreen_selectAllLabel), icon = Icons.Outlined.SelectAll, diff --git a/app/src/main/java/mihon/feature/migration/list/MigrationListScreenContent.kt b/app/src/main/java/mihon/feature/migration/list/MigrationListScreenContent.kt index de6e5fd6c..436552d3a 100644 --- a/app/src/main/java/mihon/feature/migration/list/MigrationListScreenContent.kt +++ b/app/src/main/java/mihon/feature/migration/list/MigrationListScreenContent.kt @@ -55,8 +55,6 @@ import eu.kanade.presentation.util.animateItemFastScroll import eu.kanade.presentation.util.formatChapterNumber import eu.kanade.presentation.util.rememberResourceBitmapPainter import eu.kanade.tachiyomi.R -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf import mihon.feature.migration.list.models.MigratingManga import tachiyomi.domain.manga.model.Manga import tachiyomi.i18n.MR @@ -71,7 +69,7 @@ import tachiyomi.presentation.core.util.plus @Composable fun MigrationListScreenContent( - items: ImmutableList, + items: List, migrationComplete: Boolean, finishedCount: Int, onItemClick: (Manga) -> Unit, @@ -91,7 +89,7 @@ fun MigrationListScreenContent( }, actions = { AppBarActions( - persistentListOf( + listOf( AppBar.Action( title = stringResource(MR.strings.migrationListScreen_copyActionLabel), icon = if (items.size == 1) Icons.Outlined.ContentCopy else Icons.Outlined.CopyAll, diff --git a/app/src/main/java/mihon/feature/migration/list/MigrationListScreenModel.kt b/app/src/main/java/mihon/feature/migration/list/MigrationListScreenModel.kt index a63560ba1..1198dc3dc 100644 --- a/app/src/main/java/mihon/feature/migration/list/MigrationListScreenModel.kt +++ b/app/src/main/java/mihon/feature/migration/list/MigrationListScreenModel.kt @@ -9,10 +9,6 @@ import eu.kanade.domain.manga.model.toSManga import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.getNameForMangaInfo -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toImmutableList -import kotlinx.collections.immutable.toPersistentList import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Job import kotlinx.coroutines.async @@ -86,7 +82,7 @@ class MigrationListScreenModel( } .awaitAll() .filterNotNull() - mutableState.update { it.copy(items = manga.toImmutableList()) } + mutableState.update { it.copy(items = manga) } runMigrations(manga) } } @@ -327,7 +323,7 @@ class MigrationListScreenModel( } private fun removeManga(item: MigratingManga) { - mutableState.update { it.copy(items = items.toPersistentList().remove(item)) } + mutableState.update { it.copy(items = items.toMutableList().apply { remove(item) }) } } override fun onDispose() { @@ -371,7 +367,7 @@ class MigrationListScreenModel( } data class State( - val items: ImmutableList = persistentListOf(), + val items: List = listOf(), val finishedCount: Int = 0, val migrationComplete: Boolean = false, val dialog: Dialog? = null, diff --git a/app/src/main/java/mihon/feature/upcoming/UpcomingScreenContent.kt b/app/src/main/java/mihon/feature/upcoming/UpcomingScreenContent.kt index 479d02be6..d99ea975d 100644 --- a/app/src/main/java/mihon/feature/upcoming/UpcomingScreenContent.kt +++ b/app/src/main/java/mihon/feature/upcoming/UpcomingScreenContent.kt @@ -25,8 +25,6 @@ import cafe.adriel.voyager.navigator.currentOrThrow import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.relativeDateText import eu.kanade.presentation.util.isTabletUi -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.ImmutableMap import kotlinx.coroutines.launch import mihon.feature.upcoming.components.UpcomingItem import mihon.feature.upcoming.components.calendar.Calendar @@ -136,8 +134,8 @@ private fun DateHeading( @Composable private fun UpcomingScreenSmallImpl( listState: LazyListState, - items: ImmutableList, - events: ImmutableMap, + items: List, + events: Map, paddingValues: PaddingValues, selectedYearMonth: YearMonth, setSelectedYearMonth: (YearMonth) -> Unit, @@ -187,8 +185,8 @@ private fun UpcomingScreenSmallImpl( @Composable private fun UpcomingScreenLargeImpl( listState: LazyListState, - items: ImmutableList, - events: ImmutableMap, + items: List, + events: Map, paddingValues: PaddingValues, selectedYearMonth: YearMonth, setSelectedYearMonth: (YearMonth) -> Unit, diff --git a/app/src/main/java/mihon/feature/upcoming/UpcomingScreenModel.kt b/app/src/main/java/mihon/feature/upcoming/UpcomingScreenModel.kt index e72bb548d..ecc90fca6 100644 --- a/app/src/main/java/mihon/feature/upcoming/UpcomingScreenModel.kt +++ b/app/src/main/java/mihon/feature/upcoming/UpcomingScreenModel.kt @@ -6,12 +6,6 @@ import cafe.adriel.voyager.core.model.StateScreenModel import cafe.adriel.voyager.core.model.screenModelScope import eu.kanade.core.util.insertSeparatorsReversed import eu.kanade.tachiyomi.util.lang.toLocalDate -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.ImmutableMap -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.persistentMapOf -import kotlinx.collections.immutable.toImmutableList -import kotlinx.collections.immutable.toImmutableMap import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch @@ -41,7 +35,7 @@ class UpcomingScreenModel( } } - private fun List.toUpcomingUIModels(): ImmutableList { + private fun List.toUpcomingUIModels(): List { var mangaCount = 0 return fastMap { UpcomingUIModel.Item(it) } .insertSeparatorsReversed { before, after -> @@ -56,16 +50,14 @@ class UpcomingScreenModel( null } } - .toImmutableList() } - private fun List.toEvents(): ImmutableMap { + private fun List.toEvents(): Map { return filterIsInstance() .associate { it.date to it.mangaCount } - .toImmutableMap() } - private fun List.getHeaderIndexes(): ImmutableMap { + private fun List.getHeaderIndexes(): Map { return fastMapIndexedNotNull { index, upcomingUIModel -> if (upcomingUIModel is UpcomingUIModel.Header) { upcomingUIModel.date to index @@ -74,7 +66,6 @@ class UpcomingScreenModel( } } .toMap() - .toImmutableMap() } fun setSelectedYearMonth(yearMonth: YearMonth) { @@ -83,8 +74,8 @@ class UpcomingScreenModel( data class State( val selectedYearMonth: YearMonth = YearMonth.now(), - val items: ImmutableList = persistentListOf(), - val events: ImmutableMap = persistentMapOf(), - val headerIndexes: ImmutableMap = persistentMapOf(), + val items: List = listOf(), + val events: Map = mapOf(), + val headerIndexes: Map = mapOf(), ) } diff --git a/app/src/main/java/mihon/feature/upcoming/components/calendar/Calendar.kt b/app/src/main/java/mihon/feature/upcoming/components/calendar/Calendar.kt index 6b32c7f89..a955a8956 100644 --- a/app/src/main/java/mihon/feature/upcoming/components/calendar/Calendar.kt +++ b/app/src/main/java/mihon/feature/upcoming/components/calendar/Calendar.kt @@ -19,8 +19,6 @@ import androidx.compose.ui.unit.sp import androidx.compose.ui.util.fastForEach import io.woong.compose.grid.SimpleGridCells import io.woong.compose.grid.VerticalGrid -import kotlinx.collections.immutable.ImmutableMap -import kotlinx.collections.immutable.toImmutableList import mihon.core.designsystem.utils.isExpandedWidthWindow import mihon.core.designsystem.utils.isMediumWidthWindow import tachiyomi.presentation.core.components.material.padding @@ -37,7 +35,7 @@ private const val DAYS_OF_WEEK = 7 @Composable fun Calendar( selectedYearMonth: YearMonth, - events: ImmutableMap, + events: Map, setSelectedYearMonth: (YearMonth) -> Unit, onClickDay: (day: LocalDate) -> Unit, modifier: Modifier = Modifier, @@ -67,14 +65,13 @@ fun Calendar( @Composable private fun CalendarGrid( selectedYearMonth: YearMonth, - events: ImmutableMap, + events: Map, onClickDay: (day: LocalDate) -> Unit, ) { val localeFirstDayOfWeek = WeekFields.of(Locale.getDefault()).firstDayOfWeek.value val weekDays = remember { (0 until DAYS_OF_WEEK) .map { DayOfWeek.of((localeFirstDayOfWeek - 1 + it) % DAYS_OF_WEEK + 1) } - .toImmutableList() } val emptyFieldCount = weekDays.indexOf(selectedYearMonth.atDay(1).dayOfWeek) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2aeb2bf86..eb60b7798 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -43,7 +43,6 @@ jsoup = "1.22.2" junit = "6.1.0" kotest-assertions = "6.1.11" kotlin-gradle = "2.4.0" -kotlinx-collections-immutable = "0.4.0" kotlinx-coroutines = "1.11.0" kotlinx-serialization = "1.11.0" ktlint = "1.8.0" @@ -136,7 +135,6 @@ kotest-assertions = { module = "io.kotest:kotest-assertions-core", version.ref = kotlin-compose-compiler-gradle = { module = "org.jetbrains.kotlin:compose-compiler-gradle-plugin", version.ref = "kotlin-gradle" } kotlin-gradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin-gradle" } kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin-gradle" } -kotlinx-collections-immutable = { module = "org.jetbrains.kotlinx:kotlinx-collections-immutable", version.ref = "kotlinx-collections-immutable" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinx-coroutines" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" } kotlinx-coroutines-guava = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-guava", version.ref = "kotlinx-coroutines" } diff --git a/presentation-core/build.gradle.kts b/presentation-core/build.gradle.kts index 79fd1b4ef..e622d95c4 100644 --- a/presentation-core/build.gradle.kts +++ b/presentation-core/build.gradle.kts @@ -40,5 +40,4 @@ dependencies { implementation(libs.androidx.paging.runtime) implementation(libs.androidx.paging.compose) - implementation(libs.kotlinx.collections.immutable) } diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/components/Badges.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/components/Badges.kt index 448ee64e2..ee2a05dac 100644 --- a/presentation-core/src/main/java/tachiyomi/presentation/core/components/Badges.kt +++ b/presentation-core/src/main/java/tachiyomi/presentation/core/components/Badges.kt @@ -21,7 +21,6 @@ import androidx.compose.ui.text.PlaceholderVerticalAlign import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp -import kotlinx.collections.immutable.persistentMapOf @Composable fun BadgeGroup( @@ -67,7 +66,7 @@ fun Badge( val text = buildAnnotatedString { appendInlineContent(iconContentPlaceholder) } - val inlineContent = persistentMapOf( + val inlineContent = mapOf( Pair( iconContentPlaceholder, InlineTextContent( diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/components/WheelPicker.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/components/WheelPicker.kt index 8187dd4ce..c7e1898fd 100644 --- a/presentation-core/src/main/java/tachiyomi/presentation/core/components/WheelPicker.kt +++ b/presentation-core/src/main/java/tachiyomi/presentation/core/components/WheelPicker.kt @@ -43,7 +43,6 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp -import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map @@ -56,7 +55,7 @@ import kotlin.math.absoluteValue @Composable fun WheelNumberPicker( - items: ImmutableList, + items: List, modifier: Modifier = Modifier, startIndex: Int = 0, size: DpSize = DpSize(128.dp, 128.dp), @@ -80,7 +79,7 @@ fun WheelNumberPicker( @Composable fun WheelTextPicker( - items: ImmutableList, + items: List, modifier: Modifier = Modifier, startIndex: Int = 0, size: DpSize = DpSize(128.dp, 128.dp), @@ -103,7 +102,7 @@ fun WheelTextPicker( @Composable private fun WheelPicker( - items: ImmutableList, + items: List, modifier: Modifier = Modifier, startIndex: Int = 0, size: DpSize = DpSize(128.dp, 128.dp), diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/screens/EmptyScreen.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/screens/EmptyScreen.kt index 20428e033..5f058bd0c 100644 --- a/presentation-core/src/main/java/tachiyomi/presentation/core/screens/EmptyScreen.kt +++ b/presentation-core/src/main/java/tachiyomi/presentation/core/screens/EmptyScreen.kt @@ -22,7 +22,6 @@ import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp import androidx.compose.ui.util.fastForEach import dev.icerock.moko.resources.StringResource -import kotlinx.collections.immutable.ImmutableList import tachiyomi.presentation.core.components.ActionButton import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.i18n.stringResource @@ -39,7 +38,7 @@ data class EmptyScreenAction( fun EmptyScreen( stringRes: StringResource, modifier: Modifier = Modifier, - actions: ImmutableList? = null, + actions: List? = null, ) { EmptyScreen( message = stringResource(stringRes), @@ -52,7 +51,7 @@ fun EmptyScreen( fun EmptyScreen( message: String, modifier: Modifier = Modifier, - actions: ImmutableList? = null, + actions: List? = null, ) { val face = remember { getRandomErrorFace() } Column( diff --git a/presentation-widget/build.gradle.kts b/presentation-widget/build.gradle.kts index 1018b54e1..d5bdef18c 100644 --- a/presentation-widget/build.gradle.kts +++ b/presentation-widget/build.gradle.kts @@ -18,8 +18,6 @@ dependencies { implementation(libs.androidx.glance.appWidget) implementation(libs.material) - implementation(libs.kotlinx.collections.immutable) - implementation(libs.coil.core) api(libs.injekt) diff --git a/presentation-widget/src/main/java/tachiyomi/presentation/widget/BaseUpdatesGridGlanceWidget.kt b/presentation-widget/src/main/java/tachiyomi/presentation/widget/BaseUpdatesGridGlanceWidget.kt index 17b8d41fc..780a41a2f 100644 --- a/presentation-widget/src/main/java/tachiyomi/presentation/widget/BaseUpdatesGridGlanceWidget.kt +++ b/presentation-widget/src/main/java/tachiyomi/presentation/widget/BaseUpdatesGridGlanceWidget.kt @@ -33,8 +33,6 @@ import coil3.size.Scale import coil3.transform.RoundedCornersTransformation import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.util.system.dpToPx -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.map import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.domain.manga.model.MangaCover @@ -112,7 +110,7 @@ abstract class BaseUpdatesGridGlanceWidget( private suspend fun List.prepareData( rowCount: Int, columnCount: Int, - ): ImmutableList> { + ): List> { // Resize to cover size val widthPx = CoverWidth.value.toInt().dpToPx val heightPx = CoverHeight.value.toInt().dpToPx @@ -150,7 +148,6 @@ abstract class BaseUpdatesGridGlanceWidget( ?.toBitmap() Pair(updatesView.mangaId, bitmap) } - .toImmutableList() } } diff --git a/presentation-widget/src/main/java/tachiyomi/presentation/widget/components/UpdatesWidget.kt b/presentation-widget/src/main/java/tachiyomi/presentation/widget/components/UpdatesWidget.kt index e90e07983..8a1c07471 100644 --- a/presentation-widget/src/main/java/tachiyomi/presentation/widget/components/UpdatesWidget.kt +++ b/presentation-widget/src/main/java/tachiyomi/presentation/widget/components/UpdatesWidget.kt @@ -21,7 +21,6 @@ import androidx.glance.layout.padding import androidx.glance.text.Text import androidx.glance.text.TextStyle import androidx.glance.unit.ColorProvider -import kotlinx.collections.immutable.ImmutableList import tachiyomi.core.common.Constants import tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.stringResource @@ -29,7 +28,7 @@ import tachiyomi.presentation.widget.util.calculateRowAndColumnCount @Composable fun UpdatesWidget( - data: ImmutableList>?, + data: List>?, contentColor: ColorProvider, topPadding: Dp, bottomPadding: Dp,