react-native-navigation的迁移库

NativeEventsReceiver.ts 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { NativeModules, NativeEventEmitter, EventEmitter, EmitterSubscription } from 'react-native';
  2. import {
  3. ComponentDidAppearEvent,
  4. ComponentDidDisappearEvent,
  5. NavigationButtonPressedEvent,
  6. SearchBarUpdatedEvent,
  7. SearchBarCancelPressedEvent,
  8. PreviewCompletedEvent,
  9. ModalDismissedEvent,
  10. ScreenPoppedEvent,
  11. ModalAttemptedToDismissEvent
  12. } from '../interfaces/ComponentEvents';
  13. import { CommandCompletedEvent, BottomTabSelectedEvent } from '../interfaces/Events';
  14. export class NativeEventsReceiver {
  15. private emitter: EventEmitter;
  16. constructor() {
  17. // NOTE: This try catch is workaround for integration tests
  18. // TODO: mock NativeEventEmitter in integration tests rather done adding try catch in source code
  19. try {
  20. this.emitter = new NativeEventEmitter(NativeModules.RNNEventEmitter);
  21. } catch (e) {
  22. this.emitter = {
  23. addListener: () => {
  24. return {
  25. remove: () => undefined
  26. };
  27. }
  28. } as any as EventEmitter;
  29. }
  30. }
  31. public registerAppLaunchedListener(callback: () => void): EmitterSubscription {
  32. return this.emitter.addListener('RNN.AppLaunched', callback);
  33. }
  34. public registerComponentDidAppearListener(callback: (event: ComponentDidAppearEvent) => void): EmitterSubscription {
  35. return this.emitter.addListener('RNN.ComponentDidAppear', callback);
  36. }
  37. public registerComponentDidDisappearListener(callback: (event: ComponentDidDisappearEvent) => void): EmitterSubscription {
  38. return this.emitter.addListener('RNN.ComponentDidDisappear', callback);
  39. }
  40. public registerNavigationButtonPressedListener(callback: (event: NavigationButtonPressedEvent) => void): EmitterSubscription {
  41. return this.emitter.addListener('RNN.NavigationButtonPressed', callback);
  42. }
  43. public registerModalDismissedListener(callback: (event: ModalDismissedEvent) => void): EmitterSubscription {
  44. return this.emitter.addListener('RNN.ModalDismissed', callback);
  45. }
  46. public registerModalAttemptedToDismissListener(callback: (event: ModalAttemptedToDismissEvent) => void): EmitterSubscription {
  47. return this.emitter.addListener('RNN.ModalAttemptedToDismiss', callback);
  48. }
  49. public registerSearchBarUpdatedListener(callback: (event: SearchBarUpdatedEvent) => void): EmitterSubscription {
  50. return this.emitter.addListener('RNN.SearchBarUpdated', callback);
  51. }
  52. public registerSearchBarCancelPressedListener(callback: (event: SearchBarCancelPressedEvent) => void): EmitterSubscription {
  53. return this.emitter.addListener('RNN.SearchBarCancelPressed', callback);
  54. }
  55. public registerPreviewCompletedListener(callback: (event: PreviewCompletedEvent) => void): EmitterSubscription {
  56. return this.emitter.addListener('RNN.PreviewCompleted', callback);
  57. }
  58. public registerCommandCompletedListener(callback: (data: CommandCompletedEvent) => void): EmitterSubscription {
  59. return this.emitter.addListener('RNN.CommandCompleted', callback);
  60. }
  61. public registerBottomTabSelectedListener(callback: (data: BottomTabSelectedEvent) => void): EmitterSubscription {
  62. return this.emitter.addListener('RNN.BottomTabSelected', callback);
  63. }
  64. public registerScreenPoppedListener(callback: (event: ScreenPoppedEvent) => void): EmitterSubscription {
  65. return this.emitter.addListener('RNN.ScreenPopped', callback);
  66. }
  67. }