mirror of
https://github.com/whitechi73/OpenShamrock.git
synced 2024-08-14 13:12:17 +08:00
Shamrock
: fix get role by nt crash
This commit is contained in:
parent
36f8b6e54b
commit
63ce2d40bd
@ -97,6 +97,8 @@ import java.nio.ByteBuffer
|
||||
import kotlin.coroutines.resume
|
||||
|
||||
internal object GroupSvc: BaseSvc() {
|
||||
private const val GET_MEMBER_ROLE_BY_NT = false
|
||||
|
||||
private val RefreshTroopMemberInfoLock by lazy {
|
||||
Mutex()
|
||||
}
|
||||
@ -396,6 +398,13 @@ internal object GroupSvc: BaseSvc() {
|
||||
}
|
||||
|
||||
suspend fun getMemberRole(groupId: Long, memberUin: Long): MemberRole {
|
||||
if (!GET_MEMBER_ROLE_BY_NT) {
|
||||
return when (memberUin) {
|
||||
getOwner(groupId.toString()) -> MemberRole.Owner
|
||||
in getAdminList(groupId.toString()) -> MemberRole.Admin
|
||||
else -> MemberRole.Member
|
||||
}
|
||||
}
|
||||
return when(getTroopMemberInfoByUinViaNt(groupId.toString(), memberUin, 3000).getOrNull()?.role) {
|
||||
com.tencent.qqnt.kernel.nativeinterface.MemberRole.STRANGER -> MemberRole.Stranger
|
||||
com.tencent.qqnt.kernel.nativeinterface.MemberRole.MEMBER -> MemberRole.Member
|
||||
@ -641,6 +650,7 @@ internal object GroupSvc: BaseSvc() {
|
||||
qq: Long,
|
||||
timeout: Long = 5000L
|
||||
): Result<MemberInfo> {
|
||||
return runCatching {
|
||||
val kernelService = NTServiceFetcher.kernelService
|
||||
val sessionService = kernelService.wrapperSession
|
||||
val groupService = sessionService.groupService
|
||||
@ -667,6 +677,7 @@ internal object GroupSvc: BaseSvc() {
|
||||
Result.failure(Exception("获取群成员信息失败"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun getTroopMemberInfoByUid(groupId: Long, uid: String): Result<MemberInfo> {
|
||||
val kernelService = NTServiceFetcher.kernelService
|
||||
|
@ -138,6 +138,7 @@ internal class XposedEntry: IXposedHookLoadPackage {
|
||||
MMKVFetcher.initMMKV(ctx)
|
||||
}
|
||||
|
||||
runCatching {
|
||||
if (ShamrockConfig.forbidUselessProcess()) {
|
||||
if(uselessProcess.any {
|
||||
processName.contains(it, ignoreCase = true)
|
||||
@ -149,6 +150,7 @@ internal class XposedEntry: IXposedHookLoadPackage {
|
||||
} else {
|
||||
log("[Shamrock] Useless process detection is disabled.")
|
||||
}
|
||||
}
|
||||
|
||||
log("Process Name = $processName")
|
||||
|
||||
|
@ -2,24 +2,17 @@ package moe.fuqiuluo.shamrock.xposed.helper
|
||||
|
||||
import com.tencent.qqnt.kernel.api.IKernelService
|
||||
import com.tencent.qqnt.kernel.api.impl.MsgService
|
||||
import com.tencent.qqnt.kernel.nativeinterface.IKernelGroupService
|
||||
import com.tencent.qqnt.kernel.nativeinterface.IKernelGuildService
|
||||
import com.tencent.qqnt.kernel.nativeinterface.IOperateCallback
|
||||
import com.tencent.qqnt.kernel.nativeinterface.IQQNTWrapperSession
|
||||
import de.robv.android.xposed.XC_MethodHook
|
||||
import de.robv.android.xposed.XposedBridge
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
import moe.fuqiuluo.shamrock.helper.Level
|
||||
import moe.fuqiuluo.shamrock.helper.LogCenter
|
||||
import moe.fuqiuluo.shamrock.remote.service.PacketReceiver
|
||||
import moe.fuqiuluo.shamrock.remote.service.listener.AioListener
|
||||
import moe.fuqiuluo.shamrock.remote.service.listener.GroupEventListener
|
||||
import moe.fuqiuluo.shamrock.remote.service.listener.KernelGuildListener
|
||||
import moe.fuqiuluo.shamrock.remote.service.listener.PrimitiveListener
|
||||
import moe.fuqiuluo.shamrock.tools.hookMethod
|
||||
import moe.fuqiuluo.shamrock.utils.PlatformUtils
|
||||
import kotlin.reflect.jvm.javaMethod
|
||||
|
||||
internal object NTServiceFetcher {
|
||||
private lateinit var iKernelService: IKernelService
|
||||
@ -30,7 +23,7 @@ internal object NTServiceFetcher {
|
||||
lock.withLock {
|
||||
val msgService = service.msgService ?: return
|
||||
val sessionService = service.wrapperSession ?: return
|
||||
val groupService = sessionService.groupService ?: return
|
||||
//val groupService = sessionService.groupService ?: return
|
||||
|
||||
val curHash = service.hashCode() + msgService.hashCode()
|
||||
if (isInitForNt(curHash)) return
|
||||
@ -43,7 +36,7 @@ internal object NTServiceFetcher {
|
||||
this.iKernelService = service
|
||||
|
||||
|
||||
initNTKernelListener(msgService, groupService)
|
||||
initNTKernelListener(msgService)
|
||||
antiBackgroundMode(sessionService)
|
||||
//hookGuildListener(sessionService)
|
||||
}
|
||||
@ -66,7 +59,7 @@ internal object NTServiceFetcher {
|
||||
return hash == curKernelHash
|
||||
}
|
||||
|
||||
private fun initNTKernelListener(msgService: MsgService, groupService: IKernelGroupService) {
|
||||
private fun initNTKernelListener(msgService: MsgService) {
|
||||
if (!PlatformUtils.isMainProcess()) return
|
||||
|
||||
try {
|
||||
|
Loading…
x
Reference in New Issue
Block a user