diff --git a/packages/storage/android/src/main/java/io/invertase/firebase/storage/ReactNativeFirebaseStorageModule.java b/packages/storage/android/src/main/java/io/invertase/firebase/storage/ReactNativeFirebaseStorageModule.java index 4f887f6b41..66e9e9f0fa 100644 --- a/packages/storage/android/src/main/java/io/invertase/firebase/storage/ReactNativeFirebaseStorageModule.java +++ b/packages/storage/android/src/main/java/io/invertase/firebase/storage/ReactNativeFirebaseStorageModule.java @@ -61,14 +61,18 @@ public void onCatalystInstanceDestroy() { */ @ReactMethod public void delete(String appName, String url, final Promise promise) { - StorageReference reference = getReferenceFromUrl(url, appName); - reference.delete().addOnCompleteListener(task -> { - if (task.isSuccessful()) { - promise.resolve(null); - } else { - promiseRejectStorageException(promise, Objects.requireNonNull(task.getException())); - } - }); + try { + StorageReference reference = getReferenceFromUrl(url, appName); + reference.delete().addOnCompleteListener(task -> { + if (task.isSuccessful()) { + promise.resolve(null); + } else { + promiseRejectStorageException(promise, Objects.requireNonNull(task.getException())); + } + }); + } catch (Exception e) { + promiseRejectStorageException(promise, e); + } } /** @@ -76,16 +80,20 @@ public void delete(String appName, String url, final Promise promise) { */ @ReactMethod public void getDownloadURL(String appName, final String url, final Promise promise) { - StorageReference reference = getReferenceFromUrl(url, appName); - Task downloadTask = reference.getDownloadUrl(); - - downloadTask.addOnCompleteListener(task -> { - if (task.isSuccessful()) { - promise.resolve(task.getResult() != null ? task.getResult().toString() : null); - } else { - promiseRejectStorageException(promise, task.getException()); - } - }); + try { + StorageReference reference = getReferenceFromUrl(url, appName); + Task downloadTask = reference.getDownloadUrl(); + + downloadTask.addOnCompleteListener(task -> { + if (task.isSuccessful()) { + promise.resolve(task.getResult() != null ? task.getResult().toString() : null); + } else { + promiseRejectStorageException(promise, task.getException()); + } + }); + } catch (Exception e) { + promiseRejectStorageException(promise, e); + } } /** @@ -93,49 +101,61 @@ public void getDownloadURL(String appName, final String url, final Promise promi */ @ReactMethod public void getMetadata(String appName, String url, Promise promise) { - StorageReference reference = getReferenceFromUrl(url, appName); - reference.getMetadata().addOnCompleteListener(getExecutor(), task -> { - if (task.isSuccessful()) { - promise.resolve(getMetadataAsMap(task.getResult())); - } else { - promiseRejectStorageException(promise, task.getException()); - } - }); + try { + StorageReference reference = getReferenceFromUrl(url, appName); + reference.getMetadata().addOnCompleteListener(getExecutor(), task -> { + if (task.isSuccessful()) { + promise.resolve(getMetadataAsMap(task.getResult())); + } else { + promiseRejectStorageException(promise, task.getException()); + } + }); + } catch (Exception e) { + promiseRejectStorageException(promise, e); + } } @ReactMethod public void list(String appName, String url, ReadableMap listOptions, Promise promise) { - StorageReference reference = getReferenceFromUrl(url, appName); - Task list; + try { + StorageReference reference = getReferenceFromUrl(url, appName); + Task list; - int maxResults = listOptions.getInt("maxResults"); - - if (listOptions.hasKey("pageToken")) { - String pageToken = listOptions.getString("pageToken"); - list = reference.list(maxResults, Objects.requireNonNull(pageToken)); - } else { - list = reference.list(maxResults); - } + int maxResults = listOptions.getInt("maxResults"); - list.addOnCompleteListener(getExecutor(), task -> { - if (task.isSuccessful()) { - promise.resolve(getListResultAsMap(task.getResult())); + if (listOptions.hasKey("pageToken")) { + String pageToken = listOptions.getString("pageToken"); + list = reference.list(maxResults, Objects.requireNonNull(pageToken)); } else { - promiseRejectStorageException(promise, task.getException()); + list = reference.list(maxResults); } - }); + + list.addOnCompleteListener(getExecutor(), task -> { + if (task.isSuccessful()) { + promise.resolve(getListResultAsMap(task.getResult())); + } else { + promiseRejectStorageException(promise, task.getException()); + } + }); + } catch (Exception e) { + promiseRejectStorageException(promise, e); + } } @ReactMethod public void listAll(String appName, String url, Promise promise) { - StorageReference reference = getReferenceFromUrl(url, appName); - reference.listAll().addOnCompleteListener(getExecutor(), task -> { - if (task.isSuccessful()) { - promise.resolve(getListResultAsMap(task.getResult())); - } else { - promiseRejectStorageException(promise, task.getException()); - } - }); + try { + StorageReference reference = getReferenceFromUrl(url, appName); + reference.listAll().addOnCompleteListener(getExecutor(), task -> { + if (task.isSuccessful()) { + promise.resolve(getListResultAsMap(task.getResult())); + } else { + promiseRejectStorageException(promise, task.getException()); + } + }); + } catch (Exception e) { + promiseRejectStorageException(promise, e); + } } /** @@ -148,16 +168,20 @@ public void updateMetadata( ReadableMap metadataMap, final Promise promise ) { - StorageReference reference = getReferenceFromUrl(url, appName); - StorageMetadata metadata = buildMetadataFromMap(metadataMap, null); - - reference.updateMetadata(metadata).addOnCompleteListener(getExecutor(), task -> { - if (task.isSuccessful()) { - promise.resolve(getMetadataAsMap(task.getResult())); - } else { - promiseRejectStorageException(promise, task.getException()); - } - }); + try { + StorageReference reference = getReferenceFromUrl(url, appName); + StorageMetadata metadata = buildMetadataFromMap(metadataMap, null); + + reference.updateMetadata(metadata).addOnCompleteListener(getExecutor(), task -> { + if (task.isSuccessful()) { + promise.resolve(getMetadataAsMap(task.getResult())); + } else { + promiseRejectStorageException(promise, task.getException()); + } + }); + } catch (Exception e) { + promiseRejectStorageException(promise, e); + } } /** @@ -214,15 +238,18 @@ public void writeToFile( ); return; } - - StorageReference reference = getReferenceFromUrl(url, appName); - ReactNativeFirebaseStorageDownloadTask storageTask = new ReactNativeFirebaseStorageDownloadTask( - taskId, - reference, - appName - ); - storageTask.begin(getTransactionalExecutor(), localFilePath); - storageTask.addOnCompleteListener(getTransactionalExecutor(), promise); + try { + StorageReference reference = getReferenceFromUrl(url, appName); + ReactNativeFirebaseStorageDownloadTask storageTask = new ReactNativeFirebaseStorageDownloadTask( + taskId, + reference, + appName + ); + storageTask.begin(getTransactionalExecutor(), localFilePath); + storageTask.addOnCompleteListener(getTransactionalExecutor(), promise); + } catch (Exception e) { + promiseRejectStorageException(promise, e); + } } /** @@ -238,14 +265,18 @@ public void putString( int taskId, Promise promise ) { - StorageReference reference = getReferenceFromUrl(url, appName); - ReactNativeFirebaseStorageUploadTask storageTask = new ReactNativeFirebaseStorageUploadTask( - taskId, - reference, - appName - ); - storageTask.begin(getTransactionalExecutor(), string, format, metadataMap); - storageTask.addOnCompleteListener(getTransactionalExecutor(),promise); + try { + StorageReference reference = getReferenceFromUrl(url, appName); + ReactNativeFirebaseStorageUploadTask storageTask = new ReactNativeFirebaseStorageUploadTask( + taskId, + reference, + appName + ); + storageTask.begin(getTransactionalExecutor(), string, format, metadataMap); + storageTask.addOnCompleteListener(getTransactionalExecutor(),promise); + } catch (Exception e) { + promiseRejectStorageException(promise, e); + } } /** @@ -260,14 +291,18 @@ public void putFile( int taskId, Promise promise ) { - StorageReference reference = getReferenceFromUrl(url, appName); - ReactNativeFirebaseStorageUploadTask storageTask = new ReactNativeFirebaseStorageUploadTask( - taskId, - reference, - appName - ); - storageTask.begin(getTransactionalExecutor(),localFilePath, metadata); - storageTask.addOnCompleteListener(getTransactionalExecutor(), promise); + try { + StorageReference reference = getReferenceFromUrl(url, appName); + ReactNativeFirebaseStorageUploadTask storageTask = new ReactNativeFirebaseStorageUploadTask( + taskId, + reference, + appName + ); + storageTask.begin(getTransactionalExecutor(),localFilePath, metadata); + storageTask.addOnCompleteListener(getTransactionalExecutor(), promise); + } catch (Exception e) { + promiseRejectStorageException(promise, e); + } } @ReactMethod @@ -290,7 +325,7 @@ private String getBucketFromUrl(String url) { return url.substring(0, pathWithBucketName.indexOf("/") + 5); } - private StorageReference getReferenceFromUrl(String url, String appName) { + private StorageReference getReferenceFromUrl(String url, String appName) throws IllegalArgumentException { FirebaseApp firebaseApp = FirebaseApp.getInstance(appName); FirebaseStorage firebaseStorage = FirebaseStorage.getInstance( firebaseApp,