This commit is contained in:
rosetta
2026-01-30 05:01:05 +02:00
commit 83f38dc63f
327 changed files with 18725 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
import { useEffect } from "react";
import { GroupStatus, PacketGroupInviteInfo } from "../ProtocolProvider/protocol/packets/packet.group.invite.info";
import { useSender } from "../ProtocolProvider/useSender";
import { usePacket } from "../ProtocolProvider/usePacket";
import { useMemory } from "../MemoryProvider/useMemory";
export function useGroupInviteStatus(groupId: string) : {
inviteStatus: GroupStatus;
setInviteStatus: (status: GroupStatus) => void;
setInviteStatusByGroupId: (groupIdParam: string, status: GroupStatus) => void;
} {
const [invitesCache, setInvitesCache] = useMemory("groups_invites_cache", [], true);
const send = useSender();
useEffect(() => {
(async () => {
if(groupId == ''){
return;
}
const packet = new PacketGroupInviteInfo();
packet.setGroupId(groupId);
send(packet);
})();
}, [groupId]);
usePacket(0x13, (packet: PacketGroupInviteInfo) => {
if(packet.getGroupId() != groupId){
return;
}
setInvitesCache((prev) => ({
...prev,
[groupId]: packet.getGroupStatus(),
}));
}, [groupId]);
const setInviteStatus = (status: GroupStatus) => {
setInvitesCache((prev) => ({
...prev,
[groupId]: status,
}));
}
const setInviteStatusByGroupId = (groupIdParam: string, status: GroupStatus) => {
setInvitesCache((prev) => ({
...prev,
[groupIdParam]: status,
}));
}
return {
inviteStatus: invitesCache[groupId] ?? GroupStatus.NOT_JOINED,
setInviteStatus,
setInviteStatusByGroupId,
};
}