From 3ee39fc3006f818695c228e7b00d6e1f1be91c9b Mon Sep 17 00:00:00 2001 From: hd Date: Thu, 5 Dec 2024 21:35:01 +0800 Subject: [PATCH] fix: RepeaterPlus on TIM_NT Closes #1258 --- .../java/cc/hicore/hook/RepeaterPlus.java | 17 ++++++++-------- .../cc/hicore/message/chat/SessionUtils.java | 20 +++++++++---------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/cc/hicore/hook/RepeaterPlus.java b/app/src/main/java/cc/hicore/hook/RepeaterPlus.java index 42bcf02327..a3d7f18bd2 100644 --- a/app/src/main/java/cc/hicore/hook/RepeaterPlus.java +++ b/app/src/main/java/cc/hicore/hook/RepeaterPlus.java @@ -23,6 +23,7 @@ import static cc.ioctl.util.HostInfo.requireMinQQVersion; +import static cc.ioctl.util.HostInfo.requireMinTimVersion; import static cc.ioctl.util.Reflex.getFirstNSFByType; import static io.github.qauxv.util.Initiator._SessionInfo; import static io.github.qauxv.util.Initiator.load; @@ -45,17 +46,13 @@ import cc.hicore.message.chat.SessionHooker; import cc.hicore.message.chat.SessionUtils; import cc.ioctl.util.HookUtils; -import cc.ioctl.util.HostInfo; import cc.ioctl.util.Reflex; import com.tencent.qqnt.kernel.nativeinterface.MsgAttributeInfo; import com.tencent.qqnt.kernel.nativeinterface.MsgRecord; import com.xiaoniu.dispatcher.OnMenuBuilder; import com.xiaoniu.util.ContextUtils; -import io.github.qauxv.base.IEntityAgent; -import io.github.qauxv.util.xpcompat.XC_MethodHook; -import io.github.qauxv.util.xpcompat.XposedBridge; -import io.github.qauxv.util.xpcompat.XposedHelpers; import io.github.qauxv.R; +import io.github.qauxv.base.IEntityAgent; import io.github.qauxv.base.ISwitchCellAgent; import io.github.qauxv.base.IUiItemAgent; import io.github.qauxv.base.annotation.FunctionHookEntry; @@ -71,11 +68,15 @@ import io.github.qauxv.util.Initiator; import io.github.qauxv.util.Log; import io.github.qauxv.util.QQVersion; +import io.github.qauxv.util.TIMVersion; import io.github.qauxv.util.Toasts; import io.github.qauxv.util.dexkit.AbstractQQCustomMenuItem; import io.github.qauxv.util.dexkit.DexKit; import io.github.qauxv.util.dexkit.DexKitTarget; import io.github.qauxv.util.dexkit.VasAttrBuilder; +import io.github.qauxv.util.xpcompat.XC_MethodHook; +import io.github.qauxv.util.xpcompat.XposedBridge; +import io.github.qauxv.util.xpcompat.XposedHelpers; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; @@ -178,7 +179,7 @@ public String[] getUiItemLocation() { @Override @SuppressLint({"WrongConstant", "ResourceType"}) public boolean initOnce() throws Exception { - if (requireMinQQVersion(QQVersion.QQ_8_9_63_BETA_11345)) { + if (requireMinQQVersion(QQVersion.QQ_8_9_63_BETA_11345) || requireMinTimVersion(TIMVersion.TIM_4_0_95)) { if (!RepeaterPlusIconSettingDialog.getIsShowInMenu()) { XC_MethodHook callback = new XC_MethodHook() { private ImageView img; @@ -316,7 +317,7 @@ protected void afterHookedMethod(MethodHookParam param) { @Override public boolean isAvailable() { - return requireMinQQVersion(QQVersion.QQ_8_6_0); + return requireMinQQVersion(QQVersion.QQ_8_6_0) || requireMinTimVersion(TIMVersion.TIM_4_0_95); } private static Object AIOParam; @@ -357,7 +358,7 @@ private void repeatByForwardNt(Object msg) { }); } else { long msgUniqueId; - if (requireMinQQVersion(QQVersion.QQ_9_0_30)) { + if (requireMinQQVersion(QQVersion.QQ_9_0_30) || requireMinTimVersion(TIMVersion.TIM_4_0_95)) { msgUniqueId = service.generateMsgUniqueId(contact.getChatType(), QAppUtils.getServiceTime()); } else { msgUniqueId = service.getMsgUniqueId(QAppUtils.getServiceTime()); diff --git a/app/src/main/java/cc/hicore/message/chat/SessionUtils.java b/app/src/main/java/cc/hicore/message/chat/SessionUtils.java index e5417ff68c..d1d9769869 100644 --- a/app/src/main/java/cc/hicore/message/chat/SessionUtils.java +++ b/app/src/main/java/cc/hicore/message/chat/SessionUtils.java @@ -21,16 +21,14 @@ package cc.hicore.message.chat; -import android.text.TextUtils; -import cc.hicore.QApp.QAppUtils; -import cc.hicore.ReflectUtil.MField; +import static cc.ioctl.util.HostInfo.requireMinTimVersion; + import cc.hicore.ReflectUtil.XField; import cc.hicore.Utils.XLog; import io.github.qauxv.bridge.kernelcompat.ContactCompat; -import io.github.qauxv.bridge.SessionInfoImpl; import io.github.qauxv.util.Initiator; +import io.github.qauxv.util.TIMVersion; import java.io.Serializable; -import java.lang.reflect.Field; public class SessionUtils { @@ -59,12 +57,14 @@ public static Serializable AIOParam2ContactRaw(Object AIOParam) { } public static String getCurrentPeerIDByAIOContact(Object AIOContact) throws Exception { - return XField.obj(AIOContact).name("f").type(String.class).get(); + return XField.obj(AIOContact).name(requireMinTimVersion(TIMVersion.TIM_4_0_95) ? "e" : "f").type(String.class).get(); } - public static int getCurrentChatTypeByAIOContact(Object AIOContact) throws Exception{ - return XField.obj(AIOContact).name("e").type(int.class).get(); + + public static int getCurrentChatTypeByAIOContact(Object AIOContact) throws Exception { + return XField.obj(AIOContact).name(requireMinTimVersion(TIMVersion.TIM_4_0_95) ? "d" : "e").type(int.class).get(); } - public static String getCurrentGuildIDByAIOContact(Object AIOContact) throws Exception{ - return XField.obj(AIOContact).name("g").type(String.class).get(); + + public static String getCurrentGuildIDByAIOContact(Object AIOContact) throws Exception { + return XField.obj(AIOContact).name(requireMinTimVersion(TIMVersion.TIM_4_0_95) ? "f" : "g").type(String.class).get(); } }