diff --git a/src/ConferenceCallManagerHooks.jsx b/src/ConferenceCallManagerHooks.jsx index cacdff4..d84c349 100644 --- a/src/ConferenceCallManagerHooks.jsx +++ b/src/ConferenceCallManagerHooks.jsx @@ -66,42 +66,6 @@ export async function initClient(clientOptions) { return client; } -export async function fetchGroupCall( - client, - roomIdOrAlias, - viaServers = undefined, - timeout = 5000 -) { - const { roomId } = await client.joinRoom(roomIdOrAlias, { viaServers }); - - return new Promise((resolve, reject) => { - let timeoutId; - - function onGroupCallIncoming(groupCall) { - if (groupCall && groupCall.room.roomId === roomId) { - clearTimeout(timeoutId); - client.removeListener("GroupCall.incoming", onGroupCallIncoming); - resolve(groupCall); - } - } - - const groupCall = client.getGroupCallForRoom(roomId); - - if (groupCall) { - resolve(groupCall); - } - - client.on("GroupCall.incoming", onGroupCallIncoming); - - if (timeout) { - timeoutId = setTimeout(() => { - client.removeListener("GroupCall.incoming", onGroupCallIncoming); - reject(new Error("Fetching group call timed out.")); - }, timeout); - } - }); -} - export function ClientProvider({ children }) { const history = useHistory(); const [ @@ -326,23 +290,6 @@ export async function createRoom(client, name) { return room_alias || room_id; } -export function useLoadGroupCall(client, roomId, viaServers) { - const [state, setState] = useState({ - loading: true, - error: undefined, - groupCall: undefined, - }); - - useEffect(() => { - setState({ loading: true }); - fetchGroupCall(client, roomId, viaServers, 30000) - .then((groupCall) => setState({ loading: false, groupCall })) - .catch((error) => setState({ loading: false, error })); - }, [client, roomId]); - - return state; -} - const tsCache = {}; function getLastTs(client, r) { diff --git a/src/room/GroupCallLoader.jsx b/src/room/GroupCallLoader.jsx index 300af82..15b1acc 100644 --- a/src/room/GroupCallLoader.jsx +++ b/src/room/GroupCallLoader.jsx @@ -1,5 +1,5 @@ import React from "react"; -import { useLoadGroupCall } from "../ConferenceCallManagerHooks"; +import { useLoadGroupCall } from "./useLoadGroupCall"; import { ErrorView, FullScreenView } from "../FullScreenView"; export function GroupCallLoader({ client, roomId, viaServers, children }) { diff --git a/src/room/useLoadGroupCall.js b/src/room/useLoadGroupCall.js new file mode 100644 index 0000000..9f8bd85 --- /dev/null +++ b/src/room/useLoadGroupCall.js @@ -0,0 +1,52 @@ +async function fetchGroupCall( + client, + roomIdOrAlias, + viaServers = undefined, + timeout = 5000 +) { + const { roomId } = await client.joinRoom(roomIdOrAlias, { viaServers }); + + return new Promise((resolve, reject) => { + let timeoutId; + + function onGroupCallIncoming(groupCall) { + if (groupCall && groupCall.room.roomId === roomId) { + clearTimeout(timeoutId); + client.removeListener("GroupCall.incoming", onGroupCallIncoming); + resolve(groupCall); + } + } + + const groupCall = client.getGroupCallForRoom(roomId); + + if (groupCall) { + resolve(groupCall); + } + + client.on("GroupCall.incoming", onGroupCallIncoming); + + if (timeout) { + timeoutId = setTimeout(() => { + client.removeListener("GroupCall.incoming", onGroupCallIncoming); + reject(new Error("Fetching group call timed out.")); + }, timeout); + } + }); +} + +export function useLoadGroupCall(client, roomId, viaServers) { + const [state, setState] = useState({ + loading: true, + error: undefined, + groupCall: undefined, + }); + + useEffect(() => { + setState({ loading: true }); + fetchGroupCall(client, roomId, viaServers, 30000) + .then((groupCall) => setState({ loading: false, groupCall })) + .catch((error) => setState({ loading: false, error })); + }, [client, roomId]); + + return state; +}