@@ -5,35 +5,27 @@ import { Device } from "nativescript-preview-sdk";
5
5
import { PluginComparisonMessages } from "./preview-app-constants" ;
6
6
7
7
export class PreviewAppPluginsService implements IPreviewAppPluginsService {
8
+ private previewAppVersionWarnings : IDictionary < string [ ] > = { } ;
9
+
8
10
constructor ( private $fs : IFileSystem ,
9
11
private $logger : ILogger ,
10
12
private $projectData : IProjectData ) { }
11
13
12
14
public async comparePluginsOnDevice ( device : Device ) : Promise < void > {
13
- const devicePlugins = this . getDevicePlugins ( device ) ;
14
- const localPlugins = this . getLocalPlugins ( ) ;
15
-
16
- _ . keys ( localPlugins ) . forEach ( localPlugin => {
17
- const localPluginVersion = localPlugins [ localPlugin ] ;
18
- const devicePluginVersion = devicePlugins [ localPlugin ] ;
19
-
20
- this . $logger . trace ( `Comparing plugin ${ localPlugin } with localPluginVersion ${ localPluginVersion } and devicePluginVersion ${ devicePluginVersion } ` ) ;
21
-
22
- if ( devicePluginVersion ) {
23
- const localPluginVersionData = semver . coerce ( localPluginVersion ) ;
24
- const devicePluginVersionData = semver . coerce ( devicePluginVersion ) ;
25
-
26
- if ( localPluginVersionData . major !== devicePluginVersionData . major ) {
27
- this . $logger . warn ( util . format ( PluginComparisonMessages . LOCAL_PLUGIN_WITH_DIFFERENCE_IN_MAJOR_VERSION , localPlugin , localPluginVersion , devicePluginVersion ) ) ;
28
- }
15
+ if ( ! this . previewAppVersionWarnings [ device . previewAppVersion ] ) {
16
+ const devicePlugins = this . getDevicePlugins ( device ) ;
17
+ const localPlugins = this . getLocalPlugins ( ) ;
18
+ const warnings = _ . keys ( localPlugins )
19
+ . map ( localPlugin => {
20
+ const localPluginVersion = localPlugins [ localPlugin ] ;
21
+ const devicePluginVersion = devicePlugins [ localPlugin ] ;
22
+ return this . getWarningForPlugin ( localPlugin , localPluginVersion , devicePluginVersion , device . id ) ;
23
+ } )
24
+ . filter ( item => ! ! item ) ;
25
+ this . previewAppVersionWarnings [ device . previewAppVersion ] = warnings ;
26
+ }
29
27
30
- if ( localPluginVersionData . major === devicePluginVersionData . major && localPluginVersionData . minor > devicePluginVersionData . minor ) {
31
- this . $logger . warn ( util . format ( PluginComparisonMessages . LOCAL_PLUGIN_WITH_GREATHER_MINOR_VERSION , localPlugin , localPluginVersion , devicePluginVersion ) ) ;
32
- }
33
- } else {
34
- this . $logger . warn ( util . format ( PluginComparisonMessages . PLUGIN_NOT_INCLUDED_IN_PREVIEW_APP , localPlugin , device . id ) ) ;
35
- }
36
- } ) ;
28
+ this . previewAppVersionWarnings [ device . previewAppVersion ] . map ( warning => this . $logger . warn ( warning ) ) ;
37
29
}
38
30
39
31
private getDevicePlugins ( device : Device ) : IStringDictionary {
@@ -54,5 +46,24 @@ export class PreviewAppPluginsService implements IPreviewAppPluginsService {
54
46
return { } ;
55
47
}
56
48
}
49
+
50
+ private getWarningForPlugin ( localPlugin : string , localPluginVersion : string , devicePluginVersion : string , deviceId : string ) : string {
51
+ this . $logger . trace ( `Comparing plugin ${ localPlugin } with localPluginVersion ${ localPluginVersion } and devicePluginVersion ${ devicePluginVersion } ` ) ;
52
+
53
+ if ( devicePluginVersion ) {
54
+ const localPluginVersionData = semver . coerce ( localPluginVersion ) ;
55
+ const devicePluginVersionData = semver . coerce ( devicePluginVersion ) ;
56
+
57
+ if ( localPluginVersionData . major !== devicePluginVersionData . major ) {
58
+ return util . format ( PluginComparisonMessages . LOCAL_PLUGIN_WITH_DIFFERENCE_IN_MAJOR_VERSION , localPlugin , localPluginVersion , devicePluginVersion ) ;
59
+ } else if ( localPluginVersionData . minor > devicePluginVersionData . minor ) {
60
+ return util . format ( PluginComparisonMessages . LOCAL_PLUGIN_WITH_GREATHER_MINOR_VERSION , localPlugin , localPluginVersion , devicePluginVersion ) ;
61
+ }
62
+
63
+ return null ;
64
+ }
65
+
66
+ return util . format ( PluginComparisonMessages . PLUGIN_NOT_INCLUDED_IN_PREVIEW_APP , localPlugin , deviceId ) ;
67
+ }
57
68
}
58
69
$injector . register ( "previewAppPluginsService" , PreviewAppPluginsService ) ;
0 commit comments