Skip to content

Commit 486f7ce

Browse files
committed
Standardise upload and download task responses
1 parent 7ff7870 commit 486f7ce

File tree

2 files changed

+166
-186
lines changed

2 files changed

+166
-186
lines changed

android/src/main/java/io/fullstack/firestack/storage/FirestackStorage.java

Lines changed: 45 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import com.google.android.gms.tasks.OnFailureListener;
3030
import com.google.android.gms.tasks.OnSuccessListener;
3131

32-
import com.google.firebase.storage.StorageException;
3332
import com.google.firebase.storage.StreamDownloadTask;
3433
import com.google.firebase.storage.UploadTask;
3534
import com.google.firebase.storage.FirebaseStorage;
@@ -237,44 +236,32 @@ public void doInBackground(StreamDownloadTask.TaskSnapshot taskSnapshot, InputSt
237236
}).addOnProgressListener(new OnProgressListener<StreamDownloadTask.TaskSnapshot>() {
238237
@Override
239238
public void onProgress(StreamDownloadTask.TaskSnapshot taskSnapshot) {
240-
WritableMap data = Arguments.createMap();
241-
data.putString("ref", taskSnapshot.getStorage().getBucket());
242-
double percentComplete = taskSnapshot.getTotalByteCount() == 0 ? 0.0f : 100.0f * (taskSnapshot.getBytesTransferred()) / (taskSnapshot.getTotalByteCount());
243-
data.putDouble("progress", percentComplete);
244-
Utils.sendEvent(mReactContext, STORAGE_DOWNLOAD_PROGRESS, data);
239+
Log.d(TAG, "Got download progress " + taskSnapshot);
240+
WritableMap event = getDownloadTaskAsMap(taskSnapshot);
241+
//TODO: No need for this if JS listeners are separated
242+
event.putString("eventName", STORAGE_DOWNLOAD_PROGRESS);
243+
Utils.sendEvent(getReactApplicationContext(), STORAGE_DOWNLOAD_PROGRESS, event);
245244
}
246245
}).addOnPausedListener(new OnPausedListener<StreamDownloadTask.TaskSnapshot>() {
247246
@Override
248247
public void onPaused(StreamDownloadTask.TaskSnapshot taskSnapshot) {
249-
WritableMap data = Arguments.createMap();
250-
data.putString("ref", taskSnapshot.getStorage().getBucket());
251-
Utils.sendEvent(mReactContext, STORAGE_DOWNLOAD_PAUSED, data);
248+
Log.d(TAG, "Download is paused " + taskSnapshot);
249+
WritableMap event = getDownloadTaskAsMap(taskSnapshot);
250+
//TODO: No need for this if JS listeners are separated
251+
event.putString("eventName", STORAGE_DOWNLOAD_PAUSED);
252+
Utils.sendEvent(getReactApplicationContext(), STORAGE_DOWNLOAD_PAUSED, event);
252253
}
253254
}).addOnSuccessListener(new OnSuccessListener<StreamDownloadTask.TaskSnapshot>() {
254255
@Override
255256
public void onSuccess(StreamDownloadTask.TaskSnapshot taskSnapshot) {
256-
final WritableMap data = Arguments.createMap();
257-
StorageReference ref = taskSnapshot.getStorage();
258-
data.putString("fullPath", ref.getPath());
259-
data.putString("bucket", ref.getBucket());
260-
data.putString("name", ref.getName());
261-
ref.getMetadata().addOnSuccessListener(new OnSuccessListener<StorageMetadata>() {
262-
@Override
263-
public void onSuccess(final StorageMetadata storageMetadata) {
264-
data.putMap("metadata", getMetadataAsMap(storageMetadata));
265-
callback.invoke(null, data);
266-
}
267-
})
268-
.addOnFailureListener(new OnFailureListener() {
269-
@Override
270-
public void onFailure(@NonNull Exception exception) {
271-
callback.invoke(makeErrorPayload(1, exception));
272-
}
273-
});
257+
Log.d(TAG, "Successfully downloaded file " + taskSnapshot);
258+
WritableMap resp = getDownloadTaskAsMap(taskSnapshot);
259+
callback.invoke(null, resp);
274260
}
275261
}).addOnFailureListener(new OnFailureListener() {
276262
@Override
277263
public void onFailure(@NonNull Exception exception) {
264+
Log.e(TAG, "Failed to download file " + exception.getMessage());
278265
callback.invoke(makeErrorPayload(1, exception));
279266
}
280267
});
@@ -305,49 +292,35 @@ public void putFile(final String path, final String localPath, final ReadableMap
305292
public void onFailure(@NonNull Exception exception) {
306293
// handle unsuccessful uploads
307294
Log.e(TAG, "Failed to upload file " + exception.getMessage());
308-
309-
WritableMap err = Arguments.createMap();
310-
err.putString("description", exception.getLocalizedMessage());
311-
312-
callback.invoke(err);
295+
callback.invoke(makeErrorPayload(1, exception));
313296
}
314297
})
315298
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
316299
@Override
317300
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
318301
Log.d(TAG, "Successfully uploaded file " + taskSnapshot);
319-
// taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
320-
WritableMap resp = getDownloadData(taskSnapshot);
302+
WritableMap resp = getUploadTaskAsMap(taskSnapshot);
321303
callback.invoke(null, resp);
322304
}
323305
})
324306
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
325307
@Override
326308
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
327-
double totalBytes = taskSnapshot.getTotalByteCount();
328-
double bytesTransferred = taskSnapshot.getBytesTransferred();
329-
double progress = (100.0 * bytesTransferred) / totalBytes;
330-
331-
System.out.println("Transferred " + bytesTransferred + "/" + totalBytes + "(" + progress + "% complete)");
332-
333-
if (progress >= 0) {
334-
WritableMap data = Arguments.createMap();
335-
data.putString("eventName", STORAGE_UPLOAD_PROGRESS);
336-
data.putDouble("progress", progress);
337-
Utils.sendEvent(getReactApplicationContext(), STORAGE_UPLOAD_PROGRESS, data);
338-
}
309+
Log.d(TAG, "Got upload progress " + taskSnapshot);
310+
WritableMap event = getUploadTaskAsMap(taskSnapshot);
311+
//TODO: No need for this if JS listeners are separated
312+
event.putString("eventName", STORAGE_UPLOAD_PROGRESS);
313+
Utils.sendEvent(getReactApplicationContext(), STORAGE_UPLOAD_PROGRESS, event);
339314
}
340315
})
341316
.addOnPausedListener(new OnPausedListener<UploadTask.TaskSnapshot>() {
342317
@Override
343318
public void onPaused(UploadTask.TaskSnapshot taskSnapshot) {
344-
System.out.println("Upload is paused");
345-
StorageMetadata d = taskSnapshot.getMetadata();
346-
String bucket = d.getBucket();
347-
WritableMap data = Arguments.createMap();
348-
data.putString("eventName", STORAGE_UPLOAD_PAUSED);
349-
data.putString("ref", bucket);
350-
Utils.sendEvent(getReactApplicationContext(), STORAGE_UPLOAD_PAUSED, data);
319+
Log.d(TAG, "Upload is paused " + taskSnapshot);
320+
WritableMap event = getUploadTaskAsMap(taskSnapshot);
321+
//TODO: No need for this if JS listeners are separated
322+
event.putString("eventName", STORAGE_UPLOAD_PAUSED);
323+
Utils.sendEvent(getReactApplicationContext(), STORAGE_UPLOAD_PAUSED, event);
351324
}
352325
});
353326
} catch (Exception ex) {
@@ -444,21 +417,28 @@ private String getRealPathFromURI(final String uri) {
444417
}
445418
}
446419

