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 8aee4b632..98a403f8c 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 @@ -1,5 +1,6 @@ package eu.kanade.presentation.library.components +import android.content.Context import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Row import androidx.compose.material.icons.Icons @@ -14,6 +15,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.sp import eu.kanade.presentation.components.AppBar @@ -46,6 +48,7 @@ fun LibraryToolbar( searchQuery: String?, onSearchQueryChange: (String?) -> Unit, scrollBehavior: TopAppBarScrollBehavior?, + onInvalidateDownloadCache: (Context) -> Unit, ) = when { selectedCount > 0 -> LibrarySelectionToolbar( selectedCount = selectedCount, @@ -68,6 +71,7 @@ fun LibraryToolbar( isSyncEnabled = isSyncEnabled, // SY <-- scrollBehavior = scrollBehavior, + onInvalidateDownloadCache = onInvalidateDownloadCache, ) } @@ -87,7 +91,9 @@ private fun LibraryRegularToolbar( isSyncEnabled: Boolean, // SY <-- scrollBehavior: TopAppBarScrollBehavior?, + onInvalidateDownloadCache: (Context) -> Unit, ) { + val context = LocalContext.current val pillAlpha = if (isSystemInDarkTheme()) 0.12f else 0.08f SearchToolbar( titleContent = { @@ -131,6 +137,12 @@ private fun LibraryRegularToolbar( title = stringResource(MR.strings.action_open_random_manga), onClick = onClickOpenRandomManga, ), + AppBar.OverflowAction( + title = stringResource(MR.strings.pref_invalidate_download_cache), + onClick = { + onInvalidateDownloadCache(context) + }, + ), ).builder().apply { // SY --> if (onClickSyncExh != null) { 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 bf5cf6b7f..24fd2ecee 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 @@ -41,6 +41,7 @@ import eu.kanade.presentation.manga.components.LibraryBottomActionMenu import eu.kanade.presentation.more.onboarding.GETTING_STARTED_URL import eu.kanade.presentation.util.Tab import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.data.download.DownloadCache import eu.kanade.tachiyomi.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.sync.SyncDataJob import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationScreen @@ -184,6 +185,10 @@ data object LibraryTab : Tab { // SY <-- searchQuery = state.searchQuery, onSearchQueryChange = screenModel::search, + onInvalidateDownloadCache = { context -> + Injekt.get().invalidateCache() + context.toast(MR.strings.download_cache_invalidated) + }, scrollBehavior = scrollBehavior.takeIf { !tabVisible }, // For scroll overlay when no tab ) },