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