@@ -5,35 +5,27 @@ import { Device } from "nativescript-preview-sdk";
55import { PluginComparisonMessages } from "./preview-app-constants" ;
66
77export class PreviewAppPluginsService implements IPreviewAppPluginsService {
8+ private previewAppVersionWarnings : IDictionary < string [ ] > = { } ;
9+
810 constructor ( private $fs : IFileSystem ,
911 private $logger : ILogger ,
1012 private $projectData : IProjectData ) { }
1113
1214 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+ }
2927
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 ) ) ;
3729 }
3830
3931 private getDevicePlugins ( device : Device ) : IStringDictionary {
@@ -54,5 +46,24 @@ export class PreviewAppPluginsService implements IPreviewAppPluginsService {
5446 return { } ;
5547 }
5648 }
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+ }
5768}
5869$injector . register ( "previewAppPluginsService" , PreviewAppPluginsService ) ;
0 commit comments