From e0df34079aa79800b3bbdff6084952891a40ff19 Mon Sep 17 00:00:00 2001 From: Keeperorowner Date: Sun, 8 Dec 2024 17:15:57 +0800 Subject: [PATCH] Add files via upload --- .../re_telegram/features/NEWAntiRecall.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/main/java/nep/timeline/re_telegram/features/NEWAntiRecall.java b/app/src/main/java/nep/timeline/re_telegram/features/NEWAntiRecall.java index b380898..eeb7e6b 100644 --- a/app/src/main/java/nep/timeline/re_telegram/features/NEWAntiRecall.java +++ b/app/src/main/java/nep/timeline/re_telegram/features/NEWAntiRecall.java @@ -326,6 +326,11 @@ public static void initProcessing(ClassLoader classLoader) { XposedHelpers.findAndHookMethod(messagesStorage, AutomationResolver.resolve("MessagesStorage", "markMessagesAsDeletedInternal", AutomationResolver.ResolverType.Method), long.class, ArrayList.class, boolean.class, int.class, int.class, new AbstractMethodHook() { @Override protected void beforeMethod(MethodHookParam param) { + + long currentUserId = UserConfig.getCurrentUser().getId(); // 获取当前登录用户ID + long deletingUserId = (long) param.args[3]; // 删除消息的用户ID + boolean isCurrentUserDeleting = (deletingUserId == currentUserId); + if (Configs.isAntiRecall()) { ArrayList deletedMessages = new ArrayList<>(); @@ -339,6 +344,7 @@ protected void beforeMethod(MethodHookParam param) { channel_id = 0; for (Integer msgId : original) { + if (isCurrentUserDeleting) { deletedMessages.add(msgId); } else { DeletedMessageInfo shouldDeletedMessage = isShouldDeletedMessage(channel_id, msgId); DeletedMessageInfo shouldDeletedMessage2 = isShouldDeletedMessage2(channel_id, msgId); if (shouldDeletedMessage2 != null || isDeletedMessage(channel_id, msgId) == null) { @@ -349,6 +355,7 @@ protected void beforeMethod(MethodHookParam param) { shouldDeletedMessageInfo2.remove(shouldDeletedMessage2); } } + } ArrayList fork = new ArrayList<>(original); fork.removeAll(deletedMessages); @@ -368,6 +375,11 @@ protected void beforeMethod(MethodHookParam param) { XposedHelpers.findAndHookMethod(messagesStorage, AutomationResolver.resolve("MessagesStorage", "updateDialogsWithDeletedMessagesInternal", AutomationResolver.ResolverType.Method), long.class, long.class, ArrayList.class, ArrayList.class, new AbstractMethodHook() { @Override protected void beforeMethod(MethodHookParam param) { + + long currentUserId = UserConfig.getCurrentUser().getId(); // 获取当前登录用户ID + long deletingUserId = (long) param.args[3]; // 删除消息的用户ID + boolean isCurrentUserDeleting = (deletingUserId == currentUserId); + if (Configs.isAntiRecall()) { long channelID = -((long) param.args[1]); if (channelID > 0) @@ -385,6 +397,7 @@ protected void beforeMethod(MethodHookParam param) { return; for (Integer msgId : original) { + if (isCurrentUserDeleting) { deletedMessages.add(msgId); } else { if (isShouldDeletedMessage(channelID, msgId) == null) if (isDeletedMessage(channelID, msgId) != null) addShouldDeletedMessage(channelID, msgId); @@ -398,6 +411,7 @@ else if (isShouldDeletedMessage2(channelID, msgId) == null) else deletedMessages.add(msgId); } + } ArrayList fork = new ArrayList<>(original); fork.removeAll(deletedMessages);