Skip to content
This repository was archived by the owner on Mar 16, 2019. It is now read-only.

Commit d41ed22

Browse files
committed
Add progress implementation for android
1 parent 0099ae1 commit d41ed22

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

src/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public String getName() {
4141
}
4242

4343
@ReactMethod
44-
public void fetchBlob(String method, String url, ReadableMap headers, String body, final Callback callback) {
44+
public void fetchBlob(String taskId, String method, String url, ReadableMap headers, String body, final Callback callback) {
4545

4646
try {
4747
Uri uri = Uri.parse(url);
@@ -71,7 +71,7 @@ public void fetchBlob(String method, String url, ReadableMap headers, String bod
7171
}
7272

7373
// create handler
74-
AsyncHttpResponseHandler handler = new RNFetchBlobHandler(callback);
74+
AsyncHttpResponseHandler handler = new RNFetchBlobHandler(this.getReactApplicationContext(), taskId, callback);
7575

7676
// send request
7777
switch(method.toLowerCase()) {
@@ -95,7 +95,7 @@ public void fetchBlob(String method, String url, ReadableMap headers, String bod
9595
}
9696

9797
@ReactMethod
98-
public void fetchBlobForm(String method, String url, ReadableMap headers, ReadableArray body, final Callback callback) {
98+
public void fetchBlobForm(String taskId, String method, String url, ReadableMap headers, ReadableArray body, final Callback callback) {
9999

100100
try {
101101
Uri uri = Uri.parse(url);
@@ -156,7 +156,7 @@ public void fetchBlobForm(String method, String url, ReadableMap headers, Readab
156156
}
157157

158158
// create handler
159-
AsyncHttpResponseHandler handler = new RNFetchBlobHandler(callback);
159+
AsyncHttpResponseHandler handler = new RNFetchBlobHandler(this.getReactApplicationContext(), taskId, callback);
160160

161161
// send request
162162
switch(method.toLowerCase()) {

src/android/src/main/java/com/RNFetchBlob/RNFetchBlobHandler.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.RNFetchBlob;
22

33
import com.facebook.react.bridge.Callback;
4+
import com.facebook.react.bridge.WritableMap;
5+
import com.facebook.react.bridge.Arguments;
6+
import com.facebook.react.bridge.ReactContext;
7+
import com.facebook.react.modules.core.DeviceEventManagerModule;
48
import com.loopj.android.http.AsyncHttpResponseHandler;
59
import com.loopj.android.http.Base64;
610

@@ -9,9 +13,14 @@
913
public class RNFetchBlobHandler extends AsyncHttpResponseHandler {
1014

1115
Callback onResponse;
16+
ReactContext mCtx;
17+
String mTaskId;
18+
19+
RNFetchBlobHandler(ReactContext ctx, String taskId, Callback onResponse) {
1220

13-
RNFetchBlobHandler(Callback onResponse) {
1421
this.onResponse = onResponse;
22+
this.mTaskId = taskId;
23+
this.mCtx = ctx;
1524
}
1625

1726
@Override
@@ -23,6 +32,16 @@ public void onSuccess(int statusCode, Header[] headers, byte[] binaryData) {
2332
@Override
2433
public void onProgress(long bytesWritten, long totalSize) {
2534
super.onProgress(bytesWritten, totalSize);
35+
36+
// on progress, emit RNFetchBlobProgress event with ticketId, bytesWritten, and totalSize
37+
WritableMap args = Arguments.createMap();
38+
args.putString("taskId", this.mTaskId);
39+
args.putString("written", String.valueOf(bytesWritten));
40+
args.putString("total", String.valueOf(totalSize));
41+
42+
// emit event to js context
43+
this.mCtx.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
44+
.emit("RNFetchBlobProgress" + this.mTaskId, args);
2645
}
2746

2847
@Override

0 commit comments

Comments
 (0)