From d7e44cb887396bba27ee81c70c006f0cc247c56d Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Thu, 21 Dec 2023 15:32:18 +0100 Subject: [PATCH] fix(Tiktok - Remember clear display): Use correct name --- api/revanced-patches.api | 4 +- .../RememberClearModePatch.kt | 46 +++++++++---------- .../OnClearDisplayEventFingerprint.kt} | 5 +- .../OnRenderFirstFrameFingerprint.kt | 2 +- 4 files changed, 29 insertions(+), 28 deletions(-) rename src/main/kotlin/app/revanced/patches/tiktok/interaction/{clearmode => cleardisplay}/RememberClearModePatch.kt (51%) rename src/main/kotlin/app/revanced/patches/tiktok/interaction/{clearmode/fingerprints/OnClearModeEventFingerprint.kt => cleardisplay/fingerprints/OnClearDisplayEventFingerprint.kt} (52%) rename src/main/kotlin/app/revanced/patches/tiktok/interaction/{clearmode => cleardisplay}/fingerprints/OnRenderFirstFrameFingerprint.kt (79%) diff --git a/api/revanced-patches.api b/api/revanced-patches.api index 60369b22f..af672207f 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -818,8 +818,8 @@ public final class app/revanced/patches/tiktok/feedfilter/FeedFilterPatch : app/ public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } -public final class app/revanced/patches/tiktok/interaction/clearmode/RememberClearModePatch : app/revanced/patcher/patch/BytecodePatch { - public static final field INSTANCE Lapp/revanced/patches/tiktok/interaction/clearmode/RememberClearModePatch; +public final class app/revanced/patches/tiktok/interaction/cleardisplay/RememberClearDisplayPatch : app/revanced/patcher/patch/BytecodePatch { + public static final field INSTANCE Lapp/revanced/patches/tiktok/interaction/cleardisplay/RememberClearDisplayPatch; public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V } diff --git a/src/main/kotlin/app/revanced/patches/tiktok/interaction/clearmode/RememberClearModePatch.kt b/src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/RememberClearModePatch.kt similarity index 51% rename from src/main/kotlin/app/revanced/patches/tiktok/interaction/clearmode/RememberClearModePatch.kt rename to src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/RememberClearModePatch.kt index ac8ad6cca..7cf98bec2 100644 --- a/src/main/kotlin/app/revanced/patches/tiktok/interaction/clearmode/RememberClearModePatch.kt +++ b/src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/RememberClearModePatch.kt @@ -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 @@ -8,31 +8,31 @@ 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.OnClearDisplayEventFingerprint +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 import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction22c @Patch( - name = "Remember clear mode", - description = "Remembers the clear mode configurations in between videos.", + name = "Remember clear display", + description = "Remembers the clear display configurations in between videos.", compatiblePackages = [ CompatiblePackage("com.ss.android.ugc.trill", ["32.5.3"]), CompatiblePackage("com.zhiliaoapp.musically", ["32.5.3"]) ] ) @Suppress("unused") -object RememberClearModePatch : BytecodePatch( +object RememberClearDisplayPatch : BytecodePatch( setOf( - OnClearModeEventFingerprint, + OnClearDisplayEventFingerprint, 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. + OnClearDisplayEventFingerprint.result?.mutableMethod?.let { + // 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(isEnabledIndex - 1).registerA @@ -40,40 +40,40 @@ object RememberClearModePatch : BytecodePatch( it.addInstructions( isEnabledIndex, "invoke-static { v$isEnabledRegister }, " + - "Lapp/revanced/tiktok/clearmode/RememberClearModePatch;->rememberClearModeState(Z)V" + "Lapp/revanced/tiktok/cleardisplay/RememberClearDisplayPatch;->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/cleardisplay/RememberClearDisplayPatch;->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->(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->(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 // endregion - } ?: throw OnClearModeEventFingerprint.exception + } ?: throw OnClearDisplayEventFingerprint.exception } } diff --git a/src/main/kotlin/app/revanced/patches/tiktok/interaction/clearmode/fingerprints/OnClearModeEventFingerprint.kt b/src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/fingerprints/OnClearDisplayEventFingerprint.kt similarity index 52% rename from src/main/kotlin/app/revanced/patches/tiktok/interaction/clearmode/fingerprints/OnClearModeEventFingerprint.kt rename to src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/fingerprints/OnClearDisplayEventFingerprint.kt index f1ade3128..9d48cc33f 100644 --- a/src/main/kotlin/app/revanced/patches/tiktok/interaction/clearmode/fingerprints/OnClearModeEventFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/fingerprints/OnClearDisplayEventFingerprint.kt @@ -1,9 +1,10 @@ -package app.revanced.patches.tiktok.interaction.clearmode.fingerprints +package app.revanced.patches.tiktok.interaction.cleardisplay.fingerprints import app.revanced.patcher.fingerprint.MethodFingerprint -internal object OnClearModeEventFingerprint : MethodFingerprint( +internal object OnClearDisplayEventFingerprint : MethodFingerprint( customFingerprint = { methodDef, _ -> + // Internally the feature is called "Clear mode". methodDef.definingClass.endsWith("/ClearModePanelComponent;") && methodDef.name == "onClearModeEvent" } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/tiktok/interaction/clearmode/fingerprints/OnRenderFirstFrameFingerprint.kt b/src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/fingerprints/OnRenderFirstFrameFingerprint.kt similarity index 79% rename from src/main/kotlin/app/revanced/patches/tiktok/interaction/clearmode/fingerprints/OnRenderFirstFrameFingerprint.kt rename to src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/fingerprints/OnRenderFirstFrameFingerprint.kt index e23922915..d9e5a15ed 100644 --- a/src/main/kotlin/app/revanced/patches/tiktok/interaction/clearmode/fingerprints/OnRenderFirstFrameFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/fingerprints/OnRenderFirstFrameFingerprint.kt @@ -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