1// Copyright 2018-present 650 Industries. All rights reserved.
2
3#import "EXScopedNotificationBuilder.h"
4#import "EXScopedNotificationsUtils.h"
5
6@interface EXScopedNotificationBuilder ()
7
8@property (nonatomic, strong) NSString *experienceId;
9@property (nonatomic, assign) BOOL isInExpoGo;
10
11@end
12
13@implementation EXScopedNotificationBuilder
14
15- (instancetype)initWithExperienceId:(NSString *)experienceId
16                 andConstantsBinding:(EXConstantsBinding *)constantsBinding
17{
18  if (self = [super init]) {
19    _experienceId = experienceId;
20    _isInExpoGo = [@"expo" isEqualToString:constantsBinding.appOwnership];
21  }
22
23  return self;
24}
25
26- (UNNotificationContent *)notificationContentFromRequest:(NSDictionary *)request
27{
28  UNMutableNotificationContent *content = [super notificationContentFromRequest:request];
29  NSMutableDictionary *userInfo = [content.userInfo mutableCopy];
30  if (!userInfo) {
31    userInfo = [NSMutableDictionary dictionary];
32  }
33  userInfo[@"experienceId"] = _experienceId;
34  [content setUserInfo:userInfo];
35
36  if (content.categoryIdentifier && _isInExpoGo) {
37    NSString *scopedCategoryIdentifier = [EXScopedNotificationsUtils scopedIdentifierFromId:content.categoryIdentifier
38                                                                              forExperience:_experienceId];
39    [content setCategoryIdentifier:scopedCategoryIdentifier];
40  }
41
42  return content;
43}
44
45@end
46