Skip to content

Commit

Permalink
refactor: rename clear mode to clear display
Browse files Browse the repository at this point in the history
  • Loading branch information
d4rkk3y committed Dec 19, 2023
1 parent f8e4bbd commit d856141
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.patches.tiktok.interaction.clearmode
package app.revanced.patches.tiktok.interaction.cleardisplay

import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
Expand All @@ -8,8 +8,8 @@ import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.tiktok.interaction.clearmode.fingerprints.OnClearModeEventFingerprint
import app.revanced.patches.tiktok.interaction.clearmode.fingerprints.OnRenderFirstFrameFingerprint
import app.revanced.patches.tiktok.interaction.cleardisplay.fingerprints.OnClearModeEventFingerprint
import app.revanced.patches.tiktok.interaction.cleardisplay.fingerprints.OnRenderFirstFrameFingerprint
import app.revanced.util.exception
import app.revanced.util.indexOfFirstInstruction
import com.android.tools.smali.dexlib2.Opcode
Expand All @@ -24,52 +24,52 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction22c
]
)
@Suppress("unused")
object RememberClearModePatch : BytecodePatch(
object RememberClearDisplayPatch : BytecodePatch(
setOf(
OnClearModeEventFingerprint,
OnRenderFirstFrameFingerprint
)
) {
override fun execute(context: BytecodeContext) {
OnClearModeEventFingerprint.result?.mutableMethod?.let {
// region Hook the "Clear mode" configuration save event to remember the state of clear mode.
// region Hook the "Clear display" configuration save event to remember the state of clear display.

val isEnabledIndex = it.indexOfFirstInstruction { opcode == Opcode.IGET_BOOLEAN } + 1
val isEnabledRegister = it.getInstruction<Instruction22c>(isEnabledIndex - 1).registerA

it.addInstructions(
isEnabledIndex,
"invoke-static { v$isEnabledRegister }, " +
"Lapp/revanced/tiktok/clearmode/RememberClearModePatch;->rememberClearModeState(Z)V"
"Lapp/revanced/tiktok/clearmode/RememberClearModePatch;->rememberClearDisplayState(Z)V"
)

// endregion

// region Override the "Clear mode" configuration load event to load the state of clear mode.
// region Override the "Clear display" configuration load event to load the state of clear display.

val clearModeEventClass = it.parameters[0].type
val clearDisplayEventClass = it.parameters[0].type
OnRenderFirstFrameFingerprint.result?.mutableMethod?.apply {
addInstructionsWithLabels(
0,
"""
# Create a new clearModeEvent and post it to the EventBus (https://github.com/greenrobot/EventBus)
# Create a new clearDisplayEvent and post it to the EventBus (https://github.com/greenrobot/EventBus)
# The state of clear mode.
invoke-static { }, Lapp/revanced/tiktok/clearmode/RememberClearModePatch;->getClearModeState()Z
# The state of clear display.
invoke-static { }, Lapp/revanced/tiktok/clearmode/RememberClearModePatch;->getClearDisplayState()Z
move-result v3
if-eqz v3, :clear_mode_disabled
if-eqz v3, :clear_display_disabled
# Clear mode type such as 0 = LONG_PRESS, 1 = SCREEN_RECORD etc.
# Clear display type such as 0 = LONG_PRESS, 1 = SCREEN_RECORD etc.
const/4 v1, 0x0
# Name of the clear mode type which is equivalent to the clear mode type.
# Name of the clear display type which is equivalent to the clear display type.
const-string v2, "long_press"
new-instance v0, $clearModeEventClass
invoke-direct { v0, v1, v2, v3 }, $clearModeEventClass-><init>(ILjava/lang/String;Z)V
invoke-virtual { v0 }, $clearModeEventClass->post()Lcom/ss/android/ugc/governance/eventbus/IEvent;
new-instance v0, $clearDisplayEventClass
invoke-direct { v0, v1, v2, v3 }, $clearDisplayEventClass-><init>(ILjava/lang/String;Z)V
invoke-virtual { v0 }, $clearDisplayEventClass->post()Lcom/ss/android/ugc/governance/eventbus/IEvent;
""",
ExternalLabel("clear_mode_disabled", getInstruction(0))
ExternalLabel("clear_display_disabled", getInstruction(0))
)
} ?: throw OnRenderFirstFrameFingerprint.exception

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.patches.tiktok.interaction.clearmode.fingerprints
package app.revanced.patches.tiktok.interaction.cleardisplay.fingerprints

import app.revanced.patcher.fingerprint.MethodFingerprint

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.patches.tiktok.interaction.clearmode.fingerprints
package app.revanced.patches.tiktok.interaction.cleardisplay.fingerprints

import app.revanced.patcher.fingerprint.MethodFingerprint

Expand Down

0 comments on commit d856141

Please sign in to comment.