Skip to content

Commit

Permalink
feat(Twitter): Added Hide hidden replies patch
Browse files Browse the repository at this point in the history
  • Loading branch information
Swakshan committed May 20, 2024
1 parent 7ba6419 commit 431acc4
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package crimera.patches.twitter.timeline.hideHiddenReplies

import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
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 com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import crimera.patches.twitter.misc.settings.SettingsPatch
import crimera.patches.twitter.misc.settings.fingerprints.SettingsStatusLoadFingerprint

import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction


object HideHiddenRepliesFingerprint: MethodFingerprint(
returnType = "Ljava/lang/Object;",
customFingerprint = { it, _ ->
it.definingClass == "Lcom/twitter/model/json/timeline/urt/JsonTimelineTweet;"
}
)


@Patch(
name = "Hide hidden replies",
compatiblePackages = [CompatiblePackage("com.twitter.android")],
dependencies = [SettingsPatch::class]
)
@Suppress("unused")
object HideHiddenRepliesPatch: BytecodePatch(
setOf(HideHiddenRepliesFingerprint, SettingsStatusLoadFingerprint)
) {
override fun execute(context: BytecodeContext) {
val result = HideHiddenRepliesFingerprint.result
?: throw PatchException("Fingerprint not found")

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

val get_bool = instructions.last { it.opcode == Opcode.IGET_BOOLEAN }.location.index
val reg = method.getInstruction<TwoRegisterInstruction>(get_bool).registerA

val M = "invoke-static {v$reg}, ${SettingsPatch.PREF_DESCRIPTOR};->hideHiddenReplies(Z)Z"

method.addInstructions(get_bool+1, """
$M
move-result v$reg
""".trimIndent())

SettingsStatusLoadFingerprint.enableSettings("hideHiddenReplies")
}
}
1 change: 1 addition & 0 deletions src/main/resources/twitter/settings/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
<string name="piko_pref_show_poll_result_desc">View poll results without voting</string>
<string name="piko_pref_hide_immersive_player">Hide immersive player</string>
<string name="piko_pref_hide_immersive_player_desc">Removes swipe up for more videos in video player</string>
<string name="piko_pref_hide_hidden_replies">Hide hidden replies</string>

<string name="piko_title_customisation">Customization</string>
<string name="piko_pref_customisation_profiletabs">Profile tabs to hide</string>
Expand Down

0 comments on commit 431acc4

Please sign in to comment.