1// Copyright © 2019-present 650 Industries. All rights reserved.
2
3#if __has_include(<EXSegment/EXSegment.h>)
4#import "EXScopedSegment.h"
5#import "EXConstantsBinding.h"
6#import <ExpoModulesCore/EXConstantsInterface.h>
7
8@interface EXScopedSegment ()
9
10@property (nonatomic, assign) BOOL isInExpoClient;
11
12@end
13
14@implementation EXScopedSegment
15
16- (void)setModuleRegistry:(EXModuleRegistry *)moduleRegistry
17{
18  _isInExpoClient = [((EXConstantsBinding *)[moduleRegistry getModuleImplementingProtocol:@protocol(EXConstantsInterface)]).appOwnership isEqualToString:@"expo"];
19}
20
21EX_EXPORT_METHOD_AS(setEnabledAsync,
22                    setEnabled:(BOOL)enabled
23                    withResolver:(EXPromiseResolveBlock)resolve
24                    rejecter:(EXPromiseRejectBlock)reject)
25{
26  if (_isInExpoClient) {
27    reject(@"E_UNSUPPORTED", @"Setting Segment's `enabled` is not supported in Expo Go.", nil);
28    return;
29  }
30
31  [super setEnabled:enabled withResolver:resolve rejecter:reject];
32}
33
34@end
35#endif
36