Skip to content

Commit 71ad563

Browse files
authored
Merge pull request #597 from swakwork/feat/res-logging
Feature Update
2 parents 5a14515 + ea87cdb commit 71ad563

File tree

3 files changed

+115
-0
lines changed

3 files changed

+115
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package crimera.patches.twitter.logging.responseLogging
2+
3+
import app.revanced.patcher.data.BytecodeContext
4+
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
5+
import app.revanced.patcher.fingerprint.MethodFingerprint
6+
import app.revanced.patcher.patch.BytecodePatch
7+
import app.revanced.patcher.patch.PatchException
8+
import app.revanced.patcher.patch.annotation.CompatiblePackage
9+
import app.revanced.patcher.patch.annotation.Patch
10+
import crimera.patches.twitter.misc.settings.SettingsPatch
11+
import crimera.patches.twitter.misc.settings.fingerprints.SettingsStatusLoadFingerprint
12+
13+
object InpStreamFingerprint : MethodFingerprint(
14+
returnType = "Ljava/io/InputStream",
15+
customFingerprint = { methodDef, classDef ->
16+
classDef.type.contains("fasterxml/jackson/core/") &&
17+
methodDef.parameters.size == 2
18+
},
19+
)
20+
21+
@Patch(
22+
name = "Log server response",
23+
description = "Log json responses received from server",
24+
dependencies = [SettingsPatch::class],
25+
compatiblePackages = [CompatiblePackage("com.twitter.android")],
26+
requiresIntegrations = true,
27+
)
28+
@Suppress("unused")
29+
object RequestLogging : BytecodePatch(
30+
setOf(SettingsStatusLoadFingerprint, InpStreamFingerprint),
31+
) {
32+
override fun execute(context: BytecodeContext) {
33+
val result = InpStreamFingerprint.result ?: throw PatchException("InpStreamFingerprint is not found")
34+
35+
result.mutableMethod.addInstructions(
36+
0,
37+
"""
38+
invoke-static {p1}, ${SettingsPatch.PATCHES_DESCRIPTOR}/loggers/ResponseLogger;->saveInputStream(Ljava/io/InputStream;)Ljava/io/InputStream;
39+
move-result-object p1
40+
""".trimIndent(),
41+
)
42+
43+
SettingsStatusLoadFingerprint.enableSettings("serverResponseLogging")
44+
SettingsStatusLoadFingerprint.enableSettings("serverResponseLoggingOverwriteFile")
45+
}
46+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package crimera.patches.twitter.timeline.hideCommunityBadge
2+
3+
import app.revanced.patcher.data.BytecodeContext
4+
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
5+
import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
6+
import app.revanced.patcher.fingerprint.MethodFingerprint
7+
import app.revanced.patcher.patch.BytecodePatch
8+
import app.revanced.patcher.patch.PatchException
9+
import app.revanced.patcher.patch.annotation.CompatiblePackage
10+
import app.revanced.patcher.patch.annotation.Patch
11+
import app.revanced.patcher.util.smali.ExternalLabel
12+
import com.android.tools.smali.dexlib2.Opcode
13+
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction22c
14+
import crimera.patches.twitter.misc.settings.SettingsPatch
15+
import crimera.patches.twitter.misc.settings.fingerprints.SettingsStatusLoadFingerprint
16+
import crimera.patches.twitter.misc.shareMenu.nativeDownloader.extractDescriptors
17+
18+
object CommModelFingerprint : MethodFingerprint(
19+
strings =
20+
listOf(
21+
"actionResults",
22+
"role",
23+
),
24+
)
25+
26+
@Patch(
27+
name = "Hide community badges",
28+
description = "",
29+
dependencies = [SettingsPatch::class],
30+
compatiblePackages = [CompatiblePackage("com.twitter.android")],
31+
requiresIntegrations = true,
32+
)
33+
@Suppress("unused")
34+
object HideCommunityBadge : BytecodePatch(
35+
setOf(SettingsStatusLoadFingerprint, CommModelFingerprint),
36+
) {
37+
override fun execute(context: BytecodeContext) {
38+
val result = CommModelFingerprint.result ?: throw PatchException("CommModelFingerprint not found")
39+
40+
val method =
41+
result.mutableMethod
42+
val instructions = method.getInstructions()
43+
44+
val iputObj = instructions.last { it.opcode == Opcode.IPUT_OBJECT }
45+
val iputObjIns = iputObj as Instruction22c
46+
val ref = iputObjIns.reference.extractDescriptors()[1]
47+
val reg = iputObjIns.registerA
48+
val index = iputObj.location.index
49+
50+
method.addInstructionsWithLabels(
51+
index,
52+
"""
53+
sget-boolean v0, ${SettingsPatch.PREF_DESCRIPTOR};->HIDE_COMM_BADGE:Z
54+
if-eqz v0, :piko
55+
sget-object v$reg, $ref->NON_MEMBER:$ref
56+
""".trimIndent(),
57+
ExternalLabel("piko", iputObj),
58+
)
59+
SettingsStatusLoadFingerprint.enableSettings("hideCommBadge")
60+
}
61+
}

src/main/resources/twitter/settings/values/strings.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@
121121
<string name="piko_pref_hide_nudge_button_desc">Hides follow/subscribe/follow back buttons on posts</string>
122122
<string name="piko_pref_hide_social_proof">Hide followed by context</string>
123123
<string name="piko_pref_hide_social_proof_desc">Hides followed by context under profile</string>
124+
<string name="piko_pref_hide_community_badge">Hide community badges</string>
124125

125126
<!-- Customization Settings -->
126127
<string name="piko_title_customisation">Customization</string>
@@ -139,6 +140,13 @@
139140
<string name="piko_pref_customisation_post_font_size">Post font size</string>
140141
<string name="piko_pref_customisation_search_type_ahead">Search suggestions to hide</string>
141142

143+
<!-- Logging Settings -->
144+
<string name="piko_title_logging">Logging</string>
145+
<string name="piko_pref_server_response_logging">Log server response</string>
146+
<string name="piko_pref_server_response_logging_desc">Log json responses received from the server in 'Download/Piko'</string>
147+
<string name="piko_pref_server_response_logging_file_overwrite">Overwrite response log file</string>
148+
<string name="piko_pref_server_response_logging_file_overwrite_desc">Clear existing response log data on launch</string>
149+
142150
<!-- Backup and Restore -->
143151
<string name="piko_title_backup">Backup and restore</string>
144152
<string name="piko_pref_export">Export %s</string>

0 commit comments

Comments
 (0)