@ammarahmed/react-native-upload 6.32.0 → 7.0.0-alpha.0

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.
@@ -28,6 +28,7 @@ import net.gotev.uploadservice.protocols.multipart.MultipartUploadRequest
28
28
  import okhttp3.OkHttpClient
29
29
  import java.io.File
30
30
  import java.util.concurrent.TimeUnit
31
+ import kotlinx.coroutines.*
31
32
 
32
33
  class UploaderModule(val reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext), LifecycleEventListener {
33
34
  private val TAG = "UploaderBridge"
@@ -399,12 +400,85 @@ class UploaderModule(val reactContext: ReactApplicationContext) : ReactContextBa
399
400
  }
400
401
  }
401
402
 
402
- override fun onHostResume() {
403
+ private val multipartUploader = MultipartUploader.getInstance(reactContext)
404
+
405
+ init {
406
+ multipartUploader.attachReactContext(reactContext)
403
407
  }
408
+ private val moduleScope = CoroutineScope(Dispatchers.Main + SupervisorJob())
404
409
 
405
- override fun onHostPause() {
410
+ @ReactMethod
411
+ fun startMultipartUpload(options: ReadableMap, promise: Promise) {
412
+ moduleScope.launch {
413
+ try {
414
+ val result = multipartUploader.startMultipartUpload(UploadParams.fromReadableMap(options))
415
+ promise.resolve(result)
416
+ } catch (e: CancellationException) {
417
+ promise.reject("CANCELLED", "Upload cancelled")
418
+ } catch (e: UploadAlreadyExistsException) {
419
+ promise.reject("ALREADY_EXISTS", e.message)
420
+ } catch (e: IllegalArgumentException) {
421
+ promise.reject("INVALID_ARGUMENT", e.message)
422
+ } catch (e: Throwable) {
423
+ promise.reject("MULTIPART_UPLOAD_ERROR", e.message, e)
424
+ }
425
+ }
426
+ }
427
+
428
+ @ReactMethod
429
+ fun cancelMultipartUpload(uploadId: String, promise: Promise) {
430
+ try {
431
+ val success = multipartUploader.cancelUpload(uploadId)
432
+ promise.resolve(success)
433
+ } catch (e: Exception) {
434
+ promise.reject("CANCEL_ERROR", e.message, e)
435
+ }
436
+ }
437
+
438
+ @ReactMethod
439
+ fun getMultipartUploads(promise: Promise) {
440
+ promise.resolve(multipartUploader.pendingUploads())
441
+ }
442
+
443
+ @ReactMethod
444
+ fun acknowledgeMultipartUpload(uploadId: String, promise: Promise) {
445
+ promise.resolve(multipartUploader.acknowledgeUpload(uploadId))
446
+ }
447
+
448
+ @ReactMethod
449
+ fun pauseMultipartUpload(uploadId: String, promise: Promise) {
450
+ try {
451
+ val success = multipartUploader.pauseUpload(uploadId)
452
+ promise.resolve(success)
453
+ } catch (e: Exception) {
454
+ promise.reject("PAUSE_ERROR", e.message, e)
455
+ }
456
+ }
457
+
458
+ @ReactMethod
459
+ fun resumeMultipartUpload(uploadId: String, promise: Promise) {
460
+ try {
461
+ val success = multipartUploader.resumeUpload(uploadId)
462
+ promise.resolve(success)
463
+ } catch (e: Exception) {
464
+ promise.reject("RESUME_ERROR", e.message, e)
465
+ }
406
466
  }
407
467
 
408
468
  override fun onHostDestroy() {
409
469
  }
470
+
471
+ override fun invalidate() {
472
+ multipartUploader.detachReactContext(reactContext)
473
+ moduleScope.cancel()
474
+ super.invalidate()
475
+ }
476
+
477
+ override fun onHostResume() {
478
+ }
479
+
480
+ override fun onHostPause() {
481
+ }
482
+
483
+
410
484
  }
package/dist/index.d.ts CHANGED
@@ -26,9 +26,21 @@ export type NotificationOptions = {
26
26
  */
27
27
  onProgressTitle: string;
28
28
  /**
29
- * Sets notification progress message { onProgressMessage: "Uploading new video" }
29
+ * Sets notification progress message. For multipart uploads {progress} is replaced with the percentage { onProgressMessage: "Uploading new video" }
30
30
  */
31
31
  onProgressMessage: string;
32
+ /**
33
+ * Sets multipart upload notification start message { onStartMessage: "Starting upload..." }
34
+ */
35
+ onStartMessage: string;
36
+ /**
37
+ * Sets multipart upload notification message when resuming { onResumeMessage: "Resuming upload..." }
38
+ */
39
+ onResumeMessage: string;
40
+ /**
41
+ * Sets the Android notification channel name shown in system settings { notificationChannelName: "Uploads" }
42
+ */
43
+ notificationChannelName: string;
32
44
  /**
33
45
  * Sets notification complete title { onCompleteTitle: "Upload finished" }
34
46
  */
@@ -106,6 +118,81 @@ export interface ErrorData extends CompletedData {
106
118
  error: string;
107
119
  }
108
120
  export type UploadEventData = ProgressData | ErrorData | CancelledData | CompletedData;
121
+ export type MultipartEventType = "progress" | "error" | "completed" | "cancelled";
122
+ export interface MultipartS3Options {
123
+ /**
124
+ * Unique upload ID to track the upload.
125
+ */
126
+ uploadId: string;
127
+ /**
128
+ * Path to the local file to upload (e.g. /path/to/file or file:///path/to/file).
129
+ */
130
+ path: string;
131
+ /**
132
+ * Array of presigned URLs for each chunk in sequence.
133
+ */
134
+ parts: string[];
135
+ /**
136
+ * Maximum parallel chunk uploads (default: 3).
137
+ */
138
+ maxParallel?: number;
139
+ /**
140
+ * Notification options for background service (Android).
141
+ */
142
+ notification?: Partial<NotificationOptions>;
143
+ /**
144
+ * AppGroup defined in Xcode for extensions (iOS).
145
+ */
146
+ appGroup?: string;
147
+ /**
148
+ * Fixed-length array of previously uploaded chunk ETags (matching parts array length)
149
+ * for resuming an existing upload session. Completed parts carry their ETag string,
150
+ * while uncompleted parts carry empty string "".
151
+ * Already uploaded chunks will be skipped and pre-filled with these ETags.
152
+ */
153
+ existingEtags?: string[];
154
+ /**
155
+ * Whether the upload can survive the app process being killed (default: true).
156
+ * Resumable uploads are persisted natively, resumed after a restart and can
157
+ * be finished later through getMultipartS3Uploads. When false, the upload
158
+ * still keeps running while the app is in the background but nothing is
159
+ * persisted, so it is gone if the app process dies.
160
+ */
161
+ resumable?: boolean;
162
+ }
163
+ export interface MultipartProgressEvent {
164
+ type: string;
165
+ uploadId: string;
166
+ progress?: number;
167
+ bytesUploaded?: number;
168
+ totalBytes?: number;
169
+ chunkIndex?: number;
170
+ etag?: string;
171
+ etags?: string[];
172
+ errorMessage?: string;
173
+ }
174
+ export type MultipartUploadStatus = "running" | "paused" | "completed" | "failed";
175
+ export interface MultipartPendingUpload {
176
+ uploadId: string;
177
+ status: MultipartUploadStatus;
178
+ progress: number;
179
+ bytesUploaded: number;
180
+ totalBytes: number;
181
+ etags: string[];
182
+ error: string | null;
183
+ }
184
+ export interface MultipartCompletionEvent {
185
+ uploadId: string;
186
+ status: "completed" | "failed";
187
+ etags: string[];
188
+ error: string | null;
189
+ }
190
+ export type MultipartCompletionHandler = (event: MultipartCompletionEvent) => Promise<void> | void;
191
+ export interface MultipartS3Result {
192
+ uploadId: string;
193
+ success: boolean;
194
+ etags: string[];
195
+ }
109
196
  export declare const UploadState: {
110
197
  readonly Cancelled: "cancelled";
111
198
  readonly Completed: "completed";
@@ -154,6 +241,48 @@ declare class Upload {
154
241
  /**
155
242
  * Get all currently tracked uploads
156
243
  */
244
+ /**
245
+ * Create an S3 / Cloud multipart chunked upload instance
246
+ */
247
+ static createMultipartS3(options: MultipartS3Options): MultipartS3Upload;
248
+ /**
249
+ * Start an S3 / Cloud multipart chunked upload directly
250
+ */
251
+ static startMultipartS3(options: MultipartS3Options): Promise<MultipartS3Result>;
252
+ /**
253
+ * Cancel an ongoing S3 multipart upload
254
+ */
255
+ static cancelMultipartS3(uploadId: string): Promise<boolean>;
256
+ /**
257
+ * Pause an ongoing S3 multipart upload
258
+ */
259
+ static pauseMultipartS3(uploadId: string): Promise<boolean>;
260
+ /**
261
+ * Resume a paused S3 multipart upload
262
+ */
263
+ static resumeMultipartS3(uploadId: string): Promise<boolean>;
264
+ /**
265
+ * Registers the function that finishes a multipart upload (for example by
266
+ * sending CompleteMultipartUpload) once every part has been uploaded. It is
267
+ * called when the app is running and, on Android, from a headless task when
268
+ * the upload finished while the app was not running. Register it at the top
269
+ * level of your entry file so it exists when the app is started in the
270
+ * background. The upload is acknowledged when the handler resolves.
271
+ */
272
+ static setMultipartCompletionHandler(handler: MultipartCompletionHandler | null): void;
273
+ /**
274
+ * Lists multipart uploads known to the native side, including ones that
275
+ * finished while the app was suspended or relaunched in the background.
276
+ */
277
+ static getMultipartS3Uploads(): Promise<MultipartPendingUpload[]>;
278
+ /**
279
+ * Removes the stored state of a completed or failed multipart upload.
280
+ */
281
+ static acknowledgeMultipartS3(uploadId: string): Promise<boolean>;
282
+ /**
283
+ * Add listener for multipart events
284
+ */
285
+ static addMultipartListener(eventType: MultipartEventType, uploadId: string, listener: (data: any) => void): EmitterSubscription;
157
286
  static getAll(): Upload[];
158
287
  /**
159
288
  * Set a callback to be called whenever the upload state changes
@@ -192,6 +321,36 @@ declare class Upload {
192
321
  */
193
322
  private cleanup;
194
323
  }
324
+ declare class MultipartS3Upload {
325
+ private options;
326
+ private subscriptions;
327
+ private startPromise;
328
+ private progressCallbacks;
329
+ private static activeUploads;
330
+ constructor(options: MultipartS3Options);
331
+ static create(options: MultipartS3Options): MultipartS3Upload;
332
+ static getById(uploadId: string): MultipartS3Upload | undefined;
333
+ static cancel(uploadId: string): Promise<boolean>;
334
+ static pause(uploadId: string): Promise<boolean>;
335
+ static resume(uploadId: string): Promise<boolean>;
336
+ onProgress(callback: (event: MultipartProgressEvent) => void): this;
337
+ getId(): string;
338
+ getPath(): string;
339
+ start(): Promise<MultipartS3Result>;
340
+ private setupEventListeners;
341
+ cancel(): Promise<boolean>;
342
+ pause(): Promise<boolean>;
343
+ resume(): Promise<boolean>;
344
+ private cleanup;
345
+ }
346
+ export declare const startMultipartS3: (options: MultipartS3Options) => Promise<MultipartS3Result>;
347
+ export declare const cancelMultipartS3: (uploadId: string) => Promise<boolean>;
348
+ export declare const pauseMultipartS3: (uploadId: string) => Promise<boolean>;
349
+ export declare const resumeMultipartS3: (uploadId: string) => Promise<boolean>;
350
+ export declare const setMultipartCompletionHandler: (handler: MultipartCompletionHandler | null) => void;
351
+ export declare const getMultipartS3Uploads: () => Promise<MultipartPendingUpload[]>;
352
+ export declare const acknowledgeMultipartS3: (uploadId: string) => Promise<boolean>;
353
+ export declare const addMultipartListener: (eventType: MultipartEventType, uploadId: string, listener: (data: any) => void) => EmitterSubscription;
195
354
  export declare const getFileInfo: (path: string) => Promise<FileInfo>;
196
355
  export declare const startUpload: (options: UploadOptions) => Promise<string>;
197
356
  export declare const cancelUpload: (cancelUploadId: string) => Promise<boolean>;
@@ -199,6 +358,6 @@ export declare const addListener: (eventType: UploadEvent, uploadId: string, lis
199
358
  export declare const canSuspendIfBackground: () => void;
200
359
  export declare const shouldLimitNetwork: (limit: boolean) => void;
201
360
  export declare const getAllUploads: () => Promise<NativeUploadInfo[]>;
202
- export { Upload };
361
+ export { Upload, MultipartS3Upload };
203
362
  export default Upload;
204
363
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}