@fishjam-cloud/react-client
Version:
React client library for Fishjam
34 lines (33 loc) • 1.23 kB
JavaScript
import { useContext, useEffect, useState } from "react";
import { FishjamClientContext } from "../../contexts/fishjamClient";
/**
*
* @category Connection
*/
export const useReconnection = () => {
const fishjamClientRef = useContext(FishjamClientContext);
if (!fishjamClientRef)
throw Error("useConnection must be used within FishjamProvider");
const [reconnectionStatus, setReconnectionStatus] = useState("idle");
useEffect(() => {
const client = fishjamClientRef.current;
const setReconnecting = () => {
setReconnectionStatus("reconnecting");
};
const setIdle = () => {
setReconnectionStatus("idle");
};
const setError = () => {
setReconnectionStatus("error");
};
client.on("reconnectionStarted", setReconnecting);
client.on("reconnected", setIdle);
client.on("reconnectionRetriesLimitReached", setError);
return () => {
client.off("reconnectionStarted", setReconnecting);
client.off("reconnected", setIdle);
client.off("reconnectionRetriesLimitReached", setError);
};
}, [fishjamClientRef]);
return reconnectionStatus;
};