Skip to content

Commit

Permalink
fix: ChatInputHint for QQNT
Browse files Browse the repository at this point in the history
  • Loading branch information
klxiaoniu committed Jul 20, 2023
1 parent 3bb2300 commit 05bc8ca
Showing 1 changed file with 22 additions and 10 deletions.
32 changes: 22 additions & 10 deletions app/src/main/java/xyz/nextalone/hook/ChatInputHint.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import android.widget.EditText
import android.widget.LinearLayout
import android.widget.Toast
import cc.ioctl.util.LayoutHelper
import com.github.kyuubiran.ezxhelper.utils.hookAfter
import io.github.qauxv.base.IUiItemAgent
import io.github.qauxv.base.annotation.FunctionHookEntry
import io.github.qauxv.base.annotation.UiItemAgentEntry
Expand All @@ -40,12 +41,15 @@ import io.github.qauxv.dsl.FunctionEntryRouter
import io.github.qauxv.hook.CommonConfigFunctionHook
import io.github.qauxv.ui.CommonContextWrapper
import io.github.qauxv.util.Initiator
import io.github.qauxv.util.QQVersion
import io.github.qauxv.util.Toasts
import io.github.qauxv.util.dexkit.DexKit
import io.github.qauxv.util.dexkit.NBaseChatPie_init
import io.github.qauxv.util.requireMinQQVersion
import kotlinx.coroutines.flow.MutableStateFlow
import xyz.nextalone.util.findHostView
import xyz.nextalone.util.hookAfter
import xyz.nextalone.util.method
import xyz.nextalone.util.putDefault
import xyz.nextalone.util.throwOrTrue

Expand All @@ -59,18 +63,26 @@ object ChatInputHint : CommonConfigFunctionHook("na_chat_input_hint", arrayOf(NB
private const val strCfg = "na_chat_input_hint_str"

override fun initOnce(): Boolean = throwOrTrue {
DexKit.requireMethodFromCache(NBaseChatPie_init).hookAfter(this) {
val chatPie: Any = it.thisObject
var aioRootView: ViewGroup? = null
for (m in Initiator._BaseChatPie().declaredMethods) {
if (m.returnType == ViewGroup::class.java
&& m.parameterTypes.isEmpty()
) {
aioRootView = m.invoke(chatPie) as ViewGroup
break
if (requireMinQQVersion(QQVersion.QQ_8_9_63)) {
"Lcom/tencent/mobileqq/aio/input/b/c;->l()V".method.hookAfter { param ->
val f = param.thisObject.javaClass.getDeclaredField("f").apply { isAccessible = true }.get(param.thisObject)
val b = f.javaClass.getDeclaredField("b").apply { isAccessible = true }.get(f) as EditText
b.hint = getDefaultConfig().getStringOrDefault(strCfg, "Typing words...")
}
} else {
DexKit.requireMethodFromCache(NBaseChatPie_init).hookAfter(this) {
val chatPie: Any = it.thisObject
var aioRootView: ViewGroup? = null
for (m in Initiator._BaseChatPie().declaredMethods) {
if (m.returnType == ViewGroup::class.java
&& m.parameterTypes.isEmpty()
) {
aioRootView = m.invoke(chatPie) as ViewGroup
break
}
}
aioRootView?.findHostView<EditText>("input")?.hint = getDefaultConfig().getStringOrDefault(strCfg, "Typing words...")
}
aioRootView?.findHostView<EditText>("input")?.hint = getDefaultConfig().getStringOrDefault(strCfg, "Typing words...")
}
}

Expand Down

0 comments on commit 05bc8ca

Please sign in to comment.