Skip to content

Commit 4f0d74e

Browse files
committed
fix(backup): patch-package react-native-background-upload to return
server answer This will allow to do work depending on the server answer, like file conflict or quota exceeded. Upstream PR : Vydia/react-native-background-upload#337
1 parent 9537817 commit 4f0d74e

File tree

2 files changed

+40
-10
lines changed

2 files changed

+40
-10
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
diff --git a/node_modules/react-native-background-upload/android/src/main/java/com/vydia/RNUploader/GlobalRequestObserverDelegate.kt b/node_modules/react-native-background-upload/android/src/main/java/com/vydia/RNUploader/GlobalRequestObserverDelegate.kt
2+
index c89d495..5da9d14 100644
3+
--- a/node_modules/react-native-background-upload/android/src/main/java/com/vydia/RNUploader/GlobalRequestObserverDelegate.kt
4+
+++ b/node_modules/react-native-background-upload/android/src/main/java/com/vydia/RNUploader/GlobalRequestObserverDelegate.kt
5+
@@ -9,6 +9,7 @@ import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEm
6+
import net.gotev.uploadservice.data.UploadInfo
7+
import net.gotev.uploadservice.network.ServerResponse
8+
import net.gotev.uploadservice.observer.request.RequestObserverDelegate
9+
+import net.gotev.uploadservice.exceptions.UploadError
10+
11+
class GlobalRequestObserverDelegate(reactContext: ReactApplicationContext) : RequestObserverDelegate {
12+
private val TAG = "UploadReceiver"
13+
@@ -28,6 +29,10 @@ class GlobalRequestObserverDelegate(reactContext: ReactApplicationContext) : Req
14+
// Make sure we do not try to call getMessage() on a null object
15+
if (exception != null) {
16+
params.putString("error", exception.message)
17+
+ if (exception is UploadError) {
18+
+ params.putInt("responseCode", exception.serverResponse.code)
19+
+ params.putString("responseBody", String(exception.serverResponse.body, Charsets.US_ASCII))
20+
+ }
21+
} else {
22+
params.putString("error", "Unknown exception")
23+
}
24+
diff --git a/node_modules/react-native-background-upload/index.d.ts b/node_modules/react-native-background-upload/index.d.ts
25+
index 8b2a07c..80cff93 100644
26+
--- a/node_modules/react-native-background-upload/index.d.ts
27+
+++ b/node_modules/react-native-background-upload/index.d.ts
28+
@@ -11,6 +11,8 @@ declare module "react-native-background-upload" {
29+
30+
export interface ErrorData extends EventData {
31+
error: string
32+
+ responseCode: number
33+
+ responseBody: string
34+
}
35+
36+
export interface CompletedData extends EventData {

src/app/domain/backup/services/uploadMedia.android.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import RNBackgroundUpload, {
66
import { getMimeType } from '/app/domain/backup/services/getMedias'
77
import { Media, UploadMediaResult } from '/app/domain/backup/models/Media'
88

9-
import CozyClient, { IOCozyFile } from 'cozy-client'
9+
import CozyClient, { StackErrors, IOCozyFile } from 'cozy-client'
1010

1111
let currentUploadId: string | undefined
1212

@@ -50,16 +50,10 @@ export const uploadMedia = async (
5050
setCurrentUploadId(uploadId)
5151

5252
RNBackgroundUpload.addListener('error', uploadId, error => {
53-
// RNBackgroundUpload does not return status code and response body...
53+
const { errors } = JSON.parse(error.responseBody) as StackErrors
5454
reject({
55-
statusCode: -1,
56-
errors: [
57-
{
58-
status: -1,
59-
title: error.error,
60-
detail: error.error
61-
}
62-
]
55+
statusCode: error.responseCode,
56+
errors
6357
})
6458
})
6559
RNBackgroundUpload.addListener('cancelled', uploadId, data => {

0 commit comments

Comments
 (0)