@@ -28,28 +28,16 @@ export class LiveSyncService extends EventEmitter implements ILiveSyncService {
28
28
protected $logger : ILogger ,
29
29
private $processService : IProcessService ,
30
30
private $hooksService : IHooksService ,
31
+ private $pluginsService : IPluginsService ,
31
32
protected $injector : IInjector ) {
32
33
super ( ) ;
33
34
}
34
35
35
- @hook ( "liveSync" )
36
36
public async liveSync ( deviceDescriptors : ILiveSyncDeviceInfo [ ] ,
37
37
liveSyncData : ILiveSyncInfo ) : Promise < void > {
38
38
const projectData = this . $projectDataService . getProjectData ( liveSyncData . projectDir ) ;
39
- // In case liveSync is called for a second time for the same projectDir.
40
- const isAlreadyLiveSyncing = this . liveSyncProcessesInfo [ projectData . projectDir ] && ! this . liveSyncProcessesInfo [ projectData . projectDir ] . isStopped ;
41
- this . setLiveSyncProcessInfo ( liveSyncData . projectDir , deviceDescriptors ) ;
42
-
43
- const deviceDescriptorsForInitialSync = isAlreadyLiveSyncing ? _ . differenceBy ( deviceDescriptors , this . liveSyncProcessesInfo [ projectData . projectDir ] . deviceDescriptors , deviceDescriptorPrimaryKey ) : deviceDescriptors ;
44
-
45
- await this . initialSync ( projectData , deviceDescriptorsForInitialSync , liveSyncData ) ;
46
-
47
- if ( ! liveSyncData . skipWatcher && deviceDescriptors && deviceDescriptors . length ) {
48
- // Should be set after prepare
49
- this . $injector . resolve < DeprecatedUsbLiveSyncService > ( "usbLiveSyncService" ) . isInitialized = true ;
50
-
51
- await this . startWatcher ( projectData , liveSyncData ) ;
52
- }
39
+ await this . $pluginsService . ensureAllDependenciesAreInstalled ( projectData ) ;
40
+ await this . liveSyncOperation ( deviceDescriptors , liveSyncData , projectData ) ;
53
41
}
54
42
55
43
public async stopLiveSync ( projectDir : string , deviceIdentifiers ?: string [ ] ) : Promise < void > {
@@ -125,6 +113,25 @@ export class LiveSyncService extends EventEmitter implements ILiveSyncService {
125
113
this . $logger . info ( `Successfully synced application ${ liveSyncResultInfo . deviceAppData . appIdentifier } on device ${ liveSyncResultInfo . deviceAppData . device . deviceInfo . identifier } .` ) ;
126
114
}
127
115
116
+ @hook ( "liveSync" )
117
+ private async liveSyncOperation ( deviceDescriptors : ILiveSyncDeviceInfo [ ] ,
118
+ liveSyncData : ILiveSyncInfo , projectData : IProjectData ) : Promise < void > {
119
+ // In case liveSync is called for a second time for the same projectDir.
120
+ const isAlreadyLiveSyncing = this . liveSyncProcessesInfo [ projectData . projectDir ] && ! this . liveSyncProcessesInfo [ projectData . projectDir ] . isStopped ;
121
+ this . setLiveSyncProcessInfo ( liveSyncData . projectDir , deviceDescriptors ) ;
122
+
123
+ const deviceDescriptorsForInitialSync = isAlreadyLiveSyncing ? _ . differenceBy ( deviceDescriptors , this . liveSyncProcessesInfo [ projectData . projectDir ] . deviceDescriptors , deviceDescriptorPrimaryKey ) : deviceDescriptors ;
124
+
125
+ await this . initialSync ( projectData , deviceDescriptorsForInitialSync , liveSyncData ) ;
126
+
127
+ if ( ! liveSyncData . skipWatcher && deviceDescriptors && deviceDescriptors . length ) {
128
+ // Should be set after prepare
129
+ this . $injector . resolve < DeprecatedUsbLiveSyncService > ( "usbLiveSyncService" ) . isInitialized = true ;
130
+
131
+ await this . startWatcher ( projectData , liveSyncData ) ;
132
+ }
133
+ }
134
+
128
135
private setLiveSyncProcessInfo ( projectDir : string , deviceDescriptors : ILiveSyncDeviceInfo [ ] ) : void {
129
136
this . liveSyncProcessesInfo [ projectDir ] = this . liveSyncProcessesInfo [ projectDir ] || Object . create ( null ) ;
130
137
this . liveSyncProcessesInfo [ projectDir ] . actionsChain = this . liveSyncProcessesInfo [ projectDir ] . actionsChain || Promise . resolve ( ) ;
0 commit comments