react-native-navigation的迁移库

NativeEventsReceiver.ts 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import {
  2. NativeModules,
  3. NativeEventEmitter,
  4. EventEmitter,
  5. EmitterSubscription
  6. } from 'react-native';
  7. import {
  8. ComponentDidAppearEvent,
  9. ComponentDidDisappearEvent,
  10. NavigationButtonPressedEvent,
  11. SearchBarUpdatedEvent,
  12. SearchBarCancelPressedEvent,
  13. PreviewCompletedEvent,
  14. ModalDismissedEvent,
  15. ScreenPoppedEvent,
  16. ModalAttemptedToDismissEvent
  17. } from '../interfaces/ComponentEvents';
  18. import {
  19. CommandCompletedEvent,
  20. BottomTabSelectedEvent,
  21. BottomTabLongPressedEvent,
  22. BottomTabPressedEvent
  23. } from '../interfaces/Events';
  24. export class NativeEventsReceiver {
  25. private emitter: EventEmitter;
  26. constructor() {
  27. // NOTE: This try catch is workaround for integration tests
  28. // TODO: mock NativeEventEmitter in integration tests rather done adding try catch in source code
  29. try {
  30. this.emitter = new NativeEventEmitter(NativeModules.RNNEventEmitter);
  31. } catch (e) {
  32. this.emitter = ({
  33. addListener: () => {
  34. return {
  35. remove: () => undefined
  36. };
  37. }
  38. } as any) as EventEmitter;
  39. }
  40. }
  41. public registerAppLaunchedListener(
  42. callback: () => void
  43. ): EmitterSubscription {
  44. return this.emitter.addListener('RNN.AppLaunched', callback);
  45. }
  46. public registerComponentDidAppearListener(
  47. callback: (event: ComponentDidAppearEvent) => void
  48. ): EmitterSubscription {
  49. return this.emitter.addListener('RNN.ComponentDidAppear', callback);
  50. }
  51. public registerComponentDidDisappearListener(
  52. callback: (event: ComponentDidDisappearEvent) => void
  53. ): EmitterSubscription {
  54. return this.emitter.addListener('RNN.ComponentDidDisappear', callback);
  55. }
  56. public registerNavigationButtonPressedListener(
  57. callback: (event: NavigationButtonPressedEvent) => void
  58. ): EmitterSubscription {
  59. return this.emitter.addListener('RNN.NavigationButtonPressed', callback);
  60. }
  61. public registerBottomTabPressedListener(
  62. callback: (data: BottomTabPressedEvent) => void
  63. ): EmitterSubscription {
  64. return this.emitter.addListener('RNN.BottomTabPressed', callback);
  65. }
  66. public registerModalDismissedListener(
  67. callback: (event: ModalDismissedEvent) => void
  68. ): EmitterSubscription {
  69. return this.emitter.addListener('RNN.ModalDismissed', callback);
  70. }
  71. public registerModalAttemptedToDismissListener(
  72. callback: (event: ModalAttemptedToDismissEvent) => void
  73. ): EmitterSubscription {
  74. return this.emitter.addListener('RNN.ModalAttemptedToDismiss', callback);
  75. }
  76. public registerSearchBarUpdatedListener(
  77. callback: (event: SearchBarUpdatedEvent) => void
  78. ): EmitterSubscription {
  79. return this.emitter.addListener('RNN.SearchBarUpdated', callback);
  80. }
  81. public registerSearchBarCancelPressedListener(
  82. callback: (event: SearchBarCancelPressedEvent) => void
  83. ): EmitterSubscription {
  84. return this.emitter.addListener('RNN.SearchBarCancelPressed', callback);
  85. }
  86. public registerPreviewCompletedListener(
  87. callback: (event: PreviewCompletedEvent) => void
  88. ): EmitterSubscription {
  89. return this.emitter.addListener('RNN.PreviewCompleted', callback);
  90. }
  91. public registerCommandCompletedListener(
  92. callback: (data: CommandCompletedEvent) => void
  93. ): EmitterSubscription {
  94. return this.emitter.addListener('RNN.CommandCompleted', callback);
  95. }
  96. public registerBottomTabSelectedListener(
  97. callback: (data: BottomTabSelectedEvent) => void
  98. ): EmitterSubscription {
  99. return this.emitter.addListener('RNN.BottomTabSelected', callback);
  100. }
  101. public registerBottomTabLongPressedListener(
  102. callback: (data: BottomTabLongPressedEvent) => void
  103. ): EmitterSubscription {
  104. return this.emitter.addListener('RNN.BottomTabLongPressed', callback);
  105. }
  106. public registerScreenPoppedListener(
  107. callback: (event: ScreenPoppedEvent) => void
  108. ): EmitterSubscription {
  109. return this.emitter.addListener('RNN.ScreenPopped', callback);
  110. }
  111. }