1// Copyright 2020-present 650 Industries. All rights reserved.
2
3#if __has_include(<EXUpdates/EXUpdatesService.h>)
4
5#import "EXUpdatesBinding.h"
6
7NS_ASSUME_NONNULL_BEGIN
8
9@interface EXUpdatesBinding ()
10
11@property (nonatomic, strong) NSString *experienceId;
12@property (nonatomic, weak) id<EXUpdatesBindingDelegate> updatesKernelService;
13@property (nonatomic, weak) id<EXUpdatesDatabaseBindingDelegate> databaseKernelService;
14
15@end
16
17@implementation EXUpdatesBinding : EXUpdatesService
18
19- (instancetype)initWithExperienceId:(NSString *)experienceId updatesKernelService:(id<EXUpdatesBindingDelegate>)updatesKernelService databaseKernelService:(id<EXUpdatesDatabaseBindingDelegate>)databaseKernelService
20{
21  if (self = [super init]) {
22    _experienceId = experienceId;
23    _updatesKernelService = updatesKernelService;
24    _databaseKernelService = databaseKernelService;
25  }
26  return self;
27}
28
29- (EXUpdatesConfig *)config
30{
31  return [_updatesKernelService configForExperienceId:_experienceId];
32}
33
34- (EXUpdatesDatabase *)database
35{
36  return _databaseKernelService.database;
37}
38
39- (EXUpdatesSelectionPolicy *)selectionPolicy
40{
41  return [_updatesKernelService selectionPolicyForExperienceId:_experienceId];
42}
43
44- (NSURL *)directory
45{
46  return _databaseKernelService.updatesDirectory;
47}
48
49- (nullable EXUpdatesUpdate *)launchedUpdate
50{
51  return [_updatesKernelService launchedUpdateForExperienceId:_experienceId];
52}
53
54- (nullable NSDictionary *)assetFilesMap
55{
56  return [_updatesKernelService assetFilesMapForExperienceId:_experienceId];
57}
58
59- (BOOL)isUsingEmbeddedAssets
60{
61  return [_updatesKernelService isUsingEmbeddedAssetsForExperienceId:_experienceId];
62}
63
64- (BOOL)isStarted
65{
66  return [_updatesKernelService isStartedForExperienceId:_experienceId];
67}
68
69- (BOOL)isEmergencyLaunch
70{
71  return [_updatesKernelService isEmergencyLaunchForExperienceId:_experienceId];
72}
73
74- (BOOL)canRelaunch
75{
76  return YES;
77}
78
79- (void)requestRelaunchWithCompletion:(EXUpdatesAppRelaunchCompletionBlock)completion
80{
81  return [_updatesKernelService requestRelaunchForExperienceId:_experienceId withCompletion:completion];
82}
83
84- (void)resetSelectionPolicy
85{
86  // no-op in managed
87}
88
89@end
90
91NS_ASSUME_NONNULL_END
92
93#endif
94