diff --git a/app/src/main/java/eu/darken/sdmse/appcleaner/core/AppCleanerExtensions.kt b/app/src/main/java/eu/darken/sdmse/appcleaner/core/AppCleanerExtensions.kt index fd012a25a..8c1812425 100644 --- a/app/src/main/java/eu/darken/sdmse/appcleaner/core/AppCleanerExtensions.kt +++ b/app/src/main/java/eu/darken/sdmse/appcleaner/core/AppCleanerExtensions.kt @@ -1,13 +1,14 @@ package eu.darken.sdmse.appcleaner.core import eu.darken.sdmse.appcleaner.core.forensics.ExpendablesFilter +import eu.darken.sdmse.appcleaner.core.forensics.ExpendablesFilterIdentifier import eu.darken.sdmse.exclusion.core.types.Exclusion import eu.darken.sdmse.exclusion.core.types.excludeNestedLookups +import kotlin.reflect.KClass val AppCleaner.Data?.hasData: Boolean get() = this?.junks?.isNotEmpty() ?: false - suspend fun Collection.excludeNestedLookups( matches: Collection ): Set { @@ -16,4 +17,7 @@ suspend fun Collection.excludeNestedLookups( return matches .filter { temp.contains(it.lookup) } .toSet() -} \ No newline at end of file +} + +val KClass.identifier: ExpendablesFilterIdentifier + get() = this \ No newline at end of file diff --git a/app/src/main/java/eu/darken/sdmse/appcleaner/core/scanner/PostProcessorModule.kt b/app/src/main/java/eu/darken/sdmse/appcleaner/core/scanner/PostProcessorModule.kt index 6ee081e35..8b871d8e5 100644 --- a/app/src/main/java/eu/darken/sdmse/appcleaner/core/scanner/PostProcessorModule.kt +++ b/app/src/main/java/eu/darken/sdmse/appcleaner/core/scanner/PostProcessorModule.kt @@ -6,6 +6,9 @@ import eu.darken.sdmse.appcleaner.core.AppJunk import eu.darken.sdmse.appcleaner.core.excludeNestedLookups import eu.darken.sdmse.appcleaner.core.forensics.ExpendablesFilter import eu.darken.sdmse.appcleaner.core.forensics.ExpendablesFilterIdentifier +import eu.darken.sdmse.appcleaner.core.forensics.filter.DefaultCachesPrivateFilter +import eu.darken.sdmse.appcleaner.core.forensics.filter.DefaultCachesPublicFilter +import eu.darken.sdmse.appcleaner.core.identifier import eu.darken.sdmse.common.datastore.value import eu.darken.sdmse.common.debug.logging.Logging.Priority.INFO import eu.darken.sdmse.common.debug.logging.Logging.Priority.VERBOSE @@ -104,10 +107,16 @@ class PostProcessorModule @Inject constructor( if (!useRoot && useShizuku) { val edgeCaseSegs = segs(before.pkg.id.name, "cache") - before.expendables.forEach { (type, matches) -> - val edgeCases = matches.filter { it.path.segments.containsSegments(edgeCaseSegs) } - edgeCaseMap[type] = edgeCases - } + val edgeCaseFilters = setOf( + DefaultCachesPublicFilter::class.identifier, + DefaultCachesPrivateFilter::class.identifier, + ) + before.expendables + .filter { edgeCaseFilters.contains(it.key) } + .forEach { (type, matches) -> + val edgeCases = matches.filter { it.path.segments.containsSegments(edgeCaseSegs) } + edgeCaseMap[type] = edgeCases + } } val exclusions = exclusionManager.pathExclusions(SDMTool.Type.APPCLEANER) @@ -122,7 +131,7 @@ class PostProcessorModule @Inject constructor( expendables = after.expendables?.mapValues { (type, paths) -> val edges = edgeCaseMap[type] ?: emptySet() if (edges.isNotEmpty()) log(TAG, VERBOSE) { "Re-adding edge cases: $edges" } - paths.plus(edges) + (paths + edges).toSet() } )