@@ -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