chore(settings): Move stuff around

This commit is contained in:
Ahmad Ansori Palembani 2024-06-07 09:57:57 +07:00
parent ea5d29304d
commit 298e50627a
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
5 changed files with 91 additions and 85 deletions

View file

@ -7,5 +7,9 @@
## Other ## Other
--> -->
## Changes
- Remove download location redirection from `Settings > Downloads`
- Moved cache related stuff from `Settings > Advanced` to `Settings > Data and storage`
## Other ## Other
- Migrate `RawQueries#librayQuery` to use SQLDelight (`GetLibraryManga`) - Migrate `RawQueries#librayQuery` to use SQLDelight (`GetLibraryManga`)

View file

@ -14,14 +14,11 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import com.google.firebase.crashlytics.ktx.crashlytics
import com.hippo.unifile.UniFile import com.hippo.unifile.UniFile
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
import dev.yokai.domain.extension.interactor.TrustExtension import dev.yokai.domain.extension.interactor.TrustExtension
import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.cache.ChapterCache
import eu.kanade.tachiyomi.data.cache.CoverCache
import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.download.DownloadProvider import eu.kanade.tachiyomi.data.download.DownloadProvider
@ -66,7 +63,6 @@ import eu.kanade.tachiyomi.util.system.localeContext
import eu.kanade.tachiyomi.util.system.materialAlertDialog import eu.kanade.tachiyomi.util.system.materialAlertDialog
import eu.kanade.tachiyomi.util.system.setDefaultSettings import eu.kanade.tachiyomi.util.system.setDefaultSettings
import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.system.withUIContext
import eu.kanade.tachiyomi.util.view.openInBrowser import eu.kanade.tachiyomi.util.view.openInBrowser
import eu.kanade.tachiyomi.util.view.withFadeTransaction import eu.kanade.tachiyomi.util.view.withFadeTransaction
import kotlinx.coroutines.CoroutineStart import kotlinx.coroutines.CoroutineStart
@ -87,12 +83,8 @@ class SettingsAdvancedController : SettingsLegacyController() {
private val network: NetworkHelper by injectLazy() private val network: NetworkHelper by injectLazy()
private val chapterCache: ChapterCache by injectLazy()
private val db: DatabaseHelper by injectLazy() private val db: DatabaseHelper by injectLazy()
private val coverCache: CoverCache by injectLazy()
private val downloadManager: DownloadManager by injectLazy() private val downloadManager: DownloadManager by injectLazy()
private val trustExtension: TrustExtension by injectLazy() private val trustExtension: TrustExtension by injectLazy()
@ -190,13 +182,6 @@ class SettingsAdvancedController : SettingsLegacyController() {
preferenceCategory { preferenceCategory {
titleRes = R.string.data_management titleRes = R.string.data_management
preference {
key = CLEAR_CACHE_KEY
titleRes = R.string.clear_chapter_cache
summary = context.getString(R.string.used_, chapterCache.readableSize)
onClick { clearChapterCache() }
}
preference { preference {
titleRes = R.string.force_download_cache_refresh titleRes = R.string.force_download_cache_refresh
@ -204,36 +189,6 @@ class SettingsAdvancedController : SettingsLegacyController() {
onClick { downloadManager.refreshCache() } onClick { downloadManager.refreshCache() }
} }
preference {
key = "clean_cached_covers"
titleRes = R.string.clean_up_cached_covers
summary = context.getString(
R.string.delete_old_covers_in_library_used_,
coverCache.getChapterCacheSize(),
)
onClick {
context.toast(R.string.starting_cleanup)
(activity as? AppCompatActivity)?.lifecycleScope?.launchIO {
coverCache.deleteOldCovers()
}
}
}
preference {
key = "clear_cached_not_library"
titleRes = R.string.clear_cached_covers_non_library
summary = context.getString(
R.string.delete_all_covers__not_in_library_used_,
coverCache.getOnlineCoverCacheSize(),
)
onClick {
context.toast(R.string.starting_cleanup)
(activity as? AppCompatActivity)?.lifecycleScope?.launchIO {
coverCache.deleteAllCachedCovers()
}
}
}
preference { preference {
key = "clean_downloaded_chapters" key = "clean_downloaded_chapters"
titleRes = R.string.clean_up_downloaded_chapters titleRes = R.string.clean_up_downloaded_chapters
@ -487,36 +442,6 @@ class SettingsAdvancedController : SettingsLegacyController() {
} }
} }
private fun clearChapterCache() {
if (activity == null) return
viewScope.launchIO {
val files = chapterCache.cacheDir.listFiles() ?: return@launchIO
var deletedFiles = 0
try {
files.forEach { file ->
if (chapterCache.removeFileFromCache(file.name)) {
deletedFiles++
}
}
withUIContext {
activity?.toast(
resources?.getQuantityString(
R.plurals.cache_cleared,
deletedFiles,
deletedFiles,
),
)
findPreference(CLEAR_CACHE_KEY)?.summary =
resources?.getString(R.string.used_, chapterCache.readableSize)
}
} catch (_: Exception) {
withUIContext {
activity?.toast(R.string.cache_delete_error)
}
}
}
}
private fun clearWebViewData() { private fun clearWebViewData() {
if (activity == null) return if (activity == null) return
try { try {
@ -536,8 +461,6 @@ class SettingsAdvancedController : SettingsLegacyController() {
} }
private companion object { private companion object {
const val CLEAR_CACHE_KEY = "pref_clear_cache_key"
private var job: Job? = null private var job: Job? = null
} }
} }

View file

@ -9,7 +9,9 @@ import android.view.MenuInflater
import android.view.MenuItem import android.view.MenuItem
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import com.hippo.unifile.UniFile import com.hippo.unifile.UniFile
import dev.yokai.domain.storage.StorageManager import dev.yokai.domain.storage.StorageManager
@ -20,6 +22,8 @@ import eu.kanade.tachiyomi.data.backup.BackupCreatorJob
import eu.kanade.tachiyomi.data.backup.BackupFileValidator import eu.kanade.tachiyomi.data.backup.BackupFileValidator
import eu.kanade.tachiyomi.data.backup.BackupRestoreJob import eu.kanade.tachiyomi.data.backup.BackupRestoreJob
import eu.kanade.tachiyomi.data.backup.models.Backup import eu.kanade.tachiyomi.data.backup.models.Backup
import eu.kanade.tachiyomi.data.cache.ChapterCache
import eu.kanade.tachiyomi.data.cache.CoverCache
import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.setting.SettingsLegacyController import eu.kanade.tachiyomi.ui.setting.SettingsLegacyController
import eu.kanade.tachiyomi.ui.setting.bindTo import eu.kanade.tachiyomi.ui.setting.bindTo
@ -33,9 +37,11 @@ import eu.kanade.tachiyomi.ui.setting.summaryRes
import eu.kanade.tachiyomi.ui.setting.titleRes import eu.kanade.tachiyomi.ui.setting.titleRes
import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.DeviceUtil
import eu.kanade.tachiyomi.util.system.disableItems import eu.kanade.tachiyomi.util.system.disableItems
import eu.kanade.tachiyomi.util.system.launchIO
import eu.kanade.tachiyomi.util.system.materialAlertDialog import eu.kanade.tachiyomi.util.system.materialAlertDialog
import eu.kanade.tachiyomi.util.system.openInBrowser import eu.kanade.tachiyomi.util.system.openInBrowser
import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.system.withUIContext
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
@ -49,10 +55,14 @@ class SettingsDataController : SettingsLegacyController() {
internal val storagePreferences: StoragePreferences by injectLazy() internal val storagePreferences: StoragePreferences by injectLazy()
internal val storageManager: StorageManager by injectLazy() internal val storageManager: StorageManager by injectLazy()
private val coverCache: CoverCache by injectLazy()
private val chapterCache: ChapterCache by injectLazy()
override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {
titleRes = R.string.data_and_storage titleRes = R.string.data_and_storage
preference { preference {
key = "pref_storage_location"
bindTo(storagePreferences.baseStorageDirectory()) bindTo(storagePreferences.baseStorageDirectory())
titleRes = R.string.storage_location titleRes = R.string.storage_location
@ -150,6 +160,50 @@ class SettingsDataController : SettingsLegacyController() {
} }
infoPreference(R.string.backup_info) infoPreference(R.string.backup_info)
preferenceCategory {
titleRes = R.string.storage_usage
preference {
key = CLEAR_CACHE_KEY
titleRes = R.string.clear_chapter_cache
summary = context.getString(R.string.used_, chapterCache.readableSize)
onClick { clearChapterCache() }
}
preference {
key = "clear_cached_not_library"
titleRes = R.string.clear_cached_covers_non_library
summary = context.getString(
R.string.delete_all_covers__not_in_library_used_,
coverCache.getOnlineCoverCacheSize(),
)
onClick {
context.toast(R.string.starting_cleanup)
(activity as? AppCompatActivity)?.lifecycleScope?.launchIO {
coverCache.deleteAllCachedCovers()
}
}
}
preference {
key = "clean_cached_covers"
titleRes = R.string.clean_up_cached_covers
summary = context.getString(
R.string.delete_old_covers_in_library_used_,
coverCache.getChapterCacheSize(),
)
onClick {
context.toast(R.string.starting_cleanup)
(activity as? AppCompatActivity)?.lifecycleScope?.launchIO {
coverCache.deleteOldCovers()
}
}
}
}
} }
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
@ -331,8 +385,40 @@ class SettingsDataController : SettingsLegacyController() {
.show() .show()
} }
} }
private fun clearChapterCache() {
if (activity == null) return
viewScope.launchIO {
val files = chapterCache.cacheDir.listFiles() ?: return@launchIO
var deletedFiles = 0
try {
files.forEach { file ->
if (chapterCache.removeFileFromCache(file.name)) {
deletedFiles++
}
}
withUIContext {
activity?.toast(
resources?.getQuantityString(
R.plurals.cache_cleared,
deletedFiles,
deletedFiles,
),
)
findPreference(CLEAR_CACHE_KEY)?.summary =
resources?.getString(R.string.used_, chapterCache.readableSize)
}
} catch (_: Exception) {
withUIContext {
activity?.toast(R.string.cache_delete_error)
}
}
}
}
} }
private const val CLEAR_CACHE_KEY = "pref_clear_cache_key"
private const val CODE_DATA_DIR = 104 private const val CODE_DATA_DIR = 104
private const val CODE_BACKUP_CREATE = 504 private const val CODE_BACKUP_CREATE = 504
private const val CODE_BACKUP_RESTORE = 505 private const val CODE_BACKUP_RESTORE = 505

View file

@ -14,8 +14,6 @@ import eu.kanade.tachiyomi.ui.setting.defaultValue
import eu.kanade.tachiyomi.ui.setting.infoPreference import eu.kanade.tachiyomi.ui.setting.infoPreference
import eu.kanade.tachiyomi.ui.setting.intListPreference import eu.kanade.tachiyomi.ui.setting.intListPreference
import eu.kanade.tachiyomi.ui.setting.multiSelectListPreferenceMat import eu.kanade.tachiyomi.ui.setting.multiSelectListPreferenceMat
import eu.kanade.tachiyomi.ui.setting.onClick
import eu.kanade.tachiyomi.ui.setting.preference
import eu.kanade.tachiyomi.ui.setting.preferenceCategory import eu.kanade.tachiyomi.ui.setting.preferenceCategory
import eu.kanade.tachiyomi.ui.setting.summaryRes import eu.kanade.tachiyomi.ui.setting.summaryRes
import eu.kanade.tachiyomi.ui.setting.switchPreference import eu.kanade.tachiyomi.ui.setting.switchPreference
@ -34,12 +32,6 @@ class SettingsDownloadController : SettingsLegacyController() {
override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {
titleRes = R.string.downloads titleRes = R.string.downloads
preference {
titleRes = R.string.download_location
onClick { navigateTo(SettingsDataController()) }
summary = "Moved to Data and Storage!"
}
switchPreference { switchPreference {
key = Keys.downloadOnlyOverWifi key = Keys.downloadOnlyOverWifi
titleRes = R.string.only_download_over_wifi titleRes = R.string.only_download_over_wifi

View file

@ -799,6 +799,7 @@
<!-- Storage --> <!-- Storage -->
<string name="data_and_storage">Data and storage</string> <string name="data_and_storage">Data and storage</string>
<string name="storage_location">Storage location</string> <string name="storage_location">Storage location</string>
<string name="storage_usage">Storage usage</string>
<!-- Backup --> <!-- Backup -->
<string name="backup">Backup</string> <string name="backup">Backup</string>