UNPKG

@huddle01/react

Version:

The Huddle01 React SDK offers a comprehensive suite of hooks, methods and event listeners that allow for seamless real-time audio and video communication with minimal coding required.

68 lines (66 loc) 2.05 kB
import { useHuddle01_default } from "./chunk-6UAH4WUQ.js"; // src/hooks/useLocalPeer.ts import { useCallback, useEffect, useState } from "react"; var useLocalPeer = (props) => { const { huddleClient } = useHuddle01_default(); const localPeer = huddleClient.localPeer; const peerId = localPeer.peerId; const [permissions, setPermissions] = useState( localPeer.permissions ); const [role, setRole] = useState(localPeer.role); const [metadata, setMetadata] = useState( localPeer.getMetadata() ?? null ); const handleUpdateMetadata = useCallback(() => { const newMetadata = localPeer.getMetadata(); if (props?.onMetadataUpdated) props.onMetadataUpdated(newMetadata); setMetadata(newMetadata); }, [props?.onMetadataUpdated]); const handlePermissionsUpdated = useCallback( (data) => { if (props?.onPermissionsUpdated) { props.onPermissionsUpdated(data.permissions); } if (data.role) { if (props?.onRoleUpdated) props.onRoleUpdated(data.role); setRole(data.role); } setPermissions(data.permissions); }, [props?.onPermissionsUpdated, props?.onRoleUpdated] ); const handleRoleUpdated = useCallback( (data) => { if (props?.onRoleUpdated) props.onRoleUpdated(data.role); setRole(data.role); }, [props?.onRoleUpdated] ); useEffect(() => { localPeer.on("metadata-updated", handleUpdateMetadata); localPeer.on("permissions-updated", handlePermissionsUpdated); localPeer.on("role-updated", handleRoleUpdated); return () => { localPeer.off("metadata-updated", handleUpdateMetadata); localPeer.off("permissions-updated", handlePermissionsUpdated); localPeer.off("role-updated", handleRoleUpdated); }; }, []); const updateMetadata = localPeer.updateMetadata; const updateRole = localPeer.updateRole; return { peerId, role, permissions, metadata, updateMetadata, updateRole }; }; export { useLocalPeer }; //# sourceMappingURL=chunk-5HZDRQCQ.js.map