@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
JavaScript
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