fix: Notification event not effective

This commit is contained in:
Disy 2024-02-15 22:26:53 +08:00
parent 8f48d1d4ca
commit 72b1c906f7

View File

@ -100,65 +100,90 @@ async function updateGroups(_groups: Group[], needUpdate: boolean = true) {
} }
else { else {
groups.push(group); groups.push(group);
existGroup = group;
} }
if (needUpdate) { if (needUpdate) {
const members = await NTQQApi.getGroupMembers(group.groupCode); const members = await NTQQApi.getGroupMembers(group.groupCode);
if (members) { if (members) {
group.members = members; existGroup.members = members;
} }
} }
} }
} }
async function processGroupEvent(payload) { async function processGroupEvent(payload) {
const newGroupList = payload.groupList; try {
for (const group of newGroupList) { const newGroupList = payload.groupList;
let existGroup = groups.find(g => g.groupCode == group.groupCode); for (const group of newGroupList) {
console.log(existGroup.members); let existGroup = groups.find(g => g.groupCode == group.groupCode);
if (existGroup) { if (existGroup) {
if (existGroup.memberCount > group.memberCount) { if (existGroup.memberCount > group.memberCount) {
console.log("群人数减少力!"); console.log("群人数减少力!");
const oldMembers = existGroup.members; const oldMembers = existGroup.members;
const newMembers = await NTQQApi.getGroupMembers(group.groupCode); console.log("旧群人员:");
group.members = newMembers; for (const member of oldMembers) {
const newMembersSet = new Set<string>(); // 建立索引降低时间复杂度 console.log(member.nick);
for (const member of newMembers) {
newMembersSet.add(member.uin);
}
console.log(oldMembers);
for (const member of oldMembers) {
if (!newMembersSet.has(member.uin)) {
console.log("减少的群员是:" + member.uin);
break;
} }
const newMembers = await NTQQApi.getGroupMembers(group.groupCode);
console.log("新群人员:");
for (const member of newMembers) {
console.log(member.nick);
}
group.members = newMembers;
const newMembersSet = new Set<string>(); // 建立索引降低时间复杂度
for (const member of newMembers) {
newMembersSet.add(member.uin);
}
for (const member of oldMembers) {
if (!newMembersSet.has(member.uin)) {
console.log("减少的群员是:" + member.uin);
break;
}
}
} }
else if (existGroup.memberCount < group.memberCount) {
console.log("群人数增加力!");
console.log("旧群人员:");
for (const member of existGroup.members) {
console.log(member.nick);
}
} const oldMembersSet = new Set<string>();
else if (existGroup.memberCount < group.memberCount) { for (const member of existGroup.members) {
console.log("群人数增加力!"); oldMembersSet.add(member.uin);
}
const oldMembersSet = new Set<string>(); const newMembers = await NTQQApi.getGroupMembers(group.groupCode);
for (const member of existGroup.members) {
oldMembersSet.add(member.uin);
}
const newMembers = await NTQQApi.getGroupMembers(group.groupCode); console.log("新群人员:");
group.members = newMembers; for (const member of newMembers) {
for (const member of newMembers) { console.log(member.nick);
if (!oldMembersSet.has(member.uin)) { }
console.log("增加的群员是:" + member.uin);
break; group.members = newMembers;
for (const member of newMembers) {
if (!oldMembersSet.has(member.uin)) {
console.log("增加的群员是:" + member.uin);
break;
}
} }
} }
} }
} }
}
updateGroups(newGroupList, false).then(); updateGroups(newGroupList, false).then();
}
catch (e) {
updateGroups(payload.groupList).then();
console.log(e);
}
} }
registerReceiveHook<{ groupList: Group[], updateType: number }>(ReceiveCmd.GROUPS, (payload) => { registerReceiveHook<{ groupList: Group[], updateType: number }>(ReceiveCmd.GROUPS, (payload) => {
@ -166,7 +191,9 @@ registerReceiveHook<{ groupList: Group[], updateType: number }>(ReceiveCmd.GROUP
updateGroups(payload.groupList).then(); updateGroups(payload.groupList).then();
} }
else { else {
processGroupEvent(payload).then(); if (process.platform == "win32") {
processGroupEvent(payload).then();
}
} }
}) })
registerReceiveHook<{ groupList: Group[], updateType: number }>(ReceiveCmd.GROUPS_UNIX, (payload) => { registerReceiveHook<{ groupList: Group[], updateType: number }>(ReceiveCmd.GROUPS_UNIX, (payload) => {
@ -174,7 +201,9 @@ registerReceiveHook<{ groupList: Group[], updateType: number }>(ReceiveCmd.GROUP
updateGroups(payload.groupList).then(); updateGroups(payload.groupList).then();
} }
else { else {
processGroupEvent(payload).then(); if (process.platform != "win32") {
processGroupEvent(payload).then();
}
} }
}) })
registerReceiveHook<{ registerReceiveHook<{