agora-react-native-rtm
Version:
React Native around the Agora RTM SDKs for Android and iOS agora
31 lines (30 loc) • 844 B
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useRtmEvent = useRtmEvent;
var _react = require("react");
function listen(listenable, event, listener) {
listenable.addEventListener(event, listener);
return () => listenable.removeEventListener(event, listener);
}
function useRtmEvent(client, event, listener) {
const listenerRef = (0, _react.useRef)(listener);
(0, _react.useEffect)(() => {
listenerRef.current = listener;
}, [listener]);
(0, _react.useEffect)(() => {
if (client) {
return listen(client, event, (...args) => {
if (listenerRef.current) {
listenerRef.current(...args);
}
});
} else {
return () => {
throw new Error('client is null');
};
}
}, [event, client]);
}
//# sourceMappingURL=useRtmEvent.js.map
;