rn-wifi-p2p
Version:
React Native module for Android P2P communication using Wi-Fi Direct.
38 lines (37 loc) • 1.83 kB
JavaScript
import { DeviceEventEmitter } from 'react-native';
const MODULE_NAME = 'RN_WIFI_P2P';
const subscriptionsMap = new Map();
export const subscribeOnEvent = (event, callback) => {
const fullEvent = `${MODULE_NAME}_${event}`;
const subscription = DeviceEventEmitter.addListener(fullEvent, callback);
if (!subscriptionsMap.has(fullEvent)) {
subscriptionsMap.set(fullEvent, new Set());
}
subscriptionsMap.get(fullEvent)?.add(subscription);
return subscription;
};
export const removeAllListenersFromEvent = event => {
const fullEvent = `${MODULE_NAME}:${event}`;
const subs = subscriptionsMap.get(fullEvent);
if (!subs) return;
for (const sub of subs) {
sub.remove();
}
subscriptionsMap.delete(fullEvent);
};
export const removeAllSubscriptions = () => {
subscriptionsMap.forEach(subs => {
subs.forEach(sub => sub.remove());
});
subscriptionsMap.clear();
};
export const subscribeOnThisDeviceChanged = callback => subscribeOnEvent('THIS_DEVICE_CHANGED_ACTION', callback);
export const removeAllListenersFromThisDeviceChanged = () => removeAllListenersFromEvent('THIS_DEVICE_CHANGED_ACTION');
export const subscribeOnPeersUpdates = callback => subscribeOnEvent('PEERS_UPDATED', callback);
export const removeAllListenersFromPeersUpdates = () => removeAllListenersFromEvent('PEERS_UPDATED');
export const subscribeOnConnectionInfoUpdates = callback => subscribeOnEvent('CONNECTION_INFO_UPDATED', callback);
export const removeAllListenersFromConnectionInfoUpdates = () => removeAllListenersFromEvent('CONNECTION_INFO_UPDATED');
export const subscribeOnMessageReceived = callback => subscribeOnEvent('MESSAGE_RECEIVED', callback);
export const removeAllListenersFromMessageReceived = () => removeAllListenersFromEvent('MESSAGE_RECEIVED');
//# sourceMappingURL=subscriptions.js.map
;