diff --git a/src/ntqqapi/api/friend.ts b/src/ntqqapi/api/friend.ts index 2c84522..21b6eb0 100644 --- a/src/ntqqapi/api/friend.ts +++ b/src/ntqqapi/api/friend.ts @@ -4,7 +4,6 @@ import { invoke, NTMethod, NTClass } from '../ntcall' import { getSession } from '@/ntqqapi/wrapper' import { BuddyListReqType, NodeIKernelProfileService } from '../services' import { NTEventDispatch } from '@/common/utils/eventTask' -import { LimitedHashTable } from '@/common/utils/table' import { pick } from 'cosmokit' import { Service, Context } from 'cordis' @@ -101,8 +100,9 @@ export class NTQQFriendApi extends Service { } } - async getBuddyIdMap(refresh = false): Promise> { - const retMap: LimitedHashTable = new LimitedHashTable(5000) + /** uid => uin */ + async getBuddyIdMap(refresh = false): Promise> { + const retMap: Map = new Map() const session = getSession() if (session) { const uids: string[] = [] @@ -112,9 +112,12 @@ export class NTQQFriendApi extends Service { const data = await NTEventDispatch.CallNoListenerEvent( 'NodeIKernelProfileService/getCoreAndBaseInfo', 5000, 'nodeStore', uids ) - data.forEach((value, key) => { - retMap.set(value.uin!, value.uid!) - }) + for (const [, item] of data) { + if (retMap.size > 5000) { + break + } + retMap.set(item.uid!, item.uin!) + } } else { const data = await invoke<{ buddyCategory: CategoryFriend[] @@ -129,7 +132,10 @@ export class NTQQFriendApi extends Service { } ) for (const item of Object.values(data.userSimpleInfos)) { - retMap.set(item.uin!, item.uid!) + if (retMap.size > 5000) { + break + } + retMap.set(item.uid!, item.uin!) } } return retMap diff --git a/src/ntqqapi/api/user.ts b/src/ntqqapi/api/user.ts index 00fe4dd..1f15688 100644 --- a/src/ntqqapi/api/user.ts +++ b/src/ntqqapi/api/user.ts @@ -210,11 +210,11 @@ export class NTQQUserApi extends Service { uid = (await session.getUixConvertService().getUid([uin])).uidInfo.get(uin) if (uid) return uid } else { - let uid = (await invoke('nodeIKernelGroupService/getUidByUins', [{ uin: [uin] }, null])).uids.get(uin) + let uid = (await invoke('nodeIKernelGroupService/getUidByUins', [{ uin: [uin] }])).uids.get(uin) if (uid) return uid - uid = (await invoke('nodeIKernelProfileService/getUidByUin', [{ callFrom: 'FriendsServiceImpl', uin: [uin] }, null])).get(uin) + uid = (await invoke('nodeIKernelProfileService/getUidByUin', [{ callFrom: 'FriendsServiceImpl', uin: [uin] }])).get(uin) if (uid) return uid - uid = (await invoke('nodeIKernelUixConvertService/getUid', [{ uins: [uin] }, null])).uidInfo.get(uin) + uid = (await invoke('nodeIKernelUixConvertService/getUid', [{ uins: [uin] }])).uidInfo.get(uin) if (uid) return uid } const unveifyUid = (await this.getUserDetailInfoByUinV2(uin)).detail.uid //从QQ Native 特殊转换 @@ -280,14 +280,14 @@ export class NTQQUserApi extends Service { uin = (await session.getUixConvertService().getUin([uid])).uinInfo.get(uid) if (uin) return uin } else { - let uin = (await invoke('nodeIKernelGroupService/getUinByUids', [{ uid: [uid] }, null])).uins.get(uid) + let uin = (await invoke('nodeIKernelGroupService/getUinByUids', [{ uid: [uid] }])).uins.get(uid) if (uin) return uin - uin = (await invoke('nodeIKernelProfileService/getUinByUid', [{ callFrom: 'FriendsServiceImpl', uid: [uid] }, null])).get(uid) + uin = (await invoke('nodeIKernelProfileService/getUinByUid', [{ callFrom: 'FriendsServiceImpl', uid: [uid] }])).get(uid) if (uin) return uin - uin = (await invoke('nodeIKernelUixConvertService/getUin', [{ uids: [uid] }, null])).uinInfo.get(uid) + uin = (await invoke('nodeIKernelUixConvertService/getUin', [{ uids: [uid] }])).uinInfo.get(uid) if (uin) return uin } - let uin = (await this.ctx.ntFriendApi.getBuddyIdMap(true)).getKey(uid) + let uin = (await this.ctx.ntFriendApi.getBuddyIdMap(true)).get(uid) if (uin) return uin uin = (await this.getUserDetailInfo(uid)).uin //从QQ Native 转换 return uin