commit 07d1760a73468a4c6b4958a4b2d57932f4bd8ead
parent 55a1d037b3c84a26e62c395657495daeed2d2880
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Fri, 19 Jan 2024 22:43:13 +0100

fix(core): call start confirmation

Diffstat:
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/CallStartConfirmation.kt | 12+++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/CallStartConfirmation.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/messaging/CallStartConfirmation.kt @@ -3,9 +3,11 @@ package me.rhunk.snapenhance.core.features.impl.messaging import android.annotation.SuppressLint import android.view.MotionEvent import android.view.View +import android.view.ViewGroup import me.rhunk.snapenhance.core.features.Feature import me.rhunk.snapenhance.core.features.FeatureLoadParams import me.rhunk.snapenhance.core.ui.ViewAppearanceHelper +import me.rhunk.snapenhance.core.ui.children import me.rhunk.snapenhance.core.util.hook.HookAdapter import me.rhunk.snapenhance.core.util.hook.HookStage import me.rhunk.snapenhance.core.util.hook.hook @@ -27,8 +29,16 @@ class CallStartConfirmation : Feature("CallStartConfirmation", loadParams = Feat override fun onActivityCreate() { if (!context.config.messaging.callStartConfirmation.get()) return + val callButtonsStub = context.resources.getId("call_buttons_stub") + findClass("com.snap.composer.views.ComposerRootView").hook("dispatchTouchEvent", HookStage.BEFORE) { param -> - if (param.thisObject<Any>()::class.java.name != "com.snap.talk.CallButtonsView") return@hook + val view = param.thisObject() as? ViewGroup ?: return@hook + if (view.id != callButtonsStub) return@hook + val childComposerView = view.getChildAt(0) as? ViewGroup ?: return@hook + // check if the child composer view contains 2 call buttons + if (childComposerView.children().count { + it::class.java == childComposerView::class.java + } != 2) return@hook hookTouchEvent(param, param.arg(0)) { param.invokeOriginal() }