From 4be6a7fe6ace42ca299d2e4bc7f9a963774f3bcd Mon Sep 17 00:00:00 2001 From: swakwork Date: Thu, 28 Nov 2024 00:22:55 +0530 Subject: [PATCH] feat(Twitter): Added `Customize explore tabs` patch --- .../exploretabs/CustomiseExploreTabsPatch.kt | 53 +++++++++++++++++++ .../twitter/settings/values-v21/arrays.xml | 9 ++++ .../twitter/settings/values/arrays.xml | 9 ++++ .../twitter/settings/values/strings.xml | 1 + 4 files changed, 72 insertions(+) create mode 100644 src/main/kotlin/crimera/patches/twitter/misc/customize/exploretabs/CustomiseExploreTabsPatch.kt diff --git a/src/main/kotlin/crimera/patches/twitter/misc/customize/exploretabs/CustomiseExploreTabsPatch.kt b/src/main/kotlin/crimera/patches/twitter/misc/customize/exploretabs/CustomiseExploreTabsPatch.kt new file mode 100644 index 00000000..c948744e --- /dev/null +++ b/src/main/kotlin/crimera/patches/twitter/misc/customize/exploretabs/CustomiseExploreTabsPatch.kt @@ -0,0 +1,53 @@ +package crimera.patches.twitter.misc.customize.timelinetabs + +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +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 crimera.patches.twitter.misc.settings.SettingsPatch +import crimera.patches.twitter.misc.settings.fingerprints.SettingsStatusLoadFingerprint + +object CustomiseExploreTabsFingerprint : MethodFingerprint( + opcodes = listOf(Opcode.NEW_INSTANCE), + customFingerprint = { it, _ -> + it.definingClass.endsWith("JsonPageTabs;") + }, +) + +@Patch( + name = "Customize explore tabs", + dependencies = [SettingsPatch::class], + compatiblePackages = [CompatiblePackage("com.twitter.android")], + use = true, +) +@Suppress("unused") +object CustomiseExploreTabsPatch : BytecodePatch( + setOf(CustomiseExploreTabsFingerprint, SettingsStatusLoadFingerprint), +) { + override fun execute(context: BytecodeContext) { + val result = + CustomiseExploreTabsFingerprint.result + ?: throw PatchException("CustomiseExploreTabsFingerprint not found") + + val method = result.mutableMethod + + val instructions = method.getInstructions() + + val index = instructions.first { it.opcode == Opcode.IGET_OBJECT }.location.index + + method.addInstructions( + index + 1, + """ + invoke-static {v1}, ${SettingsPatch.CUSTOMISE_DESCRIPTOR};->exploretabs(Ljava/util/ArrayList;)Ljava/util/ArrayList; + move-result-object v1 + """.trimIndent(), + ) + + SettingsStatusLoadFingerprint.enableSettings("exploreTabCustomisation") + } +} diff --git a/src/main/resources/twitter/settings/values-v21/arrays.xml b/src/main/resources/twitter/settings/values-v21/arrays.xml index 45c6869b..5da81ad7 100644 --- a/src/main/resources/twitter/settings/values-v21/arrays.xml +++ b/src/main/resources/twitter/settings/values-v21/arrays.xml @@ -14,6 +14,15 @@ hide_following + + for_you + trending + fun + news + sports + entertainment + + download_media copy_media_link diff --git a/src/main/resources/twitter/settings/values/arrays.xml b/src/main/resources/twitter/settings/values/arrays.xml index 3d3b0dce..bf0be3f1 100644 --- a/src/main/resources/twitter/settings/values/arrays.xml +++ b/src/main/resources/twitter/settings/values/arrays.xml @@ -12,6 +12,15 @@ @string/profile_tab_title_likes + + @string/guide_tab_title_for_you + @string/guide_tab_title_trending + @string/guide_tab_title_fun + @string/guide_tab_title_news + @string/guide_tab_title_sports + @string/guide_tab_title_entertainment + + @string/piko_pref_customisation_timelinetabs_both @string/piko_pref_customisation_timelinetabs_foryou diff --git a/src/main/resources/twitter/settings/values/strings.xml b/src/main/resources/twitter/settings/values/strings.xml index 6a87ef4a..8c3476df 100644 --- a/src/main/resources/twitter/settings/values/strings.xml +++ b/src/main/resources/twitter/settings/values/strings.xml @@ -119,6 +119,7 @@ Side bar items to hide Navigation bar items to hide Inline bar items to hide + Explore tabs Default reply sorting filter Previously selected Post font size