feat: generate an exception when an invalid value is entered

This commit is contained in:
inotia00
2023-07-24 04:41:02 +09:00
parent 3663d072b9
commit 63b0227e2a
8 changed files with 45 additions and 26 deletions

View File

@ -68,7 +68,7 @@ class CustomBrandingNamePatch : ResourcePatch {
} }
} }
} ?: return PatchResultError("No app name provided") } ?: return PatchResultError("Invalid app name.")
return PatchResultSuccess() return PatchResultSuccess()
} }

View File

@ -7,6 +7,7 @@ import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.OptionsContainer import app.revanced.patcher.patch.OptionsContainer
import app.revanced.patcher.patch.PatchOption import app.revanced.patcher.patch.PatchOption
import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultError
import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.DependsOn
@ -28,17 +29,11 @@ import app.revanced.patches.music.utils.fix.decoding.patch.DecodingPatch
class CustomBrandingNamePatch : ResourcePatch { class CustomBrandingNamePatch : ResourcePatch {
override fun execute(context: ResourceContext): PatchResult { override fun execute(context: ResourceContext): PatchResult {
val longName = val longName = MusicLongName
if (MusicLongName != null) ?: throw PatchResultError("Invalid app name.")
MusicLongName
else
"ReVanced Extended Music"
val shortName = val shortName = MusicShortName
if (MusicShortName != null) ?: throw PatchResultError("Invalid app name.")
MusicShortName
else
"RVX Music"
context.xmlEditor["res/values/strings.xml"].use { editor -> context.xmlEditor["res/values/strings.xml"].use { editor ->
val document = editor.file val document = editor.file

View File

@ -6,6 +6,7 @@ import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultError
import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.DependsOn
import app.revanced.patcher.patch.annotations.Patch import app.revanced.patcher.patch.annotations.Patch
@ -55,8 +56,14 @@ class MicroGPatch : BytecodePatch(
// - "com.google.android.gms.phenotype.UPDATE", // - "com.google.android.gms.phenotype.UPDATE",
// - "com.google.android.gms.phenotype", // - "com.google.android.gms.phenotype",
override fun execute(context: BytecodeContext): PatchResult { override fun execute(context: BytecodeContext): PatchResult {
val packageNameYouTube = PackageNamePatch.YouTubePackageName!! val youtubePackageName = PackageNamePatch.YouTubePackageName
val packageNameMusic = PackageNamePatch.MusicPackageName!! ?: throw PatchResultError("Invalid package name.")
val musicPackageName = PackageNamePatch.MusicPackageName
?: throw PatchResultError("Invalid package name.")
if (youtubePackageName == YOUTUBE_PACKAGE_NAME || musicPackageName == MUSIC_PACKAGE_NAME)
throw PatchResultError("Original package name is not available as package name for MicroG build.")
// apply common microG patch // apply common microG patch
MicroGBytecodeHelper.patchBytecode( MicroGBytecodeHelper.patchBytecode(
@ -64,13 +71,13 @@ class MicroGPatch : BytecodePatch(
arrayOf( arrayOf(
MicroGBytecodeHelper.packageNameTransform( MicroGBytecodeHelper.packageNameTransform(
YOUTUBE_PACKAGE_NAME, YOUTUBE_PACKAGE_NAME,
packageNameYouTube youtubePackageName
) )
), ),
MicroGBytecodeHelper.PrimeMethodTransformationData( MicroGBytecodeHelper.PrimeMethodTransformationData(
PrimeFingerprint, PrimeFingerprint,
MUSIC_PACKAGE_NAME, MUSIC_PACKAGE_NAME,
packageNameMusic musicPackageName
), ),
listOf( listOf(
ServiceCheckFingerprint, ServiceCheckFingerprint,

View File

@ -2,6 +2,7 @@ package app.revanced.patches.music.utils.microg.resource.patch
import app.revanced.patcher.data.ResourceContext import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultError
import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.DependsOn
@ -16,12 +17,16 @@ import app.revanced.util.resources.MusicResourceHelper.setMicroG
@DependsOn([PackageNamePatch::class]) @DependsOn([PackageNamePatch::class])
class MicroGResourcePatch : ResourcePatch { class MicroGResourcePatch : ResourcePatch {
override fun execute(context: ResourceContext): PatchResult { override fun execute(context: ResourceContext): PatchResult {
val packageNameMusic = PackageNamePatch.MusicPackageName!! val packageName = PackageNamePatch.MusicPackageName
?: throw PatchResultError("Invalid package name.")
if (packageName == MUSIC_PACKAGE_NAME)
throw PatchResultError("Original package name is not available as package name for MicroG build.")
// update manifest // update manifest
context.patchManifest( context.patchManifest(
MUSIC_PACKAGE_NAME, MUSIC_PACKAGE_NAME,
packageNameMusic packageName
) )
// add metadata to the manifest // add metadata to the manifest
@ -30,7 +35,7 @@ class MicroGResourcePatch : ResourcePatch {
SPOOFED_PACKAGE_SIGNATURE SPOOFED_PACKAGE_SIGNATURE
) )
context.setMicroG(packageNameMusic) context.setMicroG(packageName)
return PatchResultSuccess() return PatchResultSuccess()
} }

View File

@ -7,6 +7,7 @@ import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.OptionsContainer import app.revanced.patcher.patch.OptionsContainer
import app.revanced.patcher.patch.PatchOption import app.revanced.patcher.patch.PatchOption
import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultError
import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.DependsOn
@ -29,11 +30,8 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusLabel
class CustomBrandingNamePatch : ResourcePatch { class CustomBrandingNamePatch : ResourcePatch {
override fun execute(context: ResourceContext): PatchResult { override fun execute(context: ResourceContext): PatchResult {
val appName = val appName = YouTubeAppName
if (YouTubeAppName != null) ?: throw PatchResultError("Invalid app name.")
YouTubeAppName
else
"ReVanced Extended"
context.xmlEditor["res/values/strings.xml"].use { editor -> context.xmlEditor["res/values/strings.xml"].use { editor ->
val document = editor.file val document = editor.file

View File

@ -7,6 +7,7 @@ import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.OptionsContainer import app.revanced.patcher.patch.OptionsContainer
import app.revanced.patcher.patch.PatchOption import app.revanced.patcher.patch.PatchOption
import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultError
import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.DependsOn
@ -41,6 +42,9 @@ class ThemePatch : ResourcePatch {
} }
private fun ResourceContext.setTheme(valuesPath: String) { private fun ResourceContext.setTheme(valuesPath: String) {
val darkThemeColor = darkThemeBackgroundColor
?: throw PatchResultError("Invalid color.")
this.xmlEditor["res/$valuesPath/colors.xml"].use { editor -> this.xmlEditor["res/$valuesPath/colors.xml"].use { editor ->
val resourcesNode = editor.file.getElementsByTagName("resources").item(0) as Element val resourcesNode = editor.file.getElementsByTagName("resources").item(0) as Element
@ -49,7 +53,7 @@ class ThemePatch : ResourcePatch {
node.textContent = when (node.getAttribute("name")) { node.textContent = when (node.getAttribute("name")) {
"yt_black0", "yt_black1", "yt_black1_opacity95", "yt_black1_opacity98", "yt_black2", "yt_black3", "yt_black0", "yt_black1", "yt_black1_opacity95", "yt_black1_opacity98", "yt_black2", "yt_black3",
"yt_black4", "yt_status_bar_background_dark", "material_grey_850" -> darkThemeBackgroundColor "yt_black4", "yt_status_bar_background_dark", "material_grey_850" -> darkThemeColor
else -> continue else -> continue
} }

View File

@ -3,6 +3,7 @@ package app.revanced.patches.youtube.utils.microg.bytecode.patch
import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultError
import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.DependsOn
import app.revanced.patches.shared.patch.packagename.PackageNamePatch import app.revanced.patches.shared.patch.packagename.PackageNamePatch
@ -37,7 +38,11 @@ class MicroGBytecodePatch : BytecodePatch(
) { ) {
override fun execute(context: BytecodeContext): PatchResult { override fun execute(context: BytecodeContext): PatchResult {
val packageName = PackageNamePatch.YouTubePackageName!! val packageName = PackageNamePatch.YouTubePackageName
?: throw PatchResultError("Invalid package name.")
if (packageName == PACKAGE_NAME)
throw PatchResultError("Original package name is not available as package name for MicroG build.")
// apply common microG patch // apply common microG patch
MicroGBytecodeHelper.patchBytecode( MicroGBytecodeHelper.patchBytecode(

View File

@ -5,6 +5,7 @@ import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.ResourceContext import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultError
import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.DependsOn
@ -36,7 +37,11 @@ import app.revanced.util.resources.ResourceHelper.setMicroG
class MicroGPatch : ResourcePatch { class MicroGPatch : ResourcePatch {
override fun execute(context: ResourceContext): PatchResult { override fun execute(context: ResourceContext): PatchResult {
val packageName = PackageNamePatch.YouTubePackageName!! val packageName = PackageNamePatch.YouTubePackageName
?: throw PatchResultError("Invalid package name.")
if (packageName == PACKAGE_NAME)
throw PatchResultError("Original package name is not available as package name for MicroG build.")
/** /**
* Add settings * Add settings