Skip to content

Commit

Permalink
feat(Twitter): Added Customize reply sort filter patch
Browse files Browse the repository at this point in the history
  • Loading branch information
swakwork committed Aug 11, 2024
1 parent 2cc2443 commit 121b8a6
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package crimera.patches.twitter.misc.customize.replySorting

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.fingerprint.MethodFingerprint
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 com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import crimera.patches.twitter.misc.settings.SettingsPatch
import crimera.patches.twitter.misc.settings.fingerprints.SettingsStatusLoadFingerprint


object ReplySortingInvokeClassFinderFingerprint: MethodFingerprint(
customFingerprint = {it,_->
it.definingClass == "Lcom/twitter/tweetview/focal/ui/replysorting/ReplySortingViewDelegateBinder;"
}
)


@Patch(
name = "Customize reply sort filter",
dependencies = [SettingsPatch::class],
compatiblePackages = [CompatiblePackage("com.twitter.android")],
requiresIntegrations = true
)
@Suppress("unused")
object DefaultReplySortingPatch:BytecodePatch(
setOf(SettingsStatusLoadFingerprint,ReplySortingInvokeClassFinderFingerprint)
){
override fun execute(context: BytecodeContext) {
val result = ReplySortingInvokeClassFinderFingerprint.result
?:throw PatchException("ReplySortingInvokeClassFinderFingerprint not found")


val replySortingInvokeClass= result.classDef.fields.first().type
val method = context.findClass(replySortingInvokeClass)!!.mutableClass.directMethods.first()
val instructions = method.getInstructions()
val loc = instructions.first{it.opcode == Opcode.SGET_OBJECT}.location.index
val rClass = (method.getInstruction<ReferenceInstruction>(loc).reference as FieldReference).definingClass
val r0 = method.getInstruction<OneRegisterInstruction>(loc).registerA
method.addInstructions(loc+1,
"""
invoke-static {}, ${SettingsPatch.PREF_DESCRIPTOR};->defaultReplySortFilter()Ljava/lang/String;
move-result-object v$r0
invoke-static{v0}, $rClass->valueOf(Ljava/lang/String;)$rClass
move-result-object v$r0
""".trimIndent())

SettingsStatusLoadFingerprint.enableSettings("defaultReplySortFilter")

}
}
6 changes: 6 additions & 0 deletions src/main/resources/twitter/settings/values/arrays.xml
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,10 @@
<item>@string/piko_pref_hide_premium_prompt</item>
</string-array>

<string-array name="piko_array_reply_sorting">
<item>@string/detail_filter_trending_title</item>
<item>@string/detail_filter_recent_title</item>
<item>@string/detail_filter_most_liked_title</item>
</string-array>

</resources>
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 @@ -101,6 +101,7 @@
<string name="piko_pref_customisation_sidebartabs">Side bar items to hide</string>
<string name="piko_pref_customisation_navbartabs">Navigation bar items to hide</string>
<string name="piko_pref_customisation_inlinetabs">Inline bar items to hide</string>
<string name="piko_pref_customisation_reply_sorting">Default reply sorting filter</string>

<string name="piko_title_backup">Backup and restore</string>
<string name="piko_pref_export">Export %s</string>
Expand Down

0 comments on commit 121b8a6

Please sign in to comment.