Files
react-native-notifications/RNNotifications/RNNotificationEventHandler.m
2019-07-07 12:41:53 +03:00

45 lines
2.0 KiB
Objective-C

#import "RNNotificationEventHandler.h"
#import "RNNotificationsBridgeQueue.h"
#import "RNEventEmitter.h"
@implementation RNNotificationEventHandler
- (void)didReceiveForegroundPayload:(NSDictionary *)payload {
// if ([RNNotificationsBridgeQueue sharedInstance].jsIsReady == YES) {
[RNEventEmitter sendEvent:NotificationReceivedForeground body:payload];
// }
}
- (void)didOpenNotificationPayload:(NSDictionary *)payload {
// if ([RNNotificationsBridgeQueue sharedInstance].jsIsReady == YES) {
[RNEventEmitter sendEvent:NotificationOpened body:payload];
// }
}
- (void)handleActionWithIdentifier:(NSString *)identifier forPayload:(NSDictionary *)payload withResponse:(NSString *)response completionHandler:(void (^)())completionHandler {
[self emitNotificationActionForIdentifier:identifier response:response userInfo:payload completionHandler:completionHandler];
}
- (void)emitNotificationActionForIdentifier:(NSString *)identifier response:(NSString *)response userInfo:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler {
NSString* completionKey = [NSString stringWithFormat:@"%@.%@", identifier, [NSString stringWithFormat:@"%ldd", (long)[[NSDate date] timeIntervalSince1970]]];
NSMutableDictionary* info = [[NSMutableDictionary alloc] initWithDictionary:@{ @"identifier": identifier, @"completionKey": completionKey }];
if (response != NULL) {
info[@"text"] = response;
}
// add notification custom data
if (userInfo != NULL) {
info[@"notification"] = userInfo;
}
// Emit event to the queue (in order to store the completion handler). if JS thread is ready, post it also to the notification center (to the bridge).
[[RNNotificationsBridgeQueue sharedInstance] postAction:info withCompletionKey:completionKey andCompletionHandler:completionHandler];
// if ([RNNotificationsBridgeQueue sharedInstance].jsIsReady == YES) {
[RNEventEmitter sendEvent:NotificationActionReceived body:userInfo];
// }
}
@end