Skip to content

Commit 12419da

Browse files
committed
fix bug in privacy seen and receipt
Signed-off-by: Dev4Mod <[email protected]>
1 parent 3a9e480 commit 12419da

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed

app/src/main/java/com/wmods/wppenhacer/xposed/features/privacy/HideReceipt.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,34 @@ public HideReceipt(ClassLoader loader, XSharedPreferences preferences) {
2121
public void doHook() throws Exception {
2222
var hideReceipt = prefs.getBoolean("hidereceipt", false);
2323
var ghostmode = WppCore.getPrivBoolean("ghostmode", false);
24+
var hideread = prefs.getBoolean("hideread", false);
25+
2426
var method = Unobfuscator.loadReceiptMethod(classLoader);
2527
logDebug("hook method:" + Unobfuscator.getMethodDescriptor(method));
2628
var method2 = Unobfuscator.loadReceiptOutsideChat(classLoader);
2729
logDebug("Outside Chat: " + Unobfuscator.getMethodDescriptor(method2));
28-
var method3 = Unobfuscator.loadReceiptInChat(classLoader);
29-
logDebug("In Chat: " + Unobfuscator.getMethodDescriptor(method3));
30+
var mInChat = Unobfuscator.loadReceiptInChat(classLoader);
31+
logDebug("In Chat: " + Unobfuscator.getMethodDescriptor(mInChat));
32+
3033
XposedBridge.hookMethod(method, new XC_MethodHook() {
3134
@Override
3235
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
33-
if (!ReflectionUtils.isCalledFromMethod(method2) && !ReflectionUtils.isCalledFromMethod(method3))
36+
if (!ReflectionUtils.isCalledFromMethod(method2) && !ReflectionUtils.isCalledFromMethod(mInChat))
3437
return;
38+
logDebug("HideReceipt 1:" + ReflectionUtils.isCalledFromMethod(method2));
39+
logDebug("HideReceipt 2:" + ReflectionUtils.isCalledFromMethod(mInChat));
3540
var messageKey = new FMessageWpp.Key(param.args[3]);
3641
var userJid = messageKey.remoteJid;
3742
var rawJid = WppCore.getRawString(userJid);
3843
var number = WppCore.stripJID(rawJid);
3944
var privacy = CustomPrivacy.getJSON(number);
4045
var customHideReceipt = privacy.optBoolean("HideReceipt", hideReceipt);
46+
var customHideRead = privacy.optBoolean("HideSeen", hideread);
4147
if (param.args[4] != "sender" && (customHideReceipt || ghostmode)) {
48+
if (!ReflectionUtils.isCalledFromMethod(method2) && ReflectionUtils.isCalledFromMethod(mInChat) && !customHideRead) {
49+
log("Called from In Chat");
50+
return;
51+
}
4252
param.args[4] = "inactive";
4353
}
4454
}

app/src/main/java/com/wmods/wppenhacer/xposed/features/privacy/HideSeen.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import java.lang.reflect.Array;
1212
import java.lang.reflect.Method;
13+
import java.util.Objects;
1314
import java.util.Set;
1415

1516
import de.robv.android.xposed.XC_MethodHook;
@@ -53,6 +54,7 @@ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
5354
if (jid == null) return;
5455
var number = WppCore.stripJID(jid);
5556
var privacy = CustomPrivacy.getJSON(number);
57+
5658
var customHideRead = privacy.optBoolean("HideSeen", hideread);
5759

5860
if (WppCore.isGroup(jid)) {
@@ -78,16 +80,20 @@ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
7880
Method hideViewMethod = Unobfuscator.loadHideViewMethod(classLoader);
7981
logDebug(Unobfuscator.getMethodDescriptor(hideViewMethod));
8082

83+
var method3 = Unobfuscator.loadReceiptOutsideChat(classLoader);
84+
logDebug("Outside Chat: " + Unobfuscator.getMethodDescriptor(method3));
85+
86+
8187
XposedBridge.hookMethod(hideViewMethod, new XC_MethodHook() {
8288
@Override
8389
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
84-
if (!ReflectionUtils.isCalledFromMethod(hideViewInChatMethod)) return;
85-
if (param.args[4] == null || !param.args[4].equals("read")) return;
90+
if (ReflectionUtils.isCalledFromMethod(method3) || !ReflectionUtils.isCalledFromMethod(hideViewInChatMethod))
91+
return;
92+
if (!Objects.equals("read", param.args[4])) return;
8693
var jid = WppCore.getCurrentRawJID();
8794
var number = WppCore.stripJID(jid);
8895
var privacy = CustomPrivacy.getJSON(number);
8996
var customHideRead = privacy.optBoolean("HideSeen", hideread);
90-
9197
if (WppCore.isGroup(jid)) {
9298
if (privacy.optBoolean("HideSeen", hideread_group))
9399
param.args[4] = null;

0 commit comments

Comments
 (0)