@@ -16,29 +16,41 @@ export class TNSRemotePackage implements IRemotePackage {
16
16
serverUrl : string ;
17
17
18
18
download ( downloadSuccess : SuccessCallback < ILocalPackage > , downloadError ?: ErrorCallback , downloadProgress ?: SuccessCallback < DownloadProgress > ) : void {
19
- getFile ( this . downloadUrl ) . then (
20
- ( file : File ) => {
21
- let tnsLocalPackage : ILocalPackage = new TNSLocalPackage ( ) ;
22
- tnsLocalPackage . localPath = file . path ;
23
- tnsLocalPackage . deploymentKey = this . deploymentKey ;
24
- tnsLocalPackage . description = this . description ;
25
- tnsLocalPackage . label = this . label ;
26
- tnsLocalPackage . appVersion = this . appVersion ;
27
- tnsLocalPackage . isMandatory = this . isMandatory ;
28
- tnsLocalPackage . packageHash = this . packageHash ;
29
- tnsLocalPackage . isFirstRun = false ;
30
- // TODO (low prio) for failedInstall, see https://github.com/Microsoft/cordova-plugin-code-push/blob/055d9e625d47d56e707d9624c9a14a37736516bb/www/remotePackage.ts#L55 (but prolly not too relevant)
31
- tnsLocalPackage . failedInstall = false ;
32
- tnsLocalPackage . serverUrl = this . serverUrl ;
19
+ const onDownloadSuccess = ( file : File ) => {
20
+ let tnsLocalPackage : ILocalPackage = new TNSLocalPackage ( ) ;
21
+ tnsLocalPackage . localPath = file . path ;
22
+ tnsLocalPackage . deploymentKey = this . deploymentKey ;
23
+ tnsLocalPackage . description = this . description ;
24
+ tnsLocalPackage . label = this . label ;
25
+ tnsLocalPackage . appVersion = this . appVersion ;
26
+ tnsLocalPackage . isMandatory = this . isMandatory ;
27
+ tnsLocalPackage . packageHash = this . packageHash ;
28
+ tnsLocalPackage . isFirstRun = false ;
29
+ // TODO (low prio) for failedInstall, see https://github.com/Microsoft/cordova-plugin-code-push/blob/055d9e625d47d56e707d9624c9a14a37736516bb/www/remotePackage.ts#L55 (but prolly not too relevant)
30
+ tnsLocalPackage . failedInstall = false ;
31
+ tnsLocalPackage . serverUrl = this . serverUrl ;
33
32
34
- downloadSuccess ( tnsLocalPackage ) ;
33
+ downloadSuccess ( tnsLocalPackage ) ;
35
34
36
- new TNSAcquisitionManager ( this . deploymentKey , this . serverUrl ) . reportStatusDownload ( tnsLocalPackage ) ;
37
- } ,
38
- ( e : any ) => {
39
- downloadError ( new Error ( "Could not access local package. " + e ) ) ;
40
- }
41
- ) ;
35
+ new TNSAcquisitionManager ( this . deploymentKey , this . serverUrl ) . reportStatusDownload ( tnsLocalPackage ) ;
36
+ } ;
37
+
38
+ // download, with a silly but effective retry mechanism
39
+ getFile ( this . downloadUrl )
40
+ . then ( onDownloadSuccess )
41
+ . catch ( ( ) => {
42
+ setTimeout ( ( ) => {
43
+ getFile ( this . downloadUrl )
44
+ . then ( onDownloadSuccess )
45
+ . catch ( ( ) => {
46
+ setTimeout ( ( ) => {
47
+ getFile ( this . downloadUrl )
48
+ . then ( onDownloadSuccess )
49
+ . catch ( ( e : any ) => downloadError ( new Error ( "Could not download remote package. " + e ) ) ) ;
50
+ } , 3000 ) ;
51
+ } ) ;
52
+ } , 3000 ) ;
53
+ } ) ;
42
54
}
43
55
44
56
abortDownload ( abortSuccess ?: SuccessCallback < void > , abortError ?: ErrorCallback ) : void {
0 commit comments