silphius/app/context/client.js

26 lines
605 B
JavaScript
Raw Normal View History

2024-06-27 04:32:31 -05:00
import {createContext, useContext, useEffect} from 'react';
2024-06-10 22:42:30 -05:00
2024-06-27 04:08:52 -05:00
const context = createContext();
export default context;
export function useClient() {
return useContext(context);
}
2024-06-27 04:32:31 -05:00
export function usePacket(type, fn, dependencies) {
const client = useClient();
useEffect(() => {
if (!client) {
return;
}
function listener(payload) {
fn(payload, client);
}
client.addPacketListener(type, listener);
2024-06-27 04:32:31 -05:00
return () => {
client.removePacketListener(type, listener);
2024-06-27 04:32:31 -05:00
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [client, ...dependencies]);
}