@fishjam-cloud/react-client
Version:
React client library for Fishjam
36 lines (35 loc) • 1.28 kB
JavaScript
import { useEffect, useState } from "react";
export const usePeerStatus = (client) => {
const [peerStatus, setPeerStatus] = useState("idle");
useEffect(() => {
const setConnecting = () => {
setPeerStatus("connecting");
};
const setError = () => {
setPeerStatus("error");
};
const setJoined = () => {
setPeerStatus("connected");
};
const setDisconnected = () => {
setPeerStatus("idle");
};
client.on("connectionStarted", setConnecting);
client.on("reconnected", setJoined);
client.on("joined", setJoined);
client.on("authError", setError);
client.on("joinError", setError);
client.on("connectionError", setError);
client.on("disconnected", setDisconnected);
return () => {
client.off("connectionStarted", setConnecting);
client.off("reconnected", setJoined);
client.off("joined", setJoined);
client.off("authError", setError);
client.off("joinError", setError);
client.off("connectionError", setError);
client.off("disconnected", setDisconnected);
};
}, [client, setPeerStatus]);
return peerStatus;
};