42 lines
1.0 KiB
TypeScript
42 lines
1.0 KiB
TypeScript
import { useQueryClient } from '@tanstack/react-query';
|
|
import { useEffect } from 'react';
|
|
import { ConnectionState } from '~/lib/websocket/gateway/types';
|
|
import { useGatewayStore } from '~/stores/gateway-store';
|
|
import { useTokenStore } from '~/stores/token-store';
|
|
|
|
export function GatewayWebSocketConnectionManager() {
|
|
const token = useTokenStore((state) =>
|
|
state.token,
|
|
);
|
|
|
|
const { setQueryClient } = useGatewayStore();
|
|
|
|
const queryClient = useQueryClient();
|
|
useEffect(() => {
|
|
setQueryClient(queryClient);
|
|
}, [queryClient])
|
|
|
|
useEffect(() => {
|
|
const { status, connect, disconnect } = useGatewayStore.getState();
|
|
|
|
if (!!token) {
|
|
connect(token);
|
|
} else {
|
|
if (status === ConnectionState.CONNECTED) {
|
|
disconnect();
|
|
}
|
|
}
|
|
|
|
return () => {
|
|
if (status === ConnectionState.CONNECTED) {
|
|
disconnect();
|
|
}
|
|
};
|
|
}, [token]);
|
|
|
|
return (
|
|
<>
|
|
{null}
|
|
</>
|
|
);
|
|
} |