@@ -16,29 +16,41 @@ export class TNSRemotePackage implements IRemotePackage {
1616  serverUrl : string ; 
1717
1818  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 ; 
3332
34-            downloadSuccess ( tnsLocalPackage ) ; 
33+       downloadSuccess ( tnsLocalPackage ) ; 
3534
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+         } ) ; 
4254  } 
4355
4456  abortDownload ( abortSuccess ?: SuccessCallback < void > ,  abortError ?: ErrorCallback ) : void   { 
0 commit comments