1// Copyright 2015-present 650 Industries. All rights reserved.
2
3#import "EXConstantsBinding.h"
4#import "EXUnversioned.h"
5
6@interface EXConstantsBinding ()
7
8@property (nonatomic, strong) NSDictionary *unversionedConstants;
9
10@end
11
12@implementation EXConstantsBinding : EXConstantsService
13
14@synthesize appOwnership = _appOwnership;
15
16- (instancetype)initWithExperienceId:(NSString *)experienceId andParams:(NSDictionary *)params
17{
18  if (self = [super initWithExperienceId:experienceId]) {
19    _unversionedConstants = params[@"constants"];
20    if (_unversionedConstants && _unversionedConstants[@"appOwnership"]) {
21      _appOwnership = _unversionedConstants[@"appOwnership"];
22    }
23  }
24  return self;
25}
26
27- (NSDictionary *)constants
28{
29  NSMutableDictionary *constants = [[super constants] mutableCopy];
30
31  [constants setValue:[self expoClientVersion] forKey:@"expoVersion"];
32
33  if (_unversionedConstants) {
34    [constants addEntriesFromDictionary:_unversionedConstants];
35  }
36  return constants;
37}
38
39- (NSString *)expoClientVersion
40{
41  NSString *expoClientVersion = _unversionedConstants[EX_UNVERSIONED(@"expoRuntimeVersion")];
42  if (expoClientVersion) {
43    return expoClientVersion;
44  } else {
45    // not correct in standalone apps
46    return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
47  }
48}
49
50@end
51