From ba72136e71d98bf2d0eaab4469b3b6900378b329 Mon Sep 17 00:00:00 2001 From: hd <1839732296@qq.com> Date: Sat, 20 Jul 2024 22:39:07 +0800 Subject: [PATCH] fix: GuildOldStyle on QQ9.0.15~9.0.73 --- .../io/github/memory2314/hook/GuildOldStyle.kt | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/io/github/memory2314/hook/GuildOldStyle.kt b/app/src/main/java/io/github/memory2314/hook/GuildOldStyle.kt index 27c0aefcc2..0034519ef9 100644 --- a/app/src/main/java/io/github/memory2314/hook/GuildOldStyle.kt +++ b/app/src/main/java/io/github/memory2314/hook/GuildOldStyle.kt @@ -22,25 +22,35 @@ package io.github.memory2314.hook +import cc.ioctl.util.hookBeforeIfEnabled import io.github.qauxv.base.annotation.FunctionHookEntry import io.github.qauxv.base.annotation.UiItemAgentEntry import io.github.qauxv.dsl.FunctionEntryRouter import io.github.qauxv.hook.CommonSwitchFunctionHook import io.github.qauxv.util.QQVersion +import io.github.qauxv.util.hostInfo import io.github.qauxv.util.requireMinQQVersion +import xyz.nextalone.util.invoke import xyz.nextalone.util.method -import xyz.nextalone.util.replace import xyz.nextalone.util.throwOrTrue @FunctionHookEntry @UiItemAgentEntry object GuildOldStyle : CommonSwitchFunctionHook() { override val name = "频道旧版样式" - override val description = "当前仅适配QQ9.0.0" + override val description = "仅支持QQ9.0.15~9.0.73版本" override val uiItemLocation = FunctionEntryRouter.Locations.Auxiliary.GUILD_CATEGORY - override val isAvailable = requireMinQQVersion(QQVersion.QQ_9_0_0) + override val isAvailable = hostInfo.versionCode in QQVersion.QQ_9_0_15..QQVersion.QQ_9_0_73 override fun initOnce() = throwOrTrue { - "Lcom/tencent/mobileqq/guild/discover/GuildDiscoverABTestHelper;->w()I".method.replace(this, 1) + if (requireMinQQVersion(QQVersion.QQ_9_0_30)) { // 9.0.30~9.0.73(之后的版本获取布局方法不存在) + hookBeforeIfEnabled("Lcom/tencent/mobileqq/guild/mainframe/GuildFragmentDelegateFrame;->getCurrentMainFragment()Lcom/tencent/mobileqq/guild/mainframe/AbsGuildMainFragment;".method) { + it.result = it.thisObject.invoke("getMainFrameFragment") + } + } else { // (第一个新版频道)9.0.15~9.0.25 + hookBeforeIfEnabled("Lcom/tencent/mobileqq/guild/mainframe/GuildFragmentDelegateFrame;->s()Lcom/tencent/mobileqq/guild/mainframe/AbsGuildMainFragment;".method) { + it.result = it.thisObject.invoke("u") + } + } } } \ No newline at end of file