@elemental-design/expo-notifications
Version:
26 lines (19 loc) • 937 B
text/typescript
import { EventEmitter, Subscription, Platform } from '@unimodules/core';
import PushTokenManager from './PushTokenManager';
import { DevicePushToken } from './Tokens.types';
export type PushTokenListener = (token: DevicePushToken) => void;
// Web uses SyntheticEventEmitter
const tokenEmitter = new EventEmitter(PushTokenManager);
const newTokenEventName = 'onDevicePushToken';
export function addPushTokenListener(listener: PushTokenListener): Subscription {
const wrappingListener = ({ devicePushToken }) =>
// @ts-ignore: TS can't decide what Platform.OS is.
listener({ data: devicePushToken, type: Platform.OS });
return tokenEmitter.addListener(newTokenEventName, wrappingListener);
}
export function removePushTokenSubscription(subscription: Subscription) {
tokenEmitter.removeSubscription(subscription);
}
export function removeAllPushTokenListeners() {
tokenEmitter.removeAllListeners(newTokenEventName);
}