NativeEventsReceiver.ts 1.56 KB
Newer Older
yogevbd's avatar
yogevbd committed
1 2
import { NativeModules, NativeEventEmitter, EventEmitter, EmitterSubscription } from 'react-native';
import {
yogevbd's avatar
yogevbd committed
3
  Registered, RegistrationError, RegisteredPushKit
yogevbd's avatar
yogevbd committed
4
} from '../interfaces/NotificationEvents';
yogevbd's avatar
yogevbd committed
5
import { Notification } from '../interfaces/Notification';
yogevbd's avatar
yogevbd committed
6 7 8 9 10 11 12

export class NativeEventsReceiver {
  private emitter: EventEmitter;
  constructor() {
    this.emitter = new NativeEventEmitter(NativeModules.RNEventEmitter);
  }

yogevbd's avatar
yogevbd committed
13
  public registerRemoteNotificationsRegistered(callback: (event: Registered) => void): EmitterSubscription {
yogevbd's avatar
yogevbd committed
14 15 16
    return this.emitter.addListener('remoteNotificationsRegistered', callback);
  }

yogevbd's avatar
yogevbd committed
17 18 19 20 21
  public registerPushKitRegistered(callback: (event: RegisteredPushKit) => void): EmitterSubscription {
    return this.emitter.addListener('pushKitRegistered', callback);
  }

  public registerRemoteNotificationReceived(callback: (notification: Notification) => void): EmitterSubscription {
yogevbd's avatar
yogevbd committed
22
    return this.emitter.addListener('notificationReceived', callback);
yogevbd's avatar
yogevbd committed
23 24 25
  }

  public registerPushKitNotificationReceived(callback: (event: object) => void): EmitterSubscription {
yogevbd's avatar
yogevbd committed
26
    return this.emitter.addListener('pushKitNotificationReceived', callback);
yogevbd's avatar
yogevbd committed
27
  }
yogevbd's avatar
yogevbd committed
28

yogevbd's avatar
yogevbd committed
29
  public registerRemoteNotificationOpened(callback: (response: Notification, completion: () => void) => void): EmitterSubscription {
yogevbd's avatar
yogevbd committed
30 31 32 33 34 35
    return this.emitter.addListener('notificationOpened', callback);
  }

  public registerRemoteNotificationsRegistrationFailed(callback: (event: RegistrationError) => void): EmitterSubscription {
    return this.emitter.addListener('remoteNotificationsRegistrationFailed', callback);
  }
yogevbd's avatar
yogevbd committed
36
}