1// Copyright 2015-present 650 Industries. All rights reserved. 2 3#import "EXShellManager.h" 4#import "EXFileSystemManager.h" 5 6// Returns if the experience id is the main shell experience. 7BOOL EXIsShellExperience(NSString *experienceId) { 8 return [[EXShellManager sharedInstance].shellManifestUrl containsString:experienceId]; 9} 10 11@implementation EXFileSystemManager 12 13- (NSString *)bundleDirectoryForExperienceId:(NSString *)experienceId 14{ 15 if (!EXIsShellExperience(experienceId)) { 16 return nil; 17 } 18 return [NSBundle mainBundle].bundlePath; 19} 20 21- (NSArray<NSString *> *)bundledAssetsForExperienceId:(NSString *)experienceId 22{ 23 if (!EXIsShellExperience(experienceId)) { 24 return nil; 25 } 26 27 static NSArray<NSString *> *bundledAssets = nil; 28 static dispatch_once_t once; 29 dispatch_once(&once, ^{ 30 NSString *manifestBundlePath = [[NSBundle mainBundle] pathForResource:kEXShellManifestResourceName ofType:@"json"]; 31 NSData *data = [NSData dataWithContentsOfFile:manifestBundlePath]; 32 if (data.length == 0) { 33 return; 34 } 35 __block NSError *error; 36 id manifest = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 37 if (error) { 38 NSLog(@"Error parsing bundled manifest: %@", error); 39 return; 40 } 41 bundledAssets = manifest[@"bundledAssets"]; 42 }); 43 return bundledAssets; 44} 45 46@end 47 48