@@ -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