37 lines
1006 B
TypeScript
37 lines
1006 B
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;
|
|
}
|