UNPKG

@elemental-design/expo-notifications

Version:
26 lines (19 loc) 937 B
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); }