Skip to content

Commit

Permalink
refactor(Twitter): Added toggle for Show sensitive media patch
Browse files Browse the repository at this point in the history
  • Loading branch information
swakwork committed Nov 25, 2024
1 parent 6c152a8 commit cac4fe7
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 58 deletions.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package crimera.patches.twitter.timeline.sensitivemediasettings

import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import com.android.tools.smali.dexlib2.Opcode
import crimera.patches.twitter.misc.settings.SettingsPatch
import crimera.patches.twitter.misc.settings.fingerprints.SettingsStatusLoadFingerprint
import crimera.patches.twitter.timeline.sensitivemediasettings.fingerprints.SensitiveMediaSettingsPatchFingerprint

// Credits to @Cradlesofashes
@Patch(
name = "Show sensitive media",
description = "Shows sensitive media",
dependencies = [SettingsPatch::class],
compatiblePackages = [CompatiblePackage("com.twitter.android")],
)
@Suppress("unused")
object SensitiveMediaPatch : BytecodePatch(
setOf(SensitiveMediaSettingsPatchFingerprint, SettingsStatusLoadFingerprint),
) {
override fun execute(context: BytecodeContext) {
val TIMELINE_ENTRY_DESCRIPTOR = "${SettingsPatch.PATCHES_DESCRIPTOR}/TimelineEntry"

val result =
SensitiveMediaSettingsPatchFingerprint.result
?: throw PatchException("SensitiveMediaSettingsPatchFingerprint not found")

val methods = result.mutableMethod
val instructions = methods.getInstructions()

val returnObj = instructions.last { it.opcode == Opcode.RETURN_OBJECT }.location.index

methods.addInstructions(
returnObj,
"""
invoke-static {p1}, $TIMELINE_ENTRY_DESCRIPTOR;->sensitiveMedia(Lcom/twitter/model/json/core/JsonSensitiveMediaWarning;)Lcom/twitter/model/json/core/JsonSensitiveMediaWarning;
move-result-object p1
""".trimIndent(),
)

SettingsStatusLoadFingerprint.enableSettings("showSensitiveMedia")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package crimera.patches.twitter.timeline.sensitivemediasettings.fingerprints

import app.revanced.patcher.fingerprint.MethodFingerprint

object SensitiveMediaSettingsPatchFingerprint : MethodFingerprint(
returnType = "Ljava/lang/Object",
customFingerprint = { it, _ ->
it.definingClass == "Lcom/twitter/model/json/core/JsonSensitiveMediaWarning\$\$JsonObjectMapper;" && it.name == "parse"
},
)

0 comments on commit cac4fe7

Please sign in to comment.