@theoplayer/react-native-engage
Version:
Engage connector for @theoplayer/react-native
38 lines (36 loc) • 1.12 kB
JavaScript
;
import { EngageClusterEventType } from '@theoplayer/react-native-engage';
import { useEffect, useState } from 'react';
/**
* useCluster is a convenience hook that listens for changes in the cluster instance, triggering a state update.
*
* @param engage
* @param type
* @param config
*/
export function useCluster(engage, type, config) {
const [, setEntities] = useState([]);
const [cluster, setCluster] = useState(undefined);
useEffect(() => {
if (engage) {
const cluster = engage.getCluster(type, config);
setCluster(cluster);
// Set initial entities list
setEntities(cluster?.entities);
}
}, [engage]);
useEffect(() => {
const onEntitiesChanged = () => {
if (cluster) {
// Update new entities list
setEntities(cluster?.entities);
}
};
cluster?.addEventListener(EngageClusterEventType.EntitiesChanged, onEntitiesChanged);
return () => {
cluster?.removeEventListener(EngageClusterEventType.EntitiesChanged, onEntitiesChanged);
};
}, [cluster]);
return cluster;
}
//# sourceMappingURL=useCluster.js.map