@@ -317,6 +317,7 @@ public synchronized static Method loadHideViewSendReadJob(ClassLoader classLoade
317
317
public synchronized static Method loadHideViewInChatMethod (ClassLoader classLoader ) throws Exception {
318
318
return UnobfuscatorCache .getInstance ().getMethod (classLoader , () -> {
319
319
Method method = findFirstMethodUsingStrings (classLoader , StringMatchType .Contains , "ReadReceipts/acknowledgeMessageIfNeeded" );
320
+ if (method == null ) method = findFirstMethodUsingStrings (classLoader , StringMatchType .Contains , "ReadReceipts/sendDeliveryReceiptIfNotRetry" );
320
321
if (method == null ) throw new Exception ("HideViewInChat method not found" );
321
322
return method ;
322
323
});
@@ -1229,6 +1230,8 @@ public synchronized static Method loadOnUpdateStatusChanged(ClassLoader loader)
1229
1230
var clazzData = dexkit .getClassData (clazz );
1230
1231
var methodSeduleche = XposedHelpers .findMethodBestMatch (Timer .class , "schedule" , TimerTask .class , long .class , long .class );
1231
1232
var result = dexkit .findMethod (new FindMethod ().searchInClass (List .of (clazzData )).matcher (new MethodMatcher ().addInvoke (DexSignUtil .getMethodDescriptor (methodSeduleche ))));
1233
+ if (result .isEmpty ())
1234
+ result = dexkit .findMethod (new FindMethod ().searchInClass (List .of (clazzData )).matcher (new MethodMatcher ().addUsingString ("UpdatesViewModel/Scheduled updates list refresh" )));
1232
1235
if (result .isEmpty ())
1233
1236
throw new RuntimeException ("OnUpdateStatusChanged method not found" );
1234
1237
return result .get (0 ).getMethodInstance (loader );
@@ -1395,7 +1398,8 @@ public synchronized static Constructor loadStartPrefsConfig(ClassLoader loader)
1395
1398
}
1396
1399
1397
1400
public synchronized static Method loadCheckOnlineMethod (ClassLoader loader ) throws Exception {
1398
- var method = findFirstMethodUsingStrings (loader , StringMatchType .Contains , "app/xmpp/recv/handle_available" );
1401
+ var method = findFirstMethodUsingStrings (loader , StringMatchType .Contains , "MessageHandler/handleConnectionThreadReady connectionready" );
1402
+ if (method == null ) method = findFirstMethodUsingStrings (loader , StringMatchType .Contains , "app/xmpp/recv/handle_available" );
1399
1403
if (method == null ) throw new RuntimeException ("CheckOnline method not found" );
1400
1404
return method ;
1401
1405
}
@@ -1906,6 +1910,14 @@ public static Class<?> loadFilterItemClass(ClassLoader classLoader) throws Excep
1906
1910
MethodMatcher .create ().addUsingNumber (Utils .getID ("invisible_height_placeholder" , "id" ))
1907
1911
.addUsingNumber (Utils .getID ("container_view" , "id" ))
1908
1912
));
1913
+ if (methodList .isEmpty ()) {
1914
+ var applyClazz = findFirstClassUsingStrings (classLoader , StringMatchType .Contains , "has_seen_detected_outcomes_nux" );
1915
+ if (applyClazz != null ) {
1916
+ methodList = dexkit .findMethod (FindMethod .create ().matcher (
1917
+ MethodMatcher .create ().paramTypes (View .class , applyClazz )
1918
+ ));
1919
+ }
1920
+ }
1909
1921
if (methodList .isEmpty ()) throw new RuntimeException ("FilterItemClass Not Found" );
1910
1922
return methodList .get (0 ).getClassInstance (classLoader );
1911
1923
});
0 commit comments