diff --git a/src/main/kotlin/app/revanced/patches/reddit/layout/place/PlaceButtonPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/layout/place/PlaceButtonPatch.kt index 4af761d8f..42e2deead 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/layout/place/PlaceButtonPatch.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/layout/place/PlaceButtonPatch.kt @@ -8,15 +8,21 @@ import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.Patch import app.revanced.patches.reddit.layout.place.fingerprints.HomePagerScreenFingerprint +import app.revanced.patches.reddit.utils.resourceid.SharedResourceIdPatch +import app.revanced.patches.reddit.utils.resourceid.SharedResourceIdPatch.ToolBarNavSearchCtaContainer import app.revanced.patches.reddit.utils.settings.SettingsBytecodePatch.updateSettingsStatus import app.revanced.patches.reddit.utils.settings.SettingsPatch -import app.revanced.util.bytecode.getStringIndex +import app.revanced.util.bytecode.getWideLiteralIndex import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction @Patch( name = "Hide place button", description = "Hide r/place button in toolbar.", - dependencies = [SettingsPatch::class], + dependencies = + [ + SettingsPatch::class, + SharedResourceIdPatch::class + ], compatiblePackages = [CompatiblePackage("com.reddit.frontpage")] ) @Suppress("unused") @@ -32,7 +38,7 @@ object PlaceButtonPatch : BytecodePatch( HomePagerScreenFingerprint.result?.let { it.mutableMethod.apply { val targetIndex = - getStringIndex("view.findViewById(Search\u2026nav_search_cta_container)") + getWideLiteralIndex(ToolBarNavSearchCtaContainer) + 3 val targetRegister = getInstruction(targetIndex - 1).registerA diff --git a/src/main/kotlin/app/revanced/patches/reddit/layout/place/fingerprints/HomePagerScreenFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/layout/place/fingerprints/HomePagerScreenFingerprint.kt index 7306c0acc..777a70228 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/layout/place/fingerprints/HomePagerScreenFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/layout/place/fingerprints/HomePagerScreenFingerprint.kt @@ -2,14 +2,16 @@ package app.revanced.patches.reddit.layout.place.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import app.revanced.patches.reddit.utils.resourceid.SharedResourceIdPatch.ToolBarNavSearchCtaContainer +import app.revanced.util.bytecode.isWideLiteralExists import com.android.tools.smali.dexlib2.AccessFlags object HomePagerScreenFingerprint : MethodFingerprint( returnType = "Landroid/view/View;", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, parameters = listOf("Landroid/view/LayoutInflater;", "Landroid/view/ViewGroup;"), - strings = listOf("view.findViewById(Search\u2026nav_search_cta_container)"), customFingerprint = { methodDef, _ -> methodDef.definingClass.endsWith("/HomePagerScreen;") + && methodDef.isWideLiteralExists(ToolBarNavSearchCtaContainer) } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/reddit/layout/screenshotpopup/fingerprints/ScreenshotTakenBannerFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/layout/screenshotpopup/fingerprints/ScreenshotTakenBannerFingerprint.kt index eee11f93e..d826d01f8 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/layout/screenshotpopup/fingerprints/ScreenshotTakenBannerFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/layout/screenshotpopup/fingerprints/ScreenshotTakenBannerFingerprint.kt @@ -9,5 +9,8 @@ import com.android.tools.smali.dexlib2.AccessFlags object ScreenshotTakenBannerFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - customFingerprint = { methodDef, classDef -> methodDef.isWideLiteralExists(ScreenShotShareBanner) && classDef.sourceFile == "ScreenshotTakenBanner.kt" } + customFingerprint = { methodDef, classDef -> + methodDef.isWideLiteralExists(ScreenShotShareBanner) + && classDef.sourceFile == "ScreenshotTakenBanner.kt" + } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/fingerprints/ShareLinkFormatterFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/fingerprints/ShareLinkFormatterFingerprint.kt index 4caf4d4e4..93b29a201 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/fingerprints/ShareLinkFormatterFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/fingerprints/ShareLinkFormatterFingerprint.kt @@ -5,9 +5,8 @@ import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint object ShareLinkFormatterFingerprint : MethodFingerprint( returnType = "Ljava/lang/String;", parameters = listOf("Ljava/lang/String;", "Ljava/util/Map;"), - strings = listOf( - "uri.getQueryParameters(name)", - "uri.queryParameterNames", - "newUriBuilder.build().toString()" - ), + customFingerprint = { methodDef, classDef -> + methodDef.definingClass.startsWith("Lcom/reddit/sharing/") + && classDef.sourceFile == "UrlUtil.kt" + } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/reddit/utils/resourceid/SharedResourceIdPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/utils/resourceid/SharedResourceIdPatch.kt index c76b737f8..54dd052e7 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/utils/resourceid/SharedResourceIdPatch.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/utils/resourceid/SharedResourceIdPatch.kt @@ -5,11 +5,14 @@ import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.patch.annotation.Patch import app.revanced.patches.shared.patch.mapping.ResourceMappingPatch import app.revanced.util.enum.ResourceType +import app.revanced.util.enum.ResourceType.ID import app.revanced.util.enum.ResourceType.STRING @Patch(dependencies = [ResourceMappingPatch::class]) object SharedResourceIdPatch : ResourcePatch() { + internal var LabelAcknowledgements = -1L internal var ScreenShotShareBanner = -1L + internal var ToolBarNavSearchCtaContainer = -1L override fun execute(context: ResourceContext) { @@ -18,7 +21,9 @@ object SharedResourceIdPatch : ResourcePatch() { .find { it.type == resourceType.value && it.name == resourceName }?.id ?: -1 + LabelAcknowledgements = find(STRING, "label_acknowledgements") ScreenShotShareBanner = find(STRING, "screenshot_share_banner_title") + ToolBarNavSearchCtaContainer = find(ID, "toolbar_nav_search_cta_container") } } \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/reddit/utils/settings/SettingsBytecodePatch.kt b/src/main/kotlin/app/revanced/patches/reddit/utils/settings/SettingsBytecodePatch.kt index b1d3084e9..36834d00e 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/utils/settings/SettingsBytecodePatch.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/utils/settings/SettingsBytecodePatch.kt @@ -6,13 +6,17 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod +import app.revanced.patches.reddit.utils.resourceid.SharedResourceIdPatch +import app.revanced.patches.reddit.utils.resourceid.SharedResourceIdPatch.LabelAcknowledgements import app.revanced.patches.reddit.utils.settings.fingerprints.AcknowledgementsLabelBuilderFingerprint import app.revanced.patches.reddit.utils.settings.fingerprints.OssLicensesMenuActivityOnCreateFingerprint import app.revanced.patches.reddit.utils.settings.fingerprints.SettingsStatusLoadFingerprint -import app.revanced.util.bytecode.getStringIndex +import app.revanced.util.bytecode.getWideLiteralIndex import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +@Patch(dependencies = [SharedResourceIdPatch::class]) object SettingsBytecodePatch : BytecodePatch( setOf( AcknowledgementsLabelBuilderFingerprint, @@ -42,7 +46,7 @@ object SettingsBytecodePatch : BytecodePatch( AcknowledgementsLabelBuilderFingerprint.result?.let { it.mutableMethod.apply { val insertIndex = - getStringIndex("resources.getString(R.st\u2026g.label_acknowledgements)") + getWideLiteralIndex(LabelAcknowledgements) + 3 val insertRegister = getInstruction(insertIndex - 1).registerA diff --git a/src/main/kotlin/app/revanced/patches/reddit/utils/settings/SettingsPatch.kt b/src/main/kotlin/app/revanced/patches/reddit/utils/settings/SettingsPatch.kt index f151722a4..6b6a02992 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/utils/settings/SettingsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/utils/settings/SettingsPatch.kt @@ -11,7 +11,11 @@ import kotlin.io.path.exists @Patch( name = "Settings", description = "Adds ReVanced settings to Reddit.", - dependencies = [IntegrationsPatch::class, SettingsBytecodePatch::class], + dependencies = + [ + IntegrationsPatch::class, + SettingsBytecodePatch::class + ], compatiblePackages = [CompatiblePackage("com.reddit.frontpage")], requiresIntegrations = true, ) diff --git a/src/main/kotlin/app/revanced/patches/reddit/utils/settings/fingerprints/AcknowledgementsLabelBuilderFingerprint.kt b/src/main/kotlin/app/revanced/patches/reddit/utils/settings/fingerprints/AcknowledgementsLabelBuilderFingerprint.kt index e3a760054..d7c3726db 100644 --- a/src/main/kotlin/app/revanced/patches/reddit/utils/settings/fingerprints/AcknowledgementsLabelBuilderFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/reddit/utils/settings/fingerprints/AcknowledgementsLabelBuilderFingerprint.kt @@ -2,11 +2,16 @@ package app.revanced.patches.reddit.utils.settings.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import app.revanced.patches.reddit.utils.resourceid.SharedResourceIdPatch.LabelAcknowledgements +import app.revanced.util.bytecode.isWideLiteralExists import com.android.tools.smali.dexlib2.AccessFlags object AcknowledgementsLabelBuilderFingerprint : MethodFingerprint( returnType = "Z", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, parameters = listOf("Landroidx/preference/Preference;"), - strings = listOf("resources.getString(R.st\u2026g.label_acknowledgements)") + customFingerprint = { methodDef, _ -> + methodDef.definingClass.startsWith("Lcom/reddit/screen/settings/preferences/") + && methodDef.isWideLiteralExists(LabelAcknowledgements) + } ) \ No newline at end of file