Browse Source

Merge pull request #396 from sonudoo/download-interruption-android-bugfix

Bug fix for download interruption promise rejection
Travis Nuttall 4 years ago
parent
commit
4305ef8175
No account linked to committer's email address

+ 13
- 3
android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java View File

@@ -530,16 +530,26 @@ public class RNFetchBlobReq extends BroadcastReceiver implements Runnable {
530 530
                 }
531 531
                 break;
532 532
             case FileStorage:
533
+                ResponseBody responseBody = resp.body();
534
+
533 535
                 try {
534 536
                     // In order to write response data to `destPath` we have to invoke this method.
535 537
                     // It uses customized response body which is able to report download progress
536 538
                     // and write response data to destination path.
537
-                    resp.body().bytes();
539
+                    responseBody.bytes();
538 540
                 } catch (Exception ignored) {
539 541
 //                    ignored.printStackTrace();
540 542
                 }
541
-                this.destPath = this.destPath.replace("?append=true", "");
542
-                callback.invoke(null, RNFetchBlobConst.RNFB_RESPONSE_PATH, this.destPath);
543
+
544
+                RNFetchBlobFileResp rnFetchBlobFileResp = (RNFetchBlobFileResp) responseBody;
545
+
546
+                if(rnFetchBlobFileResp != null && rnFetchBlobFileResp.isDownloadComplete() == false){
547
+                    callback.invoke("RNFetchBlob failed. Download interrupted.", null);
548
+                }
549
+                else {
550
+                    this.destPath = this.destPath.replace("?append=true", "");
551
+                    callback.invoke(null, RNFetchBlobConst.RNFB_RESPONSE_PATH, this.destPath);
552
+                }
543 553
                 break;
544 554
             default:
545 555
                 try {

+ 4
- 0
android/src/main/java/com/RNFetchBlob/Response/RNFetchBlobFileResp.java View File

@@ -68,6 +68,10 @@ public class RNFetchBlobFileResp extends ResponseBody {
68 68
         return originalBody.contentLength();
69 69
     }
70 70
 
71
+    public boolean isDownloadComplete() {
72
+        return bytesDownloaded == contentLength();
73
+    }
74
+
71 75
     @Override
72 76
     public BufferedSource source() {
73 77
         ProgressReportingSource countable = new ProgressReportingSource();