Files
revanced-library/src/main/kotlin/app/revanced/library/PatchUtils.kt
2023-09-23 17:47:52 +02:00

28 lines
989 B
Kotlin

package app.revanced.library
import app.revanced.patcher.PatchSet
/**
* Utility functions for working with patches.
*/
@Suppress("MemberVisibilityCanBePrivate", "unused")
object PatchUtils {
/**
* Get the version that is most common for [packageName] in the supplied set of [patches].
*
* @param patches The set of patches to check.
* @param packageName The name of the compatible package.
* @return The most common version of.
*/
fun getMostCommonCompatibleVersion(patches: PatchSet, packageName: String) = patches
.mapNotNull {
// Map all patches to their compatible packages with version constraints.
it.compatiblePackages?.firstOrNull { compatiblePackage ->
compatiblePackage.name == packageName && compatiblePackage.versions?.isNotEmpty() == true
}
}
.flatMap { it.versions!! }
.groupingBy { it }
.eachCount()
.maxByOrNull { it.value }?.key
}