NativeScript / plugins

@nativescript plugins to help with your developments.
https://docs.nativescript.org/plugins/index.html
Apache License 2.0
190 stars 108 forks source link

Nativescript Angular IOS : Domain=NSURLErrorDomain Code=-1001 "The request timed out." when uploading files #558

Closed Yogendhar1919 closed 9 months ago

Yogendhar1919 commented 9 months ago

When I am trying to upload files in the slower networks I get the below error in the xcode

timeout

`uploadPhotos(): void { let message; this.photos = this.service.getPhotosToUpload(); if (this.photos !== null && this.photos.length > 0) { const photosList$ = new Array<Observable<boolean[]>>;

        this.photos.forEach(photo=> {
            const observable = this.submitPhoto(photo)
            if (observable) {
                photosList$.push(observable);
            }

        });

        zip(photosList$)
            .pipe(
                switchMap((flags: boolean[][], index: number) => {
                    let totalNotuploaded = 0;
                    let totalUploaded = 0;
                    const results =[]
                    flags.forEach((flag) => {
                        totalNotuploaded += flag.filter(falses => !falses).length;
                        totalUploaded += flag.filter(trues => trues).length;
                    });
                    results.push([totalNotuploaded, totalUploaded])
                    return of(results);
                })
            ).subscribe((results: number[][]) => {
                let notuploaded = results[0][0] ;
                let uploaded = results[0][1];

                this.message = `Uploaded ${uploaded} Photo(s).`;

                if (notuploaded > 0) {
                    this.message += `Errors uploading ${notuploaded}`

                }
            });

    } else {
        this.message = `Uploaded 0 Photos.`;
    }
}

submitPhoto(photo: PhotoWrapper): Observable<boolean[]> {

    const photosToUpload$ = new Array<Observable<boolean>>();
    const photosToUpload = photo.filter((filter) => !filter.Uploaded);

    photosToUpload.forEach(photo => {

        photo.FileContent = this.servic.getFileAsBase64String(new Path(photo.File.directory as any, photo.File.relativePath));
        const observable = this.service.upload(photo);
        photosToUpload$.push(
            observable.pipe(
                catchError(() => {
                    return of(null)
                }),
                switchMap((result: PhotoResult) => {
                    return of(result && result?.flag ? true : false)
                })
            ));
    });
    if (photosToUpload$ && photosToUpload$.length) {
        return forkJoin(photosToUpload$);
    } else { return null; }

}

//upload service

upload(photosData: PhotoWrapper): Observable<PhotoResult> {
    let headers = this.authService.getAuthHeader();
    let url = this.configurationService.uploadPhotoUrl();

    return this.http.post<boolean>(this.configurationService.uploadPhotoUrl(), photoDto, { headers: headers, observe: 'response' }).pipe(
        map((result) =>( {flag: result.body, wrapper: photosData} as PhotoResult)),

        );
}

}`

When connected to a strong network LTE 3 or more bars ,5g or WIFI , I am able to upload files without any issues.

How can I increase the timeout in Nativescript or how can I prevent the NSURLErrorDomain Code=-1001 "The request timed out." error please help

edusperoni commented 9 months ago

this was already answered in your other issue: https://github.com/NativeScript/plugins/issues/557#issuecomment-1852847611