refactor: disable hook when got empty members and optimize some functions

This commit is contained in:
2023-10-05 05:16:15 +08:00
parent 6e57dc9ab0
commit a2056db45e

View File

@@ -98,7 +98,8 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa
initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit initiate: YukiMemberHookCreator.MemberHookCreator.() -> Unit
): YukiMemberHookCreator.MemberHookCreator.Result { ): YukiMemberHookCreator.MemberHookCreator.Result {
val creator = YukiMemberHookCreator(packageParam, HookClass.createPlaceholder()) val creator = YukiMemberHookCreator(packageParam, HookClass.createPlaceholder())
val result = creator.injectMember(priority) { if (members.isNotEmpty()) members(*members.toTypedArray()); apply(initiate) } if (members.isEmpty()) return creator.createMemberHook(priority).build()
val result = creator.injectMember(priority) { members(*members.toTypedArray()); apply(initiate) }
creator.hook() creator.hook()
return result return result
} }
@@ -181,7 +182,7 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa
*/ */
@LegacyHookApi @LegacyHookApi
inline fun injectMember(priority: YukiHookPriority = YukiHookPriority.DEFAULT, initiate: MemberHookCreator.() -> Unit) = inline fun injectMember(priority: YukiHookPriority = YukiHookPriority.DEFAULT, initiate: MemberHookCreator.() -> Unit) =
MemberHookCreator(priority).apply(initiate).apply { preHookMembers[toString()] = this }.build() createMemberHook(priority).apply(initiate).apply { preHookMembers[toString()] = this }.build()
/** /**
* 注入要 Hook 的 [Method]、[Constructor] * 注入要 Hook 的 [Method]、[Constructor]
@@ -276,6 +277,13 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa
} }
} }
/**
* 创建 [MemberHookCreator]
* @param priority Hook 优先级
* @return [MemberHookCreator]
*/
private fun createMemberHook(priority: YukiHookPriority) = MemberHookCreator(priority)
/** /**
* Hook 核心功能实现类 * Hook 核心功能实现类
* *
@@ -807,6 +815,7 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa
* @param result 回调错误 * @param result 回调错误
* @return [Result] 可继续向下监听 * @return [Result] 可继续向下监听
*/ */
@LegacyHookApi
fun onNoSuchMemberFailure(result: (Throwable) -> Unit): Result { fun onNoSuchMemberFailure(result: (Throwable) -> Unit): Result {
onNoSuchMemberFailureCallback = result onNoSuchMemberFailureCallback = result
return this return this
@@ -816,6 +825,7 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa
* 忽略 [members] 不存在发生的错误 * 忽略 [members] 不存在发生的错误
* @return [Result] 可继续向下监听 * @return [Result] 可继续向下监听
*/ */
@LegacyHookApi
fun ignoredNoSuchMemberFailure() = onNoSuchMemberFailure {} fun ignoredNoSuchMemberFailure() = onNoSuchMemberFailure {}
/** /**