Skip to content

Commit 0487fbc

Browse files
committed
iOS: Change how Cordova plugin scripts are discovered for loading.
This corresponds to the Android changes made in 7b8d858.
1 parent bffe531 commit 0487fbc

File tree

1 file changed

+24
-26
lines changed

1 file changed

+24
-26
lines changed

src/ios/CDVInjectView.m

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,40 +8,38 @@ - (void)pluginInitialize {
88
}
99

1010
- (void)pageDidLoad:(NSNotification *)event {
11-
// Read cordova.js and cordova_plugins.js.
11+
NSArray *filenames = [self getCordovaFiles];
12+
if (filenames == nil) {
13+
return;
14+
}
15+
1216
NSMutableArray *scripts = [NSMutableArray array];
13-
[scripts addObject:[self readJavaScriptFile:@"www/cordova"]];
14-
[scripts addObject:[self readJavaScriptFile:@"www/cordova_plugins"]];
15-
16-
// Read source for each plugin.
17-
for (NSDictionary *pluginParameters in [self parseCordovaPlugins]) {
18-
NSString *file = pluginParameters[@"file"];
19-
NSString *path = [[NSString stringWithFormat:@"www/%@", file] stringByDeletingPathExtension];
20-
[scripts addObject:[self readJavaScriptFile:path]];
17+
for (NSString *filename in filenames) {
18+
NSString *content = [self readResourceFile:filename];
19+
[scripts addObject:content];
2120
}
2221

2322
// Evaluate all concatenated sources at once.
24-
NSString *js = [scripts componentsJoinedByString:@"\n;\n"];
25-
[self.webViewEngine evaluateJavaScript:js completionHandler:^(id result, NSError *err) { }];
23+
NSString *expression = [scripts componentsJoinedByString:@"\n;\n"];
24+
[self.webViewEngine evaluateJavaScript:expression completionHandler:^(id result, NSError *err) { }];
2625
}
2726

28-
- (NSString*)readJavaScriptFile:(NSString*)resource {
29-
NSString *path = [[NSBundle mainBundle] pathForResource:resource ofType:@"js"];
30-
NSString *js = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
31-
return js;
27+
- (NSString*)readResourceFile:(NSString*)filename {
28+
NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:nil];
29+
return [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
3230
}
3331

34-
- (NSArray*)parseCordovaPlugins {
35-
NSString *js = [self readJavaScriptFile:@"www/cordova_plugins"];
36-
NSScanner *scanner = [NSScanner scannerWithString:js];
37-
[scanner scanUpToString:@"[" intoString:nil];
38-
NSString *substring = nil;
39-
[scanner scanUpToString:@"];" intoString:&substring];
40-
substring = [NSString stringWithFormat:@"%@]", substring];
41-
NSError *localError;
42-
NSData *data = [substring dataUsingEncoding:NSUTF8StringEncoding];
43-
NSArray *pluginObjects = [NSJSONSerialization JSONObjectWithData:data options:0 error:&localError];
44-
return pluginObjects;
32+
- (NSArray*)getCordovaFiles {
33+
NSString *manifest = [self readResourceFile:@"www/cordova-plugin-injectview.json"];
34+
NSData *data = [manifest dataUsingEncoding:NSUTF8StringEncoding];
35+
36+
NSError *error;
37+
NSArray *filenames = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
38+
if (filenames == nil) {
39+
NSLog(@"Failed to load Cordova script manifest.");
40+
}
41+
42+
return filenames;
4543
}
4644

4745
@end

0 commit comments

Comments
 (0)