synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
78 lines • 3.1 kB
TypeScript
import { GridModel } from '@/components/DataGrid/DataGridTypes';
import { DataGridWebSocket } from './DataGridWebSocket';
interface WebSocketState {
model: GridModel | null;
/**
* True if the WebSocket has finished the initial sync and can process CRDT updates.
* Corresponds to the `GRID_READY` action.
*/
hasCompletedInitialSync: boolean;
isConnected: boolean;
isConnecting: boolean;
connectionParams: {
replicaId: number;
sessionId: string;
} | null;
websocketInstance: DataGridWebSocket | null;
connectionAttemptId: number | null;
connectionError: unknown;
}
export declare const initialWebSocketState: WebSocketState;
/**
* Custom hook to manage a DataGrid WebSocket connection.
* Handles:
* - Fetching presigned URLs via a mutation hook
* - Instantiating the DataGridWebSocket
* - Connection status tracking
* - Reconnection on disconnect
* - Grid model updates and snapshot tracking
*/
export declare function useDataGridWebSocket(): {
isConnected: boolean;
websocketInstance: DataGridWebSocket | null;
hasCompletedInitialSync: boolean;
model: import("json-joy").Model<import("json-joy").ObjNode<{
doc_version: import("json-joy").ConNode<string>;
columnNames: import("json-joy").VecNode<[import("json-joy").ConNode<string>]>;
columnOrder: import("json-joy").ArrNode<never>;
selection: import("json-joy").ObjNode<{
[x: string]: import("json-joy").ConNode<import("@/components/DataGrid/DataGridTypes").ReplicaSelectionModel>;
}>;
rows: import("json-joy").ArrNode<import("json-joy").ObjNode<{
data: import("json-joy").VecNode<[import("json-joy").ConNode<string>]>;
metadata: import("json-joy").ObjNode<{
synapseRow: import("json-joy").ObjNode<{
rowId: import("json-joy").ConNode<number>;
versionNumber: import("json-joy").ConNode<number>;
etag: import("json-joy").ConNode<string>;
}>;
rowValidation: import("json-joy").ConNode<import("@sage-bionetworks/synapse-types").ValidationResults | undefined>;
}>;
}>>;
}>> | null;
modelSnapshot: {
doc_version: string;
columnNames: [string];
columnOrder: never[];
selection: {
[x: string]: import("@/components/DataGrid/DataGridTypes").ReplicaSelectionModel;
};
rows: {
data: [string];
metadata: {
synapseRow: {
rowId: number;
versionNumber: number;
etag: string;
};
rowValidation: import("@sage-bionetworks/synapse-types").ValidationResults | undefined;
};
}[];
} | null;
connect: (replicaId: number, sessionId: string) => void;
presignedUrl: string | null;
errorEstablishingWebsocketConnection: unknown;
hasSufficientData: boolean;
};
export {};
//# sourceMappingURL=useDataGridWebsocket.d.ts.map