diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.kt index 38ae36406a..b39f703649 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.kt @@ -58,7 +58,7 @@ class CoverCache(val context: Context) { */ private val renewInterval = TimeUnit.HOURS.toMillis(1) - fun getChapterCacheSize(): String { + fun getCoverCacheSize(): String { return Formatter.formatFileSize(context, DiskUtil.getDirectorySize(cacheDir)) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt index 21246a2f41..e39e47815d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt @@ -55,7 +55,7 @@ class NetworkHelper(val context: Context) { private val json: Json by injectLazy() private val mangaDexLoginHelper: MangaDexLoginHelper by injectLazy() - private val cacheDir = File(context.cacheDir, "network_cache") + val cacheDir = File(context.cacheDir, "network_cache") private val cacheSize = 5L * 1024 * 1024 // 5 MiB diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt index 2419d6ab88..241776d99f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt @@ -23,6 +23,7 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.uuid import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadProvider +import eu.kanade.tachiyomi.data.image.coil.CoilDiskCache import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.source.SourceManager @@ -64,6 +65,7 @@ import tachiyomi.core.network.PREF_DOH_NJALLA import tachiyomi.core.network.PREF_DOH_QUAD101 import tachiyomi.core.network.PREF_DOH_QUAD9 import tachiyomi.core.network.PREF_DOH_SHECAN +import tachiyomi.core.util.storage.DiskUtil import tachiyomi.core.util.system.setDefaultSettings import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -153,6 +155,21 @@ class SettingsAdvancedController : SettingsController() { preferenceCategory { titleRes = R.string.data_management + + preference { + title = "Total cache usage" + summary = + """ + Chapter Disk Cache: ${DiskUtil.readableDiskSize(context, chapterCache.cacheDir)} + Cover Cache: ${coverCache.getCoverCacheSize()} + Online Cover Cache: ${coverCache.getOnlineCoverCacheSize()} + Image Cache: ${DiskUtil.readableDiskSize(context, CoilDiskCache.get(context).size)} + Network Cache: ${DiskUtil.readableDiskSize(context, network.cacheDir)} + """ + .trimIndent() + onClick {} + } + preference { key = CLEAR_CACHE_KEY titleRes = R.string.clear_chapter_cache @@ -177,7 +194,7 @@ class SettingsAdvancedController : SettingsController() { summary = context.getString( R.string.delete_old_covers_in_library_used_, - coverCache.getChapterCacheSize(), + coverCache.getCoverCacheSize(), ) onClick { diff --git a/app/src/main/java/org/nekomanga/presentation/screens/FeedScreen.kt b/app/src/main/java/org/nekomanga/presentation/screens/FeedScreen.kt index 0b9ff7e413..b8f1319543 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/FeedScreen.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/FeedScreen.kt @@ -188,22 +188,32 @@ fun FeedScreen( actions = { AppBarActions( actions = - listOf( - AppBar.Action( - title = UiText.StringResource(R.string.settings), - icon = Icons.Outlined.Tune, - onClick = { scope.launch { sheetState.show() } }, - ), - AppBar.MainDropdown( - incognitoMode = feedScreenState.value.incognitoMode, - incognitoModeClick = incognitoClick, - settingsClick = settingsClick, - statsClick = statsClick, - aboutClick = aboutClick, - helpClick = helpClick, - menuShowing = { visible -> mainDropdownShowing = visible }, - ), - ) + if ( + feedScreenState.value.feedScreenType != FeedScreenType.Summary + ) { + listOf( + AppBar.Action( + title = UiText.StringResource(R.string.settings), + icon = Icons.Outlined.Tune, + onClick = { scope.launch { sheetState.show() } }, + ) + ) + } else { + listOf() + } + + listOf( + AppBar.MainDropdown( + incognitoMode = feedScreenState.value.incognitoMode, + incognitoModeClick = incognitoClick, + settingsClick = settingsClick, + statsClick = statsClick, + aboutClick = aboutClick, + helpClick = helpClick, + menuShowing = { visible -> + mainDropdownShowing = visible + }, + ) + ) ) }, ) { incomingContentPadding -> diff --git a/core/src/main/kotlin/tachiyomi/core/util/storage/DiskUtil.kt b/core/src/main/kotlin/tachiyomi/core/util/storage/DiskUtil.kt index ff2050548e..0f826d1d97 100644 --- a/core/src/main/kotlin/tachiyomi/core/util/storage/DiskUtil.kt +++ b/core/src/main/kotlin/tachiyomi/core/util/storage/DiskUtil.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.Intent import android.net.Uri import android.os.StatFs +import android.text.format.Formatter import com.hippo.unifile.UniFile import java.io.File import tachiyomi.core.util.lang.Hash @@ -114,5 +115,15 @@ object DiskUtil { } } + /** Returns real size of directory in human readable format. */ + fun readableDiskSize(context: Context, file: File): String { + return Formatter.formatFileSize(context, getDirectorySize(file)) + } + + /** Returns real size of directory in human readable format. */ + fun readableDiskSize(context: Context, bytes: Long): String { + return Formatter.formatFileSize(context, bytes) + } + const val NOMEDIA_FILE = ".nomedia" }