diff --git a/app/src/main/java/eu/kanade/presentation/components/MangaBottomActionMenu.kt b/app/src/main/java/eu/kanade/presentation/components/MangaBottomActionMenu.kt index b544f8590..bd5cd7e8f 100644 --- a/app/src/main/java/eu/kanade/presentation/components/MangaBottomActionMenu.kt +++ b/app/src/main/java/eu/kanade/presentation/components/MangaBottomActionMenu.kt @@ -243,7 +243,7 @@ fun LibraryBottomActionMenu( } // SY --> val showOverflow = onClickCleanTitles != null || onClickAddToMangaDex != null - val moveMarkPrev = calculateWindowWidthSizeClass() == WindowWidthSizeClass.Compact + val moveMarkPrev = onDeleteClicked != null && calculateWindowWidthSizeClass() == WindowWidthSizeClass.Compact var overFlowOpen by remember { mutableStateOf(false) } // SY <-- Row( diff --git a/app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt b/app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt index 6c0e06877..2daf4b1f0 100644 --- a/app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt @@ -7,6 +7,7 @@ import eu.kanade.presentation.components.Scaffold import eu.kanade.presentation.library.components.LibraryContent import eu.kanade.presentation.library.components.LibraryToolbar import eu.kanade.tachiyomi.data.database.models.LibraryManga +import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.ui.library.LibraryPresenter @Composable @@ -55,7 +56,7 @@ fun LibraryScreen( onMarkAsReadClicked = onMarkAsReadClicked, onMarkAsUnreadClicked = onMarkAsUnreadClicked, onDownloadClicked = onDownloadClicked, - onDeleteClicked = onDeleteClicked, + onDeleteClicked = onDeleteClicked.takeIf { presenter.selection.none { it.source == LocalSource.ID } }, // SY --> onClickCleanTitles = onClickCleanTitles.takeIf { presenter.showCleanTitles }, onClickMigrate = onClickMigrate, diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LazyLibraryGrid.kt b/app/src/main/java/eu/kanade/presentation/library/components/LazyLibraryGrid.kt index e2e311441..19768eedb 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LazyLibraryGrid.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LazyLibraryGrid.kt @@ -6,13 +6,19 @@ import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyGridScope import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp +import androidx.compose.ui.zIndex +import eu.kanade.presentation.components.TextButton import eu.kanade.presentation.util.bottomNavPaddingValues import eu.kanade.presentation.util.plus +import eu.kanade.tachiyomi.R @Composable fun LazyLibraryGrid( @@ -29,3 +35,19 @@ fun LazyLibraryGrid( content = content, ) } + +fun LazyGridScope.globalSearchItem( + searchQuery: String?, + onGlobalSearchClicked: () -> Unit, +) { + item(span = { GridItemSpan(maxLineSpan) }) { + if (searchQuery.isNullOrEmpty().not()) { + TextButton(onClick = onGlobalSearchClicked) { + Text( + text = stringResource(R.string.action_global_search_query, searchQuery!!), + modifier = Modifier.zIndex(99f), + ) + } + } + } +} diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryComfortableGrid.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryComfortableGrid.kt index ec56fea1f..de7c12bb0 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryComfortableGrid.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryComfortableGrid.kt @@ -3,19 +3,14 @@ package eu.kanade.presentation.library.components import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.items import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp -import androidx.compose.ui.zIndex import eu.kanade.domain.manga.model.MangaCover -import eu.kanade.presentation.components.TextButton -import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.LibraryManga import eu.kanade.tachiyomi.ui.library.LibraryItem @@ -35,16 +30,8 @@ fun LibraryComfortableGrid( LazyLibraryGrid( columns = columns, ) { - item(span = { GridItemSpan(maxLineSpan) }) { - if (searchQuery.isNullOrEmpty().not()) { - TextButton(onClick = onGlobalSearchClicked) { - Text( - text = stringResource(R.string.action_global_search_query, searchQuery!!), - modifier = Modifier.zIndex(99f), - ) - } - } - } + globalSearchItem(searchQuery, onGlobalSearchClicked) + items( items = items, key = { diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryCompactGrid.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryCompactGrid.kt index 332aef4f0..2ca7bda9e 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryCompactGrid.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryCompactGrid.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.LocalTextStyle @@ -18,12 +17,8 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shadow -import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp -import androidx.compose.ui.zIndex -import eu.kanade.presentation.components.TextButton -import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.LibraryManga import eu.kanade.tachiyomi.ui.library.LibraryItem @@ -43,16 +38,7 @@ fun LibraryCompactGrid( LazyLibraryGrid( columns = columns, ) { - item(span = { GridItemSpan(maxLineSpan) }) { - if (searchQuery.isNullOrEmpty().not()) { - TextButton(onClick = onGlobalSearchClicked) { - Text( - text = stringResource(R.string.action_global_search_query, searchQuery!!), - modifier = Modifier.zIndex(99f), - ) - } - } - } + globalSearchItem(searchQuery, onGlobalSearchClicked) items( items = items, diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt index 3118f5f9e..c44481a62 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt @@ -7,9 +7,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.State import androidx.compose.ui.Modifier -import androidx.compose.ui.input.nestedscroll.nestedScroll -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.rememberNestedScrollInteropConnection +import androidx.compose.ui.platform.LocalUriHandler import com.google.accompanist.pager.rememberPagerState import com.google.accompanist.swiperefresh.SwipeRefresh import com.google.accompanist.swiperefresh.rememberSwipeRefreshState @@ -22,7 +20,6 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.LibraryManga import eu.kanade.tachiyomi.ui.library.LibraryItem import eu.kanade.tachiyomi.ui.library.setting.DisplayModeSetting -import eu.kanade.tachiyomi.util.system.openInBrowser import eu.kanade.tachiyomi.widget.EmptyView @Composable @@ -48,8 +45,6 @@ fun LibraryContent( onOpenReader: (LibraryManga) -> Unit, // SY <-- ) { - val nestedScrollInterop = rememberNestedScrollInteropConnection() - val pagerState = rememberPagerState(currentPage) val categories = state.categories @@ -86,7 +81,6 @@ fun LibraryContent( SwipeRefresh( state = rememberSwipeRefreshState(isRefreshing = false), - modifier = Modifier.nestedScroll(nestedScrollInterop), onRefresh = onRefresh, indicator = { s, trigger -> SwipeRefreshIndicator( @@ -96,12 +90,12 @@ fun LibraryContent( }, ) { if (state.searchQuery.isNullOrEmpty() && isLibraryEmpty) { - val context = LocalContext.current + val handler = LocalUriHandler.current EmptyScreen( R.string.information_empty_library, listOf( EmptyView.Action(R.string.getting_started_guide, R.drawable.ic_help_24dp) { - context.openInBrowser("https://tachiyomi.org/help/guides/getting-started") + handler.openUri("https://tachiyomi.org/help/guides/getting-started") }, ), ) diff --git a/app/src/main/java/eu/kanade/presentation/library/components/LibraryCoverOnlyGrid.kt b/app/src/main/java/eu/kanade/presentation/library/components/LibraryCoverOnlyGrid.kt index 1382bb320..e6ac006d8 100644 --- a/app/src/main/java/eu/kanade/presentation/library/components/LibraryCoverOnlyGrid.kt +++ b/app/src/main/java/eu/kanade/presentation/library/components/LibraryCoverOnlyGrid.kt @@ -1,15 +1,9 @@ package eu.kanade.presentation.library.components import androidx.compose.foundation.combinedClickable -import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.items -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.zIndex -import eu.kanade.presentation.components.TextButton -import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.LibraryManga import eu.kanade.tachiyomi.ui.library.LibraryItem @@ -29,16 +23,8 @@ fun LibraryCoverOnlyGrid( LazyLibraryGrid( columns = columns, ) { - item(span = { GridItemSpan(maxLineSpan) }) { - if (searchQuery.isNullOrEmpty().not()) { - TextButton(onClick = onGlobalSearchClicked) { - Text( - text = stringResource(R.string.action_global_search_query, searchQuery!!), - modifier = Modifier.zIndex(99f), - ) - } - } - } + globalSearchItem(searchQuery, onGlobalSearchClicked) + items( items = items, key = { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index 840f2fce4..eb45def68 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -571,7 +571,7 @@ class LibraryPresenter( * @return an observable of the categories and its manga. */ private fun getLibraryObservable(): Observable { - return combine(getCategoriesObservable(), getLibraryMangasObservable()) { dbCategories, libraryManga -> + return combine(getCategoriesFlow(), getLibraryMangasFlow()) { dbCategories, libraryManga -> val categories = if (libraryManga.containsKey(0)) { arrayListOf(Category.default(context)) + dbCategories } else { @@ -618,7 +618,7 @@ class LibraryPresenter( * * @return an observable of the categories. */ - private fun getCategoriesObservable(): Flow> { + private fun getCategoriesFlow(): Flow> { return getCategories.subscribe() } @@ -628,7 +628,7 @@ class LibraryPresenter( * @return an observable containing a map with the category id as key and a list of manga as the * value. */ - private fun getLibraryMangasObservable(): Flow { + private fun getLibraryMangasFlow(): Flow { return getLibraryManga.subscribe() .map { list -> list.map { libraryManga ->