agora-react-native-rtm
Version:
React Native around the Agora RTM SDKs for Android and iOS agora
25 lines • 712 B
JavaScript
import { useEffect, useRef } from 'react';
function listen(listenable, event, listener) {
listenable.addEventListener(event, listener);
return () => listenable.removeEventListener(event, listener);
}
export function useRtmEvent(client, event, listener) {
const listenerRef = useRef(listener);
useEffect(() => {
listenerRef.current = listener;
}, [listener]);
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