Files
diplom-frontend/app/components/manager/gateway-websocket-connection-manager.tsx
2025-05-21 18:03:22 +03:00

37 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((state) => state.setQueryClient);
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;
}