Skip to content

Commit

Permalink
feat(Twitter): Added Hide bookmark icon in timeline
Browse files Browse the repository at this point in the history
  • Loading branch information
Swakshan committed Apr 1, 2024
1 parent a9978fc commit ff66167
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 0 deletions.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,13 @@ java -jar cli.jar patch \
<td> <details><img src="./docs/images/23-hide-live-threads.webp" alt="23-hide-live-threads" width="800" height="240"/></details></td>
</tr>

<tr>
<td><code>Hide bookmark icon in timeline</code></td>
<td></td>
<td>Timeline</td>
<td></td>
</tr>

</tbody>
</table>
</details>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package crimera.patches.twitter.timeline.hidebookmarkintimeline

import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchException
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.hidebookmarkintimeline.fingerprints.HideBookmarkInTimelineFingerprint1
import crimera.patches.twitter.timeline.hidebookmarkintimeline.fingerprints.HideBookmarkInTimelineFingerprint2

import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch

@Patch(
name = "Hide bookmark icon in timeline",
dependencies = [SettingsPatch::class],
compatiblePackages = [CompatiblePackage("com.twitter.android")],
)
object HideBookmarkInTimelinePatch:BytecodePatch(
setOf(HideBookmarkInTimelineFingerprint1,HideBookmarkInTimelineFingerprint2, SettingsStatusLoadFingerprint)
) {
override fun execute(context: BytecodeContext) {
val result1 = HideBookmarkInTimelineFingerprint1.result
?:throw PatchException("HideBookmarkInTimelineFingerprint1 not found")

val PREF = "invoke-static {}, ${SettingsPatch.PREF_DESCRIPTOR};->hideInlineBookmark()Z"

val method1 = result1.mutableMethod
val loc = method1.getInstructions().first { it.opcode == Opcode.CONST_STRING }.location.index+2
method1.addInstruction(loc,PREF)

val result2 = HideBookmarkInTimelineFingerprint2.result
?:throw PatchException("HideBookmarkInTimelineFingerprint2 not found")
val method2 = result2.mutableMethod
val loc2 = method2.getInstructions().first { it.opcode == Opcode.CONST_STRING }.location.index+2
method2.addInstruction(loc2,PREF)

SettingsStatusLoadFingerprint.result!!.mutableMethod.addInstruction(
0,
"${SettingsPatch.SSTS_DESCRIPTOR}->hideInlineBmk()V"
)

//end
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package crimera.patches.twitter.timeline.hidebookmarkintimeline.fingerprints

import app.revanced.patcher.fingerprint.MethodFingerprint

object HideBookmarkInTimelineFingerprint1: MethodFingerprint(
strings = listOf("bookmarks_in_timelines_enabled"),
returnType = "Z"

)
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package crimera.patches.twitter.timeline.hidebookmarkintimeline.fingerprints

import app.revanced.patcher.fingerprint.MethodFingerprint

object HideBookmarkInTimelineFingerprint2 :MethodFingerprint(
strings = listOf("bookmarks_in_timelines_enabled"),
returnType = "Ljava/util/List;"

)

0 comments on commit ff66167

Please sign in to comment.