1212
1313import androidx .annotation .NonNull ;
1414
15+ import com .wmods .wppenhacer .listeners .OnMultiClickListener ;
1516import com .wmods .wppenhacer .xposed .core .Feature ;
1617import com .wmods .wppenhacer .xposed .core .WppCore ;
1718import com .wmods .wppenhacer .xposed .core .devkit .Unobfuscator ;
1819import com .wmods .wppenhacer .xposed .utils .AnimationUtil ;
19- import com .wmods .wppenhacer .xposed .utils .DebugUtils ;
2020import com .wmods .wppenhacer .xposed .utils .ReflectionUtils ;
2121import com .wmods .wppenhacer .xposed .utils .ResId ;
2222import com .wmods .wppenhacer .xposed .utils .Utils ;
2323
2424import org .json .JSONObject ;
2525
26- import java .lang .reflect .Method ;
2726import java .util .ArrayList ;
2827import java .util .HashMap ;
2928import java .util .Objects ;
@@ -185,11 +184,6 @@ private void callInfo() throws Exception {
185184 return ;
186185
187186 var clsCallEventCallback = classLoader .loadClass ("com.whatsapp.calling.service.VoiceServiceEventCallback" );
188- for (Method method : clsCallEventCallback .getDeclaredMethods ()) {
189- XposedBridge .hookMethod (method , DebugUtils .getDebugMethodHook (false , false , true , true ));
190- }
191-
192-
193187 Class <?> clsWamCall = classLoader .loadClass ("com.whatsapp.fieldstats.events.WamCall" );
194188
195189 XposedBridge .hookAllMethods (clsCallEventCallback , "fieldstatsReady" ,
@@ -250,6 +244,7 @@ private void alwaysOnline() throws Exception {
250244 XposedBridge .hookMethod (stateChange , XC_MethodReplacement .DO_NOTHING );
251245 }
252246
247+
253248 private void doubleTapReaction () throws Exception {
254249
255250 if (!prefs .getBoolean ("doubletap2like" , false )) return ;
@@ -260,22 +255,21 @@ private void doubleTapReaction() throws Exception {
260255 logDebug (Unobfuscator .getMethodDescriptor (bubbleMethod ));
261256
262257 XposedBridge .hookMethod (bubbleMethod , new XC_MethodHook () {
263- @ SuppressLint ( "ClickableViewAccessibility" )
258+
264259 @ Override
265260 protected void beforeHookedMethod (MethodHookParam param ) throws Throwable {
266261 var viewGroup = (View ) param .thisObject ;
267262 if (viewGroup == null ) return ;
268263
269- var gestureDetector = new Object ( ) {
270-
271- public void doubleClick (View view , Object objMessage ) {
264+ var onMultiClickListener = new OnMultiClickListener ( 2 , 500 ) {
265+ @ Override
266+ public void onMultiClick (View view ) {
272267 var reactionView = (ViewGroup ) view .findViewById (Utils .getID ("reactions_bubble_layout" , "id" ));
273268 if (reactionView != null && reactionView .getVisibility () == View .VISIBLE ) {
274269 for (int i = 0 ; i < reactionView .getChildCount (); i ++) {
275270 if (reactionView .getChildAt (i ) instanceof TextView textView ) {
276271 if (textView .getText ().toString ().contains (emoji )) {
277- WppCore .sendReaction ("" , objMessage );
278- Utils .showToast (emoji , 1 );
272+ WppCore .sendReaction ("" , param .args [2 ]);
279273 return ;
280274 }
281275 }
@@ -284,26 +278,7 @@ public void doubleClick(View view, Object objMessage) {
284278 WppCore .sendReaction (emoji , param .args [2 ]);
285279 }
286280 };
287-
288- var auxClick = new Object () {
289- long lastClick = 0 ;
290- long clicks = 0 ;
291- };
292-
293- viewGroup .setOnClickListener (v -> {
294- if (auxClick .lastClick == 0 || System .currentTimeMillis () - auxClick .lastClick < 1000 ) {
295- auxClick .lastClick = System .currentTimeMillis ();
296- auxClick .clicks ++;
297- } else {
298- auxClick .lastClick = 0 ;
299- auxClick .clicks = 0 ;
300- }
301- if (auxClick .clicks > 1 ) {
302- auxClick .clicks = 0 ;
303- auxClick .lastClick = 0 ;
304- gestureDetector .doubleClick (v , param .args [2 ]);
305- }
306- });
281+ viewGroup .setOnClickListener (onMultiClickListener );
307282 }
308283 });
309284 }
0 commit comments