react-native-compressor 1.8.17 → 1.8.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -1
- package/android/build.gradle +2 -2
- package/android/src/main/java/com/reactnativecompressor/CompressorModule.kt +5 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/HttpCallManager.kt +41 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/Uploader.kt +70 -33
- package/android/src/oldarch/CompressorSpec.kt +1 -0
- package/ios/Compressor.mm +4 -1
- package/ios/CompressorManager.swift +5 -0
- package/ios/Utils/Uploader.swift +18 -1
- package/ios/Utils/UrlTaskManager.swift +58 -0
- package/lib/commonjs/Spec/NativeCompressor.js.map +1 -1
- package/lib/commonjs/index.js +6 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/Uploader.js +13 -2
- package/lib/commonjs/utils/Uploader.js.map +1 -1
- package/lib/module/Spec/NativeCompressor.js.map +1 -1
- package/lib/module/index.js +2 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/Uploader.js +11 -1
- package/lib/module/utils/Uploader.js.map +1 -1
- package/lib/typescript/Spec/NativeCompressor.d.ts +1 -0
- package/lib/typescript/Spec/NativeCompressor.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +3 -3
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/Uploader.d.ts +3 -1
- package/lib/typescript/utils/Uploader.d.ts.map +1 -1
- package/package.json +13 -2
- package/src/Spec/NativeCompressor.ts +2 -0
- package/src/index.tsx +2 -0
- package/src/utils/Uploader.tsx +18 -1
package/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<img height="150" src="/media/logo.png"
|
|
2
|
+
<img height="150" src="/media/logo.png" />
|
|
3
3
|
</div>
|
|
4
|
+
|
|
4
5
|
<br/>
|
|
5
6
|
|
|
6
7
|
<div align="center">
|
|
@@ -15,6 +16,11 @@
|
|
|
15
16
|
|
|
16
17
|
**REACT-NATIVE-COMPRESSOR** is a react-native package, which helps us to Compress `Image`, `Video`, and `Audio` before uploading, same like **Whatsapp** without knowing the compression `algorithm`
|
|
17
18
|
|
|
19
|
+
<div align="center">
|
|
20
|
+
<h4>Auto/Manual Compression | Background Upload | Download File | Create Video Thumbnail</h4>
|
|
21
|
+
</div>
|
|
22
|
+
<br/>
|
|
23
|
+
|
|
18
24
|
<div align="center">
|
|
19
25
|
<pre>
|
|
20
26
|
<img height="90" src="/media/whatsapp_logo.png"/> <img height="90" src="/media/compress_media.png"/>
|
|
@@ -66,11 +72,13 @@ We should use **react-native-compressor** instead of **FFmpeg** because **react-
|
|
|
66
72
|
- [Video Api Docs](#video-1)
|
|
67
73
|
- [Audio](#audio)
|
|
68
74
|
- [Background Upload](#background-upload)
|
|
75
|
+
- [Cancel Background Upload](#cancel-background-upload)
|
|
69
76
|
- [Download File](#download)
|
|
70
77
|
- [Create Video Thumbnail and Clear Cache](#create-video-thumbnail-and-clear-cache)
|
|
71
78
|
|
|
72
79
|
* [Other Utilities](#api)
|
|
73
80
|
- [Background Upload](#background-upload-1)
|
|
81
|
+
- [Cancel Background Upload](#cancel-background-upload-1)
|
|
74
82
|
- [Get Metadata Of Video](#get-metadata-of-video)
|
|
75
83
|
- [Get Real Path](#get-real-path)
|
|
76
84
|
- [Get Temp file Path](#get-temp-file-path)
|
|
@@ -311,6 +319,53 @@ const uploadResult = await backgroundUpload(
|
|
|
311
319
|
);
|
|
312
320
|
```
|
|
313
321
|
|
|
322
|
+
### Cancel Background Upload
|
|
323
|
+
for cancellation Upload, there is two ways
|
|
324
|
+
1. by calling, cancelUpload function
|
|
325
|
+
2. by calling abort function
|
|
326
|
+
|
|
327
|
+
##### cancelUpload (support single and all)
|
|
328
|
+
```js
|
|
329
|
+
import { cancelUpload, backgroundUpload } from 'react-native-compressor';
|
|
330
|
+
|
|
331
|
+
// if we will call without passing any param then it will remove last pushed uploading
|
|
332
|
+
cancelUpload()
|
|
333
|
+
|
|
334
|
+
// if you pass true as second param then it will cancel all the uploading
|
|
335
|
+
cancelUpload("",true)
|
|
336
|
+
|
|
337
|
+
// if there is multiple files are uploading, and you wanna cancel specific uploading then you pass specific video id like this
|
|
338
|
+
let videoId=''
|
|
339
|
+
const uploadResult = await backgroundUpload(
|
|
340
|
+
url,
|
|
341
|
+
fileUrl,
|
|
342
|
+
{ httpMethod: 'PUT', getCancellationId: (cancellationId) =>(videoId = cancellationId), },
|
|
343
|
+
(written, total) => {
|
|
344
|
+
console.log(written, total);
|
|
345
|
+
}
|
|
346
|
+
);
|
|
347
|
+
cancelUpload(videoId)
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
##### cancel by calling abort
|
|
351
|
+
```js
|
|
352
|
+
import { backgroundUpload } from 'react-native-compressor';
|
|
353
|
+
|
|
354
|
+
const abortSignalRef = useRef(new AbortController());
|
|
355
|
+
|
|
356
|
+
const uploadResult = await backgroundUpload(
|
|
357
|
+
url,
|
|
358
|
+
fileUrl,
|
|
359
|
+
{ httpMethod: 'PUT' },
|
|
360
|
+
(written, total) => {
|
|
361
|
+
console.log(written, total);
|
|
362
|
+
},
|
|
363
|
+
abortSignalRef.current.signal
|
|
364
|
+
);
|
|
365
|
+
|
|
366
|
+
abortSignalRef.current?.abort(); // this will cancel uploading
|
|
367
|
+
```
|
|
368
|
+
|
|
314
369
|
### Download File
|
|
315
370
|
|
|
316
371
|
```js
|
|
@@ -487,12 +542,25 @@ export declare type UploaderOptions = (
|
|
|
487
542
|
) & {
|
|
488
543
|
headers?: Record<string, string>;
|
|
489
544
|
httpMethod?: UploaderHttpMethod;
|
|
545
|
+
getCancellationId?: (cancellationId: string) => void;
|
|
490
546
|
};
|
|
491
547
|
```
|
|
492
548
|
|
|
493
549
|
**Note:** some of the uploader code is borrowed from [Expo](https://github.com/expo/expo)
|
|
494
550
|
I tested file uploader on this backend [Nodejs-File-Uploader](https://github.com/numandev1/nodejs-file-uploader)
|
|
495
551
|
|
|
552
|
+
### Cancel Background Upload
|
|
553
|
+
for cancellation Upload, there is two ways, you can use one of it
|
|
554
|
+
- ##### cancelUpload: ( uuid?: string, shouldCancelAll?: boolean) => void
|
|
555
|
+
1. If we call without passing any param then it will remove the last pushed uploading
|
|
556
|
+
2. If you pass true as the second param then it will cancel all the uploading
|
|
557
|
+
3. if there is multiple files are uploading, and you wanna cancel specific uploading then you pass a specific video ID like this
|
|
558
|
+
|
|
559
|
+
- ##### we can use [AbortController](https://github.com/facebook/react-native/blob/255fef5263afdf9933ba2f8a3dbcbca39ea9928a/packages/react-native/types/modules/globals.d.ts#L531) in backgroundUpload [Usage](#cancel-background-upload)
|
|
560
|
+
`const abortSignalRef = useRef(new AbortController());`
|
|
561
|
+
|
|
562
|
+
`abortSignalRef.current?.abort();`
|
|
563
|
+
|
|
496
564
|
### Download
|
|
497
565
|
|
|
498
566
|
- ##### download: ( fileUrl: string, downloadProgress?: (progress: number) => void, progressDivider?: number ) => Promise< string >
|
package/android/build.gradle
CHANGED
|
@@ -125,6 +125,11 @@ class CompressorModule(private val reactContext: ReactApplicationContext) : Comp
|
|
|
125
125
|
uploader.upload(fileUrl, options, reactContext, promise)
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
+
@ReactMethod
|
|
129
|
+
override fun cancelUpload(uuid: String,shouldCancelAll:Boolean) {
|
|
130
|
+
uploader.cancelUpload(uuid,shouldCancelAll)
|
|
131
|
+
}
|
|
132
|
+
|
|
128
133
|
@ReactMethod
|
|
129
134
|
override fun download(
|
|
130
135
|
fileUrl: String,
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
package com.reactnativecompressor.Utils
|
|
2
|
+
|
|
3
|
+
import okhttp3.Call
|
|
4
|
+
|
|
5
|
+
class HttpCallManager {
|
|
6
|
+
private var resumableCalls: MutableMap<String, Call?> = HashMap()
|
|
7
|
+
|
|
8
|
+
fun registerTask(call: Call, uuid: String) {
|
|
9
|
+
resumableCalls[uuid] = call
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
fun taskForId(uuid: String): Call? {
|
|
13
|
+
return resumableCalls[uuid]
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// will use in future
|
|
17
|
+
fun downloadTaskForId(uuid: String): Call? {
|
|
18
|
+
return taskForId(uuid)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
fun uploadTaskForId(uuid: String): Call? {
|
|
22
|
+
return taskForId(uuid)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
fun taskPop(): Call? {
|
|
26
|
+
val lastUuid = resumableCalls.keys.lastOrNull()
|
|
27
|
+
val lastCall = resumableCalls.remove(lastUuid)
|
|
28
|
+
return lastCall
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
fun unregisterTask(uuid: String) {
|
|
32
|
+
resumableCalls.remove(uuid)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
fun cancelAllTasks() {
|
|
36
|
+
for ((_, call) in resumableCalls) {
|
|
37
|
+
call?.cancel()
|
|
38
|
+
}
|
|
39
|
+
resumableCalls.clear()
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -26,36 +26,45 @@ import java.net.URLConnection
|
|
|
26
26
|
import java.util.concurrent.TimeUnit
|
|
27
27
|
|
|
28
28
|
class Uploader(private val reactContext: ReactApplicationContext) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
29
|
+
val TAG = "asyncTaskUploader"
|
|
30
|
+
var client: OkHttpClient? = null
|
|
31
|
+
val MIN_EVENT_DT_MS: Long = 100
|
|
32
|
+
val httpCallManager = HttpCallManager()
|
|
33
|
+
|
|
34
|
+
fun upload(
|
|
35
|
+
fileUriString: String,
|
|
36
|
+
_options: ReadableMap,
|
|
37
|
+
reactContext: ReactApplicationContext,
|
|
38
|
+
promise: Promise
|
|
39
|
+
) {
|
|
40
|
+
val options: UploaderOptions = convertReadableMapToUploaderOptions(_options)
|
|
41
|
+
val url = options.url
|
|
42
|
+
val uuid = options.uuid
|
|
43
|
+
val progressListener: CountingRequestListener = object : CountingRequestListener {
|
|
44
|
+
private var mLastUpdate: Long = -1
|
|
45
|
+
override fun onProgress(bytesWritten: Long, contentLength: Long) {
|
|
46
|
+
val currentTime = System.currentTimeMillis()
|
|
47
|
+
|
|
48
|
+
// Throttle events. Sending too many events will block the JS event loop.
|
|
49
|
+
// Make sure to send the last event when we're at 100%.
|
|
50
|
+
if (currentTime > mLastUpdate + MIN_EVENT_DT_MS || bytesWritten == contentLength) {
|
|
51
|
+
mLastUpdate = currentTime
|
|
52
|
+
EventEmitterHandler.sendUploadProgressEvent(bytesWritten, contentLength, uuid)
|
|
48
53
|
}
|
|
49
54
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
}
|
|
56
|
+
val request = createUploadRequest(
|
|
57
|
+
url, fileUriString, options
|
|
58
|
+
) { requestBody -> CountingRequestBody(requestBody, progressListener) }
|
|
59
|
+
|
|
60
|
+
okHttpClient?.let {
|
|
61
|
+
val call = it.newCall(request)
|
|
62
|
+
httpCallManager.registerTask(call,uuid)
|
|
63
|
+
call.enqueue(
|
|
64
|
+
object : Callback {
|
|
56
65
|
override fun onFailure(call: Call, e: IOException) {
|
|
57
66
|
Log.e(TAG, e.message.toString())
|
|
58
|
-
promise.reject(TAG, e.message
|
|
67
|
+
promise.reject(TAG, e.message)
|
|
59
68
|
}
|
|
60
69
|
|
|
61
70
|
override fun onResponse(call: Call, response: Response) {
|
|
@@ -67,12 +76,12 @@ class Uploader(private val reactContext: ReactApplicationContext) {
|
|
|
67
76
|
promise.resolve(param)
|
|
68
77
|
}
|
|
69
78
|
})
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
79
|
+
} ?: run {
|
|
80
|
+
promise.reject(UploaderOkHttpNullException())
|
|
74
81
|
}
|
|
75
82
|
|
|
83
|
+
}
|
|
84
|
+
|
|
76
85
|
@get:Synchronized
|
|
77
86
|
private val okHttpClient: OkHttpClient?
|
|
78
87
|
get() {
|
|
@@ -87,7 +96,12 @@ class Uploader(private val reactContext: ReactApplicationContext) {
|
|
|
87
96
|
}
|
|
88
97
|
|
|
89
98
|
@Throws(IOException::class)
|
|
90
|
-
private fun createUploadRequest(
|
|
99
|
+
private fun createUploadRequest(
|
|
100
|
+
url: String,
|
|
101
|
+
fileUriString: String,
|
|
102
|
+
options: UploaderOptions,
|
|
103
|
+
decorator: RequestBodyDecorator
|
|
104
|
+
): Request {
|
|
91
105
|
val fileUri = Uri.parse(slashifyFilePath(fileUriString))
|
|
92
106
|
fileUri.checkIfFileExists()
|
|
93
107
|
|
|
@@ -101,7 +115,11 @@ class Uploader(private val reactContext: ReactApplicationContext) {
|
|
|
101
115
|
}
|
|
102
116
|
|
|
103
117
|
@SuppressLint("NewApi")
|
|
104
|
-
private fun createRequestBody(
|
|
118
|
+
private fun createRequestBody(
|
|
119
|
+
options: UploaderOptions,
|
|
120
|
+
decorator: RequestBodyDecorator,
|
|
121
|
+
file: File
|
|
122
|
+
): RequestBody {
|
|
105
123
|
return when (options.uploadType) {
|
|
106
124
|
UploadType.BINARY_CONTENT -> {
|
|
107
125
|
val mimeType: String? = if (options.mimeType?.isNotEmpty() == true) {
|
|
@@ -122,7 +140,11 @@ class Uploader(private val reactContext: ReactApplicationContext) {
|
|
|
122
140
|
val mimeType: String = options.mimeType ?: URLConnection.guessContentTypeFromName(file.name)
|
|
123
141
|
|
|
124
142
|
val fieldName = options.fieldName ?: file.name
|
|
125
|
-
bodyBuilder.addFormDataPart(
|
|
143
|
+
bodyBuilder.addFormDataPart(
|
|
144
|
+
fieldName,
|
|
145
|
+
file.name,
|
|
146
|
+
decorator.decorate(file.asRequestBody(mimeType.toMediaTypeOrNull()))
|
|
147
|
+
)
|
|
126
148
|
bodyBuilder.build()
|
|
127
149
|
}
|
|
128
150
|
}
|
|
@@ -175,4 +197,19 @@ class Uploader(private val reactContext: ReactApplicationContext) {
|
|
|
175
197
|
}
|
|
176
198
|
return responseHeaders
|
|
177
199
|
}
|
|
200
|
+
|
|
201
|
+
fun cancelUpload(uuid:String,shouldCancelAll:Boolean) {
|
|
202
|
+
if(shouldCancelAll)
|
|
203
|
+
{
|
|
204
|
+
httpCallManager.cancelAllTasks()
|
|
205
|
+
}
|
|
206
|
+
else if(uuid=="")
|
|
207
|
+
{
|
|
208
|
+
httpCallManager.taskPop()?.cancel()
|
|
209
|
+
}
|
|
210
|
+
else
|
|
211
|
+
{
|
|
212
|
+
httpCallManager.uploadTaskForId(uuid)?.cancel()
|
|
213
|
+
}
|
|
214
|
+
}
|
|
178
215
|
}
|
|
@@ -23,6 +23,7 @@ abstract class CompressorSpec(context: ReactApplicationContext?) : ReactContextB
|
|
|
23
23
|
abstract fun compress(fileUrl: String, optionMap: ReadableMap, promise: Promise)
|
|
24
24
|
abstract fun cancelCompression(uuid: String)
|
|
25
25
|
abstract fun upload(fileUrl: String, options: ReadableMap, promise: Promise)
|
|
26
|
+
abstract fun cancelUpload(uuid: String, shouldCancelAll:Boolean)
|
|
26
27
|
|
|
27
28
|
abstract fun download(fileUrl: String, options: ReadableMap, promise: Promise)
|
|
28
29
|
abstract fun activateBackgroundTask(options: ReadableMap, promise: Promise)
|
package/ios/Compressor.mm
CHANGED
|
@@ -39,7 +39,10 @@ RCT_EXTERN_METHOD(upload:(NSString *)fileUrl
|
|
|
39
39
|
withResolver:(RCTPromiseResolveBlock)resolve
|
|
40
40
|
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
41
41
|
|
|
42
|
-
RCT_EXTERN_METHOD(
|
|
42
|
+
RCT_EXTERN_METHOD(cancelUpload:(NSString *)uuid
|
|
43
|
+
withShouldCancelAll:(BOOL*)shouldCancelAll)
|
|
44
|
+
|
|
45
|
+
RCT_EXTERN_METHOD(download:(NSString *)fileUrlu
|
|
43
46
|
withOptions:(NSDictionary *)options
|
|
44
47
|
withResolver:(RCTPromiseResolveBlock)resolve
|
|
45
48
|
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
@@ -86,6 +86,11 @@ class Compressor: RCTEventEmitter {
|
|
|
86
86
|
uploader.upload(filePath: filePath, options: options, resolve: resolve, reject: reject)
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
+
@objc(cancelUpload:withShouldCancelAll:)
|
|
90
|
+
func cancelUpload(uuid: String,shouldCancelAll:Bool) -> Void {
|
|
91
|
+
uploader.cancelUpload(uuid: uuid,shouldCancelAll: shouldCancelAll)
|
|
92
|
+
}
|
|
93
|
+
|
|
89
94
|
@objc(download:withOptions:withResolver:withRejecter:)
|
|
90
95
|
func download(filePath: String, options: [String: Any], resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) -> Void {
|
|
91
96
|
Downloader.downloadFileAndSaveToCache(filePath, uuid: options["uuid"] as! String,progressDivider: options["progressDivider"] as? Int ?? 0) { downloadedPath in
|
package/ios/Utils/Uploader.swift
CHANGED
|
@@ -29,6 +29,8 @@ struct UploadError: Error {
|
|
|
29
29
|
class Uploader : NSObject, URLSessionTaskDelegate{
|
|
30
30
|
var uploadResolvers: [String: RCTPromiseResolveBlock] = [:]
|
|
31
31
|
var uploadRejectors: [String: RCTPromiseRejectBlock] = [:]
|
|
32
|
+
var currentTask: URLSessionDataTask?
|
|
33
|
+
private lazy var taskManager = UrlTaskManager()
|
|
32
34
|
|
|
33
35
|
func upload(filePath: String, options: [String: Any], resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) -> Void {
|
|
34
36
|
let fileUrl = Utils.makeValidUri(filePath: filePath)
|
|
@@ -97,10 +99,25 @@ class Uploader : NSObject, URLSessionTaskDelegate{
|
|
|
97
99
|
let errorMessage = String(format: "Invalid upload type: '%@'.", options["uploadType"] as? String ?? "")
|
|
98
100
|
reject("ERR_FILESYSTEM_INVALID_UPLOAD_TYPE", errorMessage, nil)
|
|
99
101
|
}
|
|
100
|
-
|
|
102
|
+
taskManager.registerTask(task, uuid: uuid)
|
|
101
103
|
task.resume()
|
|
102
104
|
|
|
103
105
|
}
|
|
106
|
+
|
|
107
|
+
func cancelUpload(uuid:String,shouldCancelAll:Bool) {
|
|
108
|
+
if(shouldCancelAll==true)
|
|
109
|
+
{
|
|
110
|
+
taskManager.cancelAllTasks()
|
|
111
|
+
} else if(uuid=="")
|
|
112
|
+
{
|
|
113
|
+
taskManager.taskPop()?.cancel()
|
|
114
|
+
}
|
|
115
|
+
else
|
|
116
|
+
{
|
|
117
|
+
taskManager.uploadTaskForId(uuid)?.cancel()
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
}
|
|
104
121
|
|
|
105
122
|
func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
|
|
106
123
|
guard let uuid = session.configuration.identifier else {return}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
//
|
|
2
|
+
// UrlTaskManager.swift
|
|
3
|
+
// react-native-compressor
|
|
4
|
+
//
|
|
5
|
+
// Created by Numan on 14/11/2023.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
class UrlTaskManager {
|
|
11
|
+
private var resumableDownloads:[String: URLSessionTask] = [:]
|
|
12
|
+
|
|
13
|
+
func registerTask(_ task: URLSessionTask, uuid: String) {
|
|
14
|
+
resumableDownloads[uuid] = task
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
func taskForId(_ uuid: String) -> URLSessionTask? {
|
|
18
|
+
return resumableDownloads[uuid]
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
// will use in future
|
|
24
|
+
func downloadTaskForId(_ uuid: String) -> URLSessionDownloadTask? {
|
|
25
|
+
let task = taskForId(uuid)
|
|
26
|
+
return task as? URLSessionDownloadTask
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
func uploadTaskForId(_ uuid: String) -> URLSessionUploadTask? {
|
|
30
|
+
let task = taskForId(uuid)
|
|
31
|
+
return task as? URLSessionUploadTask
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
func taskPop() -> URLSessionTask? {
|
|
35
|
+
if !resumableDownloads.isEmpty {
|
|
36
|
+
let uuids = Array(resumableDownloads.keys)
|
|
37
|
+
let lastUuid = uuids.last
|
|
38
|
+
|
|
39
|
+
if let lastTask = resumableDownloads[lastUuid!] {
|
|
40
|
+
resumableDownloads.removeValue(forKey: lastUuid!)
|
|
41
|
+
return lastTask
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return nil
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
func unregisterTask(_ uuid: String) {
|
|
49
|
+
resumableDownloads.removeValue(forKey: uuid)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
func cancelAllTasks() {
|
|
53
|
+
for (_, task) in resumableDownloads {
|
|
54
|
+
task.cancel()
|
|
55
|
+
}
|
|
56
|
+
resumableDownloads.removeAll()
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","getEnforcing","exports","default"],"sourceRoot":"../../../src","sources":["Spec/NativeCompressor.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","getEnforcing","exports","default"],"sourceRoot":"../../../src","sources":["Spec/NativeCompressor.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAsCpCC,gCAAmB,CAACC,YAAY,CAAO,YAAY,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -39,6 +39,12 @@ Object.defineProperty(exports, "backgroundUpload", {
|
|
|
39
39
|
return _utils.backgroundUpload;
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
+
Object.defineProperty(exports, "cancelUpload", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _utils.cancelUpload;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
42
48
|
Object.defineProperty(exports, "clearCache", {
|
|
43
49
|
enumerable: true,
|
|
44
50
|
get: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Video","_interopRequireDefault","require","_Audio","_Image","_utils","obj","__esModule","default","_default","Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getFileSize","backgroundUpload","createVideoThumbnail","clearCache","download","UploadType","UploaderHttpMethod","exports"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_Video","_interopRequireDefault","require","_Audio","_Image","_utils","obj","__esModule","default","_default","Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getFileSize","backgroundUpload","createVideoThumbnail","clearCache","download","UploadType","UploaderHttpMethod","exports"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAciB,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAsBF;EACbC,KAAK,EAALA,cAAK;EACLC,KAAK,EAALA,cAAK;EACLC,KAAK,EAALA,cAAK;EACLC,UAAU,EAAVA,iBAAU;EACVC,MAAM,EAANA,aAAM;EACNC,gBAAgB,EAAhBA,uBAAgB;EAChBC,WAAW,EAAXA,kBAAW;EACXC,gBAAgB,EAAhBA,uBAAgB;EAChBC,WAAW,EAAXA,kBAAW;EACXC,gBAAgB,EAAhBA,uBAAgB;EAChBC,oBAAoB,EAApBA,2BAAoB;EACpBC,UAAU,EAAVA,iBAAU;EACVC,QAAQ,EAARA,eAAQ;EACRC,UAAU,EAAVA,iBAAU;EACVC,kBAAkB,EAAlBA;AACF,CAAC;AAAAC,OAAA,CAAAjB,OAAA,GAAAC,QAAA"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.backgroundUpload = exports.UploaderHttpMethod = exports.UploadType = void 0;
|
|
6
|
+
exports.cancelUpload = exports.backgroundUpload = exports.UploaderHttpMethod = exports.UploadType = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _Main = require("../Main");
|
|
9
9
|
var _index = require("./index");
|
|
@@ -21,7 +21,13 @@ let UploaderHttpMethod = /*#__PURE__*/function (UploaderHttpMethod) {
|
|
|
21
21
|
return UploaderHttpMethod;
|
|
22
22
|
}({});
|
|
23
23
|
exports.UploaderHttpMethod = UploaderHttpMethod;
|
|
24
|
-
const
|
|
24
|
+
const cancelUpload = function () {
|
|
25
|
+
let uuid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
26
|
+
let shouldCancelAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
27
|
+
return _Main.Compressor.cancelUpload(uuid, shouldCancelAll);
|
|
28
|
+
};
|
|
29
|
+
exports.cancelUpload = cancelUpload;
|
|
30
|
+
const backgroundUpload = async (url, fileUrl, options, onProgress, abortSignal) => {
|
|
25
31
|
const uuid = (0, _index.uuidv4)();
|
|
26
32
|
let subscription;
|
|
27
33
|
try {
|
|
@@ -35,6 +41,10 @@ const backgroundUpload = async (url, fileUrl, options, onProgress) => {
|
|
|
35
41
|
if (_reactNative.Platform.OS === 'android' && fileUrl.includes('file://')) {
|
|
36
42
|
fileUrl = fileUrl.replace('file://', '');
|
|
37
43
|
}
|
|
44
|
+
if (options !== null && options !== void 0 && options.getCancellationId) {
|
|
45
|
+
options === null || options === void 0 ? void 0 : options.getCancellationId(uuid);
|
|
46
|
+
}
|
|
47
|
+
abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener('abort', () => cancelUpload(uuid));
|
|
38
48
|
const result = await _Main.Compressor.upload(fileUrl, {
|
|
39
49
|
uuid,
|
|
40
50
|
method: options.httpMethod,
|
|
@@ -49,6 +59,7 @@ const backgroundUpload = async (url, fileUrl, options, onProgress) => {
|
|
|
49
59
|
if (subscription) {
|
|
50
60
|
subscription.remove();
|
|
51
61
|
}
|
|
62
|
+
abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener('abort', () => cancelUpload(uuid));
|
|
52
63
|
}
|
|
53
64
|
};
|
|
54
65
|
exports.backgroundUpload = backgroundUpload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_Main","_index","CompressEventEmitter","NativeEventEmitter","Compressor","UploadType","exports","UploaderHttpMethod","backgroundUpload","url","fileUrl","options","onProgress","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_Main","_index","CompressEventEmitter","NativeEventEmitter","Compressor","UploadType","exports","UploaderHttpMethod","cancelUpload","uuid","arguments","length","undefined","shouldCancelAll","backgroundUpload","url","fileUrl","options","onProgress","abortSignal","uuidv4","subscription","addListener","event","data","written","total","Platform","OS","includes","replace","getCancellationId","addEventListener","result","upload","method","httpMethod","headers","uploadType","remove","removeEventListener"],"sourceRoot":"../../../src","sources":["utils/Uploader.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AADA,MAAMG,oBAAoB,GAAG,IAAIC,+BAAkB,CAACC,gBAAU,CAAC;AAAC,IAEpDC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAAC,OAAA,CAAAD,UAAA,GAAAA,UAAA;AAAA,IAKVE,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAAAD,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AA+BvB,MAAMC,YAGJ,GAAG,SAAAA,CAAA,EAAwC;EAAA,IAAvCC,IAAI,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAAA,IAAEG,eAAe,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAC7C,OAAON,gBAAU,CAACI,YAAY,CAACC,IAAI,EAAEI,eAAe,CAAC;AACvD,CAAC;AAACP,OAAA,CAAAE,YAAA,GAAAA,YAAA;AAEK,MAAMM,gBAAgB,GAAG,MAAAA,CAC9BC,GAAW,EACXC,OAAe,EACfC,OAAwB,EACxBC,UAAqD,EACrDC,WAAyB,KACR;EACjB,MAAMV,IAAI,GAAG,IAAAW,aAAM,EAAC,CAAC;EACrB,IAAIC,YAAqC;EACzC,IAAI;IACF,IAAIH,UAAU,EAAE;MACdG,YAAY,GAAGnB,oBAAoB,CAACoB,WAAW,CAC7C,gBAAgB,EACfC,KAAU,IAAK;QACd,IAAIA,KAAK,CAACd,IAAI,KAAKA,IAAI,EAAE;UACvBS,UAAU,CAACK,KAAK,CAACC,IAAI,CAACC,OAAO,EAAEF,KAAK,CAACC,IAAI,CAACE,KAAK,CAAC;QAClD;MACF,CACF,CAAC;IACH;IACA,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAIZ,OAAO,CAACa,QAAQ,CAAC,SAAS,CAAC,EAAE;MAC5Db,OAAO,GAAGA,OAAO,CAACc,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAC1C;IAEA,IAAIb,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEc,iBAAiB,EAAE;MAC9Bd,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEc,iBAAiB,CAACtB,IAAI,CAAC;IAClC;IAEAU,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEa,gBAAgB,CAAC,OAAO,EAAE,MAAMxB,YAAY,CAACC,IAAI,CAAC,CAAC;IAEhE,MAAMwB,MAAM,GAAG,MAAM7B,gBAAU,CAAC8B,MAAM,CAAClB,OAAO,EAAE;MAC9CP,IAAI;MACJ0B,MAAM,EAAElB,OAAO,CAACmB,UAAU;MAC1BC,OAAO,EAAEpB,OAAO,CAACoB,OAAO;MACxBC,UAAU,EAAErB,OAAO,CAACqB,UAAU;MAC9B,GAAGrB,OAAO;MACVF;IACF,CAAC,CAAC;IACF,OAAOkB,MAAM;EACf,CAAC,SAAS;IACR;IACA,IAAIZ,YAAY,EAAE;MAChBA,YAAY,CAACkB,MAAM,CAAC,CAAC;IACvB;IACApB,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEqB,mBAAmB,CAAC,OAAO,EAAE,MAAMhC,YAAY,CAACC,IAAI,CAAC,CAAC;EACrE;AACF,CAAC;AAACH,OAAA,CAAAQ,gBAAA,GAAAA,gBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["Spec/NativeCompressor.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["Spec/NativeCompressor.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAsClD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC"}
|
package/lib/module/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import Video from './Video';
|
|
2
2
|
import Audio from './Audio';
|
|
3
3
|
import Image from './Image';
|
|
4
|
-
import { getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, getFileSize, backgroundUpload, createVideoThumbnail, download, clearCache, UploadType, UploaderHttpMethod } from './utils';
|
|
5
|
-
export { Video, Audio, Image, backgroundUpload, download,
|
|
4
|
+
import { getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, getFileSize, backgroundUpload, cancelUpload, createVideoThumbnail, download, clearCache, UploadType, UploaderHttpMethod } from './utils';
|
|
5
|
+
export { Video, Audio, Image, backgroundUpload, cancelUpload, download,
|
|
6
6
|
//type
|
|
7
7
|
getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, createVideoThumbnail, clearCache, getFileSize, UploadType, UploaderHttpMethod };
|
|
8
8
|
export default {
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getFileSize","backgroundUpload","createVideoThumbnail","download","clearCache","UploadType","UploaderHttpMethod"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,SAAS;AAE3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,SACEC,UAAU,EACVC,MAAM,EACNC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,oBAAoB,EACpBC,QAAQ,EACRC,UAAU,EACVC,UAAU,EACVC,kBAAkB,QACb,SAAS;AAEhB,
|
|
1
|
+
{"version":3,"names":["Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getFileSize","backgroundUpload","cancelUpload","createVideoThumbnail","download","clearCache","UploadType","UploaderHttpMethod"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,SAAS;AAE3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,SACEC,UAAU,EACVC,MAAM,EACNC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,YAAY,EACZC,oBAAoB,EACpBC,QAAQ,EACRC,UAAU,EACVC,UAAU,EACVC,kBAAkB,QACb,SAAS;AAEhB,SACEf,KAAK,EACLC,KAAK,EACLC,KAAK,EACLO,gBAAgB,EAChBC,YAAY,EACZE,QAAQ;AACR;AACAT,UAAU,EACVC,MAAM,EACNC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBI,oBAAoB,EACpBE,UAAU,EACVL,WAAW,EACXM,UAAU,EACVC,kBAAkB;AAGpB,eAAe;EACbf,KAAK;EACLC,KAAK;EACLC,KAAK;EACLC,UAAU;EACVC,MAAM;EACNC,gBAAgB;EAChBC,WAAW;EACXC,gBAAgB;EAChBC,WAAW;EACXC,gBAAgB;EAChBE,oBAAoB;EACpBE,UAAU;EACVD,QAAQ;EACRE,UAAU;EACVC;AACF,CAAC"}
|
|
@@ -13,7 +13,12 @@ export let UploaderHttpMethod = /*#__PURE__*/function (UploaderHttpMethod) {
|
|
|
13
13
|
UploaderHttpMethod["PATCH"] = "PATCH";
|
|
14
14
|
return UploaderHttpMethod;
|
|
15
15
|
}({});
|
|
16
|
-
export const
|
|
16
|
+
export const cancelUpload = function () {
|
|
17
|
+
let uuid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
18
|
+
let shouldCancelAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
19
|
+
return Compressor.cancelUpload(uuid, shouldCancelAll);
|
|
20
|
+
};
|
|
21
|
+
export const backgroundUpload = async (url, fileUrl, options, onProgress, abortSignal) => {
|
|
17
22
|
const uuid = uuidv4();
|
|
18
23
|
let subscription;
|
|
19
24
|
try {
|
|
@@ -27,6 +32,10 @@ export const backgroundUpload = async (url, fileUrl, options, onProgress) => {
|
|
|
27
32
|
if (Platform.OS === 'android' && fileUrl.includes('file://')) {
|
|
28
33
|
fileUrl = fileUrl.replace('file://', '');
|
|
29
34
|
}
|
|
35
|
+
if (options !== null && options !== void 0 && options.getCancellationId) {
|
|
36
|
+
options === null || options === void 0 ? void 0 : options.getCancellationId(uuid);
|
|
37
|
+
}
|
|
38
|
+
abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener('abort', () => cancelUpload(uuid));
|
|
30
39
|
const result = await Compressor.upload(fileUrl, {
|
|
31
40
|
uuid,
|
|
32
41
|
method: options.httpMethod,
|
|
@@ -41,6 +50,7 @@ export const backgroundUpload = async (url, fileUrl, options, onProgress) => {
|
|
|
41
50
|
if (subscription) {
|
|
42
51
|
subscription.remove();
|
|
43
52
|
}
|
|
53
|
+
abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener('abort', () => cancelUpload(uuid));
|
|
44
54
|
}
|
|
45
55
|
};
|
|
46
56
|
//# sourceMappingURL=Uploader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","Platform","Compressor","CompressEventEmitter","uuidv4","UploadType","UploaderHttpMethod","backgroundUpload","url","fileUrl","options","onProgress","
|
|
1
|
+
{"version":3,"names":["NativeEventEmitter","Platform","Compressor","CompressEventEmitter","uuidv4","UploadType","UploaderHttpMethod","cancelUpload","uuid","arguments","length","undefined","shouldCancelAll","backgroundUpload","url","fileUrl","options","onProgress","abortSignal","subscription","addListener","event","data","written","total","OS","includes","replace","getCancellationId","addEventListener","result","upload","method","httpMethod","headers","uploadType","remove","removeEventListener"],"sourceRoot":"../../../src","sources":["utils/Uploader.tsx"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,QAAQ,QAAQ,cAAc;AAE3D,SAASC,UAAU,QAAQ,SAAS;AACpC,MAAMC,oBAAoB,GAAG,IAAIH,kBAAkB,CAACE,UAAU,CAAC;AAC/D,SAASE,MAAM,QAAQ,SAAS;AAChC,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAKtB,WAAYC,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AA+B9B,OAAO,MAAMC,YAGJ,GAAG,SAAAA,CAAA,EAAwC;EAAA,IAAvCC,IAAI,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAAA,IAAEG,eAAe,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAC7C,OAAOP,UAAU,CAACK,YAAY,CAACC,IAAI,EAAEI,eAAe,CAAC;AACvD,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAG,MAAAA,CAC9BC,GAAW,EACXC,OAAe,EACfC,OAAwB,EACxBC,UAAqD,EACrDC,WAAyB,KACR;EACjB,MAAMV,IAAI,GAAGJ,MAAM,CAAC,CAAC;EACrB,IAAIe,YAAqC;EACzC,IAAI;IACF,IAAIF,UAAU,EAAE;MACdE,YAAY,GAAGhB,oBAAoB,CAACiB,WAAW,CAC7C,gBAAgB,EACfC,KAAU,IAAK;QACd,IAAIA,KAAK,CAACb,IAAI,KAAKA,IAAI,EAAE;UACvBS,UAAU,CAACI,KAAK,CAACC,IAAI,CAACC,OAAO,EAAEF,KAAK,CAACC,IAAI,CAACE,KAAK,CAAC;QAClD;MACF,CACF,CAAC;IACH;IACA,IAAIvB,QAAQ,CAACwB,EAAE,KAAK,SAAS,IAAIV,OAAO,CAACW,QAAQ,CAAC,SAAS,CAAC,EAAE;MAC5DX,OAAO,GAAGA,OAAO,CAACY,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAC1C;IAEA,IAAIX,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEY,iBAAiB,EAAE;MAC9BZ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEY,iBAAiB,CAACpB,IAAI,CAAC;IAClC;IAEAU,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEW,gBAAgB,CAAC,OAAO,EAAE,MAAMtB,YAAY,CAACC,IAAI,CAAC,CAAC;IAEhE,MAAMsB,MAAM,GAAG,MAAM5B,UAAU,CAAC6B,MAAM,CAAChB,OAAO,EAAE;MAC9CP,IAAI;MACJwB,MAAM,EAAEhB,OAAO,CAACiB,UAAU;MAC1BC,OAAO,EAAElB,OAAO,CAACkB,OAAO;MACxBC,UAAU,EAAEnB,OAAO,CAACmB,UAAU;MAC9B,GAAGnB,OAAO;MACVF;IACF,CAAC,CAAC;IACF,OAAOgB,MAAM;EACf,CAAC,SAAS;IACR;IACA,IAAIX,YAAY,EAAE;MAChBA,YAAY,CAACiB,MAAM,CAAC,CAAC;IACvB;IACAlB,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEmB,mBAAmB,CAAC,OAAO,EAAE,MAAM9B,YAAY,CAACC,IAAI,CAAC,CAAC;EACrE;AACF,CAAC"}
|
|
@@ -8,6 +8,7 @@ export interface Spec extends TurboModule {
|
|
|
8
8
|
deactivateBackgroundTask(options: Object): Promise<string>;
|
|
9
9
|
compress_audio(fileUrl: string, optionMap: Object): Promise<string>;
|
|
10
10
|
upload(fileUrl: string, options: Object): Promise<string>;
|
|
11
|
+
cancelUpload(uuid: string, shouldCancelAll: boolean): void;
|
|
11
12
|
download(fileUrl: string, options: Object): Promise<string>;
|
|
12
13
|
generateFilePath(_extension: string): Promise<string>;
|
|
13
14
|
getRealPath(path: string, type: string): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeCompressor.d.ts","sourceRoot":"","sources":["../../../src/Spec/NativeCompressor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5D,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QACT,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtD;;AAED,wBAAoE"}
|
|
1
|
+
{"version":3,"file":"NativeCompressor.d.ts","sourceRoot":"","sources":["../../../src/Spec/NativeCompressor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1D,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAE3D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5D,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QACT,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtD;;AAED,wBAAoE"}
|
|
@@ -2,8 +2,8 @@ import Video from './Video';
|
|
|
2
2
|
import type { VideoCompressorType } from './Video';
|
|
3
3
|
import Audio from './Audio';
|
|
4
4
|
import Image from './Image';
|
|
5
|
-
import { getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, getFileSize, backgroundUpload, createVideoThumbnail, download, clearCache, UploadType, UploaderHttpMethod } from './utils';
|
|
6
|
-
export { Video, Audio, Image, backgroundUpload, download, getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, createVideoThumbnail, clearCache, getFileSize, UploadType, UploaderHttpMethod, };
|
|
5
|
+
import { getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, getFileSize, backgroundUpload, cancelUpload, createVideoThumbnail, download, clearCache, UploadType, UploaderHttpMethod } from './utils';
|
|
6
|
+
export { Video, Audio, Image, backgroundUpload, cancelUpload, download, getDetails, uuidv4, generateFilePath, getRealPath, getVideoMetaData, createVideoThumbnail, clearCache, getFileSize, UploadType, UploaderHttpMethod, };
|
|
7
7
|
export type { VideoCompressorType };
|
|
8
8
|
declare const _default: {
|
|
9
9
|
Video: VideoCompressorType;
|
|
@@ -23,7 +23,7 @@ declare const _default: {
|
|
|
23
23
|
height: number;
|
|
24
24
|
}>;
|
|
25
25
|
getFileSize: (filePath: string) => Promise<string>;
|
|
26
|
-
backgroundUpload: (url: string, fileUrl: string, options: import("./utils").UploaderOptions, onProgress?: ((writtem: number, total: number) => void) | undefined) => Promise<any>;
|
|
26
|
+
backgroundUpload: (url: string, fileUrl: string, options: import("./utils").UploaderOptions, onProgress?: ((writtem: number, total: number) => void) | undefined, abortSignal?: AbortSignal | undefined) => Promise<any>;
|
|
27
27
|
createVideoThumbnail: (fileUrl: string, options?: {
|
|
28
28
|
headers?: {
|
|
29
29
|
[key: string]: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACL,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,UAAU,EACV,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,gBAAgB,EAChB,QAAQ,EAER,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,UAAU,EACV,kBAAkB,GACnB,CAAC;AACF,YAAY,EAAE,mBAAmB,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACpC,wBAgBE"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACL,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,UAAU,EACV,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EAER,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,UAAU,EACV,kBAAkB,GACnB,CAAC;AACF,YAAY,EAAE,mBAAmB,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACpC,wBAgBE"}
|
|
@@ -24,6 +24,8 @@ export declare type UploaderOptions = ({
|
|
|
24
24
|
}) & {
|
|
25
25
|
headers?: Record<string, string>;
|
|
26
26
|
httpMethod?: UploaderHttpMethod | HttpMethod;
|
|
27
|
+
getCancellationId?: (cancellationId: string) => void;
|
|
27
28
|
};
|
|
28
|
-
export declare const
|
|
29
|
+
export declare const cancelUpload: (uuid?: string, shouldCancelAll?: boolean) => void;
|
|
30
|
+
export declare const backgroundUpload: (url: string, fileUrl: string, options: UploaderOptions, onProgress?: ((writtem: number, total: number) => void) | undefined, abortSignal?: AbortSignal) => Promise<any>;
|
|
29
31
|
//# sourceMappingURL=Uploader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Uploader.d.ts","sourceRoot":"","sources":["../../../src/utils/Uploader.tsx"],"names":[],"mappings":"AAKA,oBAAY,UAAU;IACpB,cAAc,IAAI;IAClB,SAAS,IAAI;CACd;AAED,oBAAY,kBAAkB;IAC5B,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAED,MAAM,CAAC,OAAO,MAAM,YAAY,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAE1D,MAAM,CAAC,OAAO,MAAM,eAAe,GAAG,CAClC;IACE,UAAU,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACD;IACE,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CACJ,GAAG;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,kBAAkB,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Uploader.d.ts","sourceRoot":"","sources":["../../../src/utils/Uploader.tsx"],"names":[],"mappings":"AAKA,oBAAY,UAAU;IACpB,cAAc,IAAI;IAClB,SAAS,IAAI;CACd;AAED,oBAAY,kBAAkB;IAC5B,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAED,MAAM,CAAC,OAAO,MAAM,YAAY,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAE1D,MAAM,CAAC,OAAO,MAAM,eAAe,GAAG,CAClC;IACE,UAAU,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACD;IACE,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CACJ,GAAG;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,kBAAkB,GAAG,UAAU,CAAC;IAC7C,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,CACzB,IAAI,CAAC,EAAE,MAAM,EACb,eAAe,CAAC,EAAE,OAAO,KACtB,IAEJ,CAAC;AAEF,eAAO,MAAM,gBAAgB,QACtB,MAAM,WACF,MAAM,WACN,eAAe,0BACD,MAAM,SAAS,MAAM,KAAK,IAAI,6BACvC,WAAW,KACxB,QAAQ,GAAG,CAwCb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-compressor",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.19",
|
|
4
4
|
"description": "This library compress image, video and audio",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -55,7 +55,18 @@
|
|
|
55
55
|
"react-native-compressor",
|
|
56
56
|
"compress-audio",
|
|
57
57
|
"whatsapp",
|
|
58
|
-
"compressor"
|
|
58
|
+
"compressor",
|
|
59
|
+
"background",
|
|
60
|
+
"NSURLSession",
|
|
61
|
+
"uploader",
|
|
62
|
+
"upload",
|
|
63
|
+
"UploadService",
|
|
64
|
+
"downloader",
|
|
65
|
+
"download",
|
|
66
|
+
"thumbnail",
|
|
67
|
+
"create-thumbnail",
|
|
68
|
+
"video-metadata",
|
|
69
|
+
"media"
|
|
59
70
|
],
|
|
60
71
|
"repository": "https://github.com/numandev1/react-native-compressor",
|
|
61
72
|
"author": "numandev1 <muhammadnuman70@gmail.com> (https://github.com/numandev1)",
|
|
@@ -14,6 +14,8 @@ export interface Spec extends TurboModule {
|
|
|
14
14
|
compress_audio(fileUrl: string, optionMap: Object): Promise<string>;
|
|
15
15
|
// Upload
|
|
16
16
|
upload(fileUrl: string, options: Object): Promise<string>;
|
|
17
|
+
// Cancel upload
|
|
18
|
+
cancelUpload(uuid: string, shouldCancelAll: boolean): void;
|
|
17
19
|
// Download
|
|
18
20
|
download(fileUrl: string, options: Object): Promise<string>;
|
|
19
21
|
// Others
|
package/src/index.tsx
CHANGED
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
getVideoMetaData,
|
|
11
11
|
getFileSize,
|
|
12
12
|
backgroundUpload,
|
|
13
|
+
cancelUpload,
|
|
13
14
|
createVideoThumbnail,
|
|
14
15
|
download,
|
|
15
16
|
clearCache,
|
|
@@ -22,6 +23,7 @@ export {
|
|
|
22
23
|
Audio,
|
|
23
24
|
Image,
|
|
24
25
|
backgroundUpload,
|
|
26
|
+
cancelUpload,
|
|
25
27
|
download,
|
|
26
28
|
//type
|
|
27
29
|
getDetails,
|
package/src/utils/Uploader.tsx
CHANGED
|
@@ -36,13 +36,22 @@ export declare type UploaderOptions = (
|
|
|
36
36
|
) & {
|
|
37
37
|
headers?: Record<string, string>;
|
|
38
38
|
httpMethod?: UploaderHttpMethod | HttpMethod;
|
|
39
|
+
getCancellationId?: (cancellationId: string) => void;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export const cancelUpload: (
|
|
43
|
+
uuid?: string,
|
|
44
|
+
shouldCancelAll?: boolean
|
|
45
|
+
) => void = (uuid = '', shouldCancelAll = false) => {
|
|
46
|
+
return Compressor.cancelUpload(uuid, shouldCancelAll);
|
|
39
47
|
};
|
|
40
48
|
|
|
41
49
|
export const backgroundUpload = async (
|
|
42
50
|
url: string,
|
|
43
51
|
fileUrl: string,
|
|
44
52
|
options: UploaderOptions,
|
|
45
|
-
onProgress?: (writtem: number, total: number) => void
|
|
53
|
+
onProgress?: (writtem: number, total: number) => void,
|
|
54
|
+
abortSignal?: AbortSignal
|
|
46
55
|
): Promise<any> => {
|
|
47
56
|
const uuid = uuidv4();
|
|
48
57
|
let subscription: NativeEventSubscription;
|
|
@@ -60,6 +69,13 @@ export const backgroundUpload = async (
|
|
|
60
69
|
if (Platform.OS === 'android' && fileUrl.includes('file://')) {
|
|
61
70
|
fileUrl = fileUrl.replace('file://', '');
|
|
62
71
|
}
|
|
72
|
+
|
|
73
|
+
if (options?.getCancellationId) {
|
|
74
|
+
options?.getCancellationId(uuid);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
abortSignal?.addEventListener('abort', () => cancelUpload(uuid));
|
|
78
|
+
|
|
63
79
|
const result = await Compressor.upload(fileUrl, {
|
|
64
80
|
uuid,
|
|
65
81
|
method: options.httpMethod,
|
|
@@ -74,5 +90,6 @@ export const backgroundUpload = async (
|
|
|
74
90
|
if (subscription) {
|
|
75
91
|
subscription.remove();
|
|
76
92
|
}
|
|
93
|
+
abortSignal?.removeEventListener('abort', () => cancelUpload(uuid));
|
|
77
94
|
}
|
|
78
95
|
};
|