447-
private WritableMap getDownloadData(final UploadTask.TaskSnapshot taskSnapshot) {
448-
Uri downloadUrl = taskSnapshot.getDownloadUrl();
420+
private WritableMap getDownloadTaskAsMap(final StreamDownloadTask.TaskSnapshot taskSnapshot) {
421+
WritableMap resp = Arguments.createMap();
422+
resp.putDouble("bytesTransferred", taskSnapshot.getBytesTransferred());
423+
resp.putString("ref", taskSnapshot.getStorage().getPath());
424+
resp.putDouble("totalBytes", taskSnapshot.getTotalByteCount());
425+
426+
return resp;
427+
}
428+
429+
private WritableMap getUploadTaskAsMap(final UploadTask.TaskSnapshot taskSnapshot) {
449430
StorageMetadata d = taskSnapshot.getMetadata();
450431

451432
WritableMap resp = Arguments.createMap();
452-
resp.putString("downloadUrl", downloadUrl.toString());
453-
resp.putString("fullPath", d.getPath());
454-
resp.putString("bucket", d.getBucket());
455-
resp.putString("name", d.getName());
456-
457-
WritableMap metadataObj = Arguments.createMap();
458-
metadataObj.putString("cacheControl", d.getCacheControl());
459-
metadataObj.putString("contentDisposition", d.getContentDisposition());
460-
metadataObj.putString("contentType", d.getContentType());
461-
resp.putMap("metadata", metadataObj);
433+
resp.putDouble("bytesTransferred", taskSnapshot.getBytesTransferred());
434+
resp.putString("downloadUrl", taskSnapshot.getDownloadUrl() != null ? taskSnapshot.getDownloadUrl().toString() : null);
435+
resp.putString("ref", taskSnapshot.getStorage().getPath());
436+
resp.putDouble("totalBytes", taskSnapshot.getTotalByteCount());
437+
438+
if (taskSnapshot.getMetadata() != null) {
439+
WritableMap metadata = getMetadataAsMap(taskSnapshot.getMetadata());
440+
resp.putMap("metadata", metadata);
441+
}
462442

463443
return resp;
464444
}

0 commit comments

Comments
 (0)