@theoplayer/react-native-engage
Version:
Engage connector for @theoplayer/react-native
41 lines (40 loc) • 1.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useCluster = useCluster;
var _reactNativeEngage = require("@theoplayer/react-native-engage");
var _react = require("react");
/**
* useCluster is a convenience hook that listens for changes in the cluster instance, triggering a state update.
*
* @param engage
* @param type
* @param config
*/
function useCluster(engage, type, config) {
const [, setEntities] = (0, _react.useState)([]);
const [cluster, setCluster] = (0, _react.useState)(undefined);
(0, _react.useEffect)(() => {
if (engage) {
const cluster = engage.getCluster(type, config);
setCluster(cluster);
// Set initial entities list
setEntities(cluster?.entities);
}
}, [engage]);
(0, _react.useEffect)(() => {
const onEntitiesChanged = () => {
if (cluster) {
// Update new entities list
setEntities(cluster?.entities);
}
};
cluster?.addEventListener(_reactNativeEngage.EngageClusterEventType.EntitiesChanged, onEntitiesChanged);
return () => {
cluster?.removeEventListener(_reactNativeEngage.EngageClusterEventType.EntitiesChanged, onEntitiesChanged);
};
}, [cluster]);
return cluster;
}
//# sourceMappingURL=useCluster.js.map