From e26360186ad5c4d2ddc7da4a1cfbd5960fd16601 Mon Sep 17 00:00:00 2001 From: arkon Date: Fri, 7 Jul 2023 17:46:39 -0400 Subject: [PATCH] Change auto clear cache to occur on app launch instead Fixes #9564 Avoids the issue of clearing the cache when the app is backgrounded despite being in the reader. We could do a job on idle, but we'd still need to be careful around whether the reader is active, so this is just simpler considering it's a separate activity. (cherry picked from commit 53c6230afebe8e8cddca216f281fdec70e450a33) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt --- app/src/main/java/eu/kanade/tachiyomi/App.kt | 8 -------- .../kanade/tachiyomi/ui/main/MainActivity.kt | 20 ++++++++++++++----- i18n/src/main/res/values/strings.xml | 2 +- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index b9081a984..4173d2e16 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -38,7 +38,6 @@ import eu.kanade.domain.ui.UiPreferences import eu.kanade.domain.ui.model.setAppCompatDelegateThemeMode import eu.kanade.tachiyomi.crash.CrashActivity import eu.kanade.tachiyomi.crash.GlobalExceptionHandler -import eu.kanade.tachiyomi.data.cache.ChapterCache import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher import eu.kanade.tachiyomi.data.coil.MangaCoverKeyer import eu.kanade.tachiyomi.data.coil.MangaKeyer @@ -66,7 +65,6 @@ import logcat.LogPriority import logcat.LogcatLogger import org.conscrypt.Conscrypt import tachiyomi.core.util.system.logcat -import tachiyomi.domain.library.service.LibraryPreferences import tachiyomi.presentation.widget.TachiyomiWidgetManager import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -80,11 +78,9 @@ import kotlin.time.Duration.Companion.days class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory { private val basePreferences: BasePreferences by injectLazy() - private val libraryPreferences: LibraryPreferences by injectLazy() private val networkPreferences: NetworkPreferences by injectLazy() private val disableIncognitoReceiver = DisableIncognitoReceiver() - private val chapterCache: ChapterCache by injectLazy() @SuppressLint("LaunchActivityFromNotification") override fun onCreate() { @@ -198,10 +194,6 @@ class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory { override fun onStop(owner: LifecycleOwner) { SecureActivityDelegate.onApplicationStopped() - - if (libraryPreferences.autoClearChapterCache().get()) { - chapterCache.clear() - } } override fun getPackageName(): String { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index c8e36cfdf..75ff99254 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -62,6 +62,9 @@ import eu.kanade.presentation.util.AssistContentScreen import eu.kanade.presentation.util.DefaultNavigatorScreenTransition import eu.kanade.presentation.util.collectAsState import eu.kanade.tachiyomi.BuildConfig +import eu.kanade.tachiyomi.Migrations +import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.data.cache.ChapterCache import eu.kanade.tachiyomi.data.download.DownloadCache import eu.kanade.tachiyomi.data.notification.NotificationReceiver import eu.kanade.tachiyomi.data.updater.AppUpdateChecker @@ -117,6 +120,7 @@ class MainActivity : BaseActivity() { // SY <-- private val downloadCache: DownloadCache by injectLazy() + private val chapterCache: ChapterCache by injectLazy() // To be checked by splash screen. If true then splash screen will be removed. var ready = false @@ -145,12 +149,14 @@ class MainActivity : BaseActivity() { // SY <-- override fun onCreate(savedInstanceState: Bundle?) { + val isLaunch = savedInstanceState == null + // Prevent splash screen showing up on configuration changes - val splashScreen = if (savedInstanceState == null) installSplashScreen() else null + val splashScreen = if (isLaunch) installSplashScreen() else null super.onCreate(savedInstanceState) - val didMigration = if (savedInstanceState == null) { + val didMigration = if (isLaunch) { addAnalytics() EXHMigrations.upgrade( context = applicationContext, @@ -188,7 +194,7 @@ class MainActivity : BaseActivity() { val downloadOnly by preferences.downloadedOnly().collectAsState() val indexing by downloadCache.isInitializing.collectAsState() - // Set statusbar color considering the top app state banner + // Set status bar color considering the top app state banner val systemUiController = rememberSystemUiController() val isSystemInDarkTheme = isSystemInDarkTheme() val statusBarBackgroundColor = when { @@ -228,7 +234,7 @@ class MainActivity : BaseActivity() { LaunchedEffect(navigator) { this@MainActivity.navigator = navigator - if (savedInstanceState == null) { + if (isLaunch) { // Set start screen handleIntentAction(intent, navigator) @@ -325,6 +331,10 @@ class MainActivity : BaseActivity() { } setSplashScreenExitAnimation(splashScreen) + if (isLaunch && libraryPreferences.autoClearChapterCache().get()) { + chapterCache.clear() + } + // SY --> if (!unsortedPreferences.isHentaiEnabled().get()) { BlacklistedSources.HIDDEN_SOURCES += EH_SOURCE_ID @@ -343,7 +353,7 @@ class MainActivity : BaseActivity() { } @Composable - fun HandleOnNewIntent(context: Context, navigator: Navigator) { + private fun HandleOnNewIntent(context: Context, navigator: Navigator) { LaunchedEffect(Unit) { callbackFlow { val componentActivity = context as ComponentActivity diff --git a/i18n/src/main/res/values/strings.xml b/i18n/src/main/res/values/strings.xml index deb9461a8..e103232ec 100755 --- a/i18n/src/main/res/values/strings.xml +++ b/i18n/src/main/res/values/strings.xml @@ -538,7 +538,7 @@ Used: %1$s Cache cleared. %1$d files have been deleted Error occurred while clearing - Clear chapter cache on app close + Clear chapter cache on app launch Invalidate downloads index Force app to recheck downloaded chapters Clear database