26 lines
904 B
TypeScript
26 lines
904 B
TypeScript
import { useEffect } from "react";
|
|
import { useProtocol } from "./useProtocol";
|
|
import Packet from "@/app/providers/ProtocolProvider/protocol/packet";
|
|
|
|
export const usePacket = (packetId : number, callback: (packet : any) => void, deps?: any[]) => {
|
|
const {protocol} = useProtocol();
|
|
|
|
const waitPacket = (packetId: number, callback: (packet: Packet) => void) : number => {
|
|
return protocol.waitPacket(packetId, callback);
|
|
};
|
|
|
|
const unwaitPacket = (packetId: number, callback: (packet: Packet) => void) => {
|
|
protocol.unwaitPacket(packetId, callback);
|
|
};
|
|
|
|
useEffect(() => {
|
|
let unwait = (receivedPacket: Packet) => {
|
|
callback(receivedPacket);
|
|
};
|
|
waitPacket(packetId, unwait);
|
|
return () => {
|
|
// Cleanup function to remove the packet listener
|
|
unwaitPacket(packetId, unwait);
|
|
};
|
|
}, deps);
|
|
} |