123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- #import "RNNEventEmitter.h"
- #import "RNNUtils.h"
-
- @implementation RNNEventEmitter {
- NSInteger _appLaunchedListenerCount;
- BOOL _appLaunchedEventDeferred;
- }
-
- RCT_EXPORT_MODULE();
-
- static NSString* const AppLaunched = @"RNN.AppLaunched";
- static NSString* const CommandCompleted = @"RNN.CommandCompleted";
- static NSString* const BottomTabSelected = @"RNN.BottomTabSelected";
- static NSString* const ComponentDidAppear = @"RNN.ComponentDidAppear";
- static NSString* const ComponentDidDisappear = @"RNN.ComponentDidDisappear";
- static NSString* const NavigationButtonPressed = @"RNN.NavigationButtonPressed";
- static NSString* const ModalDismissed = @"RNN.ModalDismissed";
- static NSString* const ModalAttemptedToDismiss = @"RNN.ModalAttemptedToDismiss";
- static NSString* const SearchBarUpdated = @"RNN.SearchBarUpdated";
- static NSString* const SearchBarCancelPressed = @"RNN.SearchBarCancelPressed";
- static NSString* const PreviewCompleted = @"RNN.PreviewCompleted";
- static NSString* const ScreenPopped = @"RNN.ScreenPopped";
-
- - (NSArray<NSString *> *)supportedEvents {
- return @[AppLaunched,
- CommandCompleted,
- BottomTabSelected,
- ComponentDidAppear,
- ComponentDidDisappear,
- NavigationButtonPressed,
- ModalDismissed,
- SearchBarUpdated,
- SearchBarCancelPressed,
- PreviewCompleted,
- ScreenPopped,
- ModalAttemptedToDismiss];
- }
-
- # pragma mark public
-
- - (void)sendOnAppLaunched {
- if (_appLaunchedListenerCount > 0) {
- [self send:AppLaunched body:nil];
- } else {
- _appLaunchedEventDeferred = TRUE;
- }
- }
-
- - (void)sendComponentDidAppear:(NSString *)componentId componentName:(NSString *)componentName componentType:(NSString *)componentType {
- [self send:ComponentDidAppear body:@{
- @"componentId":componentId,
- @"componentName": componentName,
- @"componentType": componentType
- }];
- }
-
- - (void)sendComponentDidDisappear:(NSString *)componentId componentName:(NSString *)componentName componentType:(NSString *)componentType {
- [self send:ComponentDidDisappear body:@{
- @"componentId":componentId,
- @"componentName": componentName,
- @"componentType": componentType
- }];
- }
-
- - (void)sendOnNavigationButtonPressed:(NSString *)componentId buttonId:(NSString*)buttonId {
- [self send:NavigationButtonPressed body:@{
- @"componentId": componentId,
- @"buttonId": buttonId
- }];
- }
-
- - (void)sendBottomTabSelected:(NSNumber *)selectedTabIndex unselected:(NSNumber*)unselectedTabIndex {
- [self send:BottomTabSelected body:@{
- @"selectedTabIndex": selectedTabIndex,
- @"unselectedTabIndex": unselectedTabIndex
- }];
- }
-
- - (void)sendOnNavigationCommandCompletion:(NSString *)commandName commandId:(NSString *)commandId params:(NSDictionary*)params {
- [self send:CommandCompleted body:@{
- @"commandId":commandId,
- @"commandName":commandName,
- @"params": params,
- @"completionTime": [RNNUtils getCurrentTimestamp]
- }];
- }
-
- - (void)sendOnSearchBarUpdated:(NSString *)componentId
- text:(NSString*)text
- isFocused:(BOOL)isFocused {
- [self send:SearchBarUpdated body:@{
- @"componentId": componentId,
- @"text": text,
- @"isFocused": @(isFocused)
- }];
- }
-
- - (void)sendOnSearchBarCancelPressed:(NSString *)componentId {
- [self send:SearchBarCancelPressed body:@{
- @"componentId": componentId
- }];
- }
-
- - (void)sendOnPreviewCompleted:(NSString *)componentId previewComponentId:(NSString *)previewComponentId {
- [self send:PreviewCompleted body:@{
- @"componentId": componentId,
- @"previewComponentId": previewComponentId
- }];
- }
-
- - (void)sendModalsDismissedEvent:(NSString *)componentId numberOfModalsDismissed:(NSNumber *)modalsDismissed {
- [self send:ModalDismissed body:@{
- @"componentId": componentId,
- @"modalsDismissed": modalsDismissed
- }];
- }
-
- - (void)sendModalAttemptedToDismissEvent:(NSString *)componentId {
- [self send:ModalAttemptedToDismiss body:@{
- @"componentId": componentId,
- }];
- }
-
- - (void)sendScreenPoppedEvent:(NSString *)componentId {
- [self send:ScreenPopped body:@{
- @"componentId": componentId
- }];
- }
-
- - (void)addListener:(NSString *)eventName {
- [super addListener:eventName];
- if ([eventName isEqualToString:AppLaunched]) {
- _appLaunchedListenerCount++;
- if (_appLaunchedEventDeferred) {
- _appLaunchedEventDeferred = FALSE;
- [self sendOnAppLaunched];
- }
- }
- }
-
- # pragma mark private
-
- - (void)send:(NSString *)eventName body:(id)body {
- if (self.bridge == nil) {
- return;
- }
- [self sendEventWithName:eventName body:body];
- }
-
- @end
|