react-native-compressor 1.7.0 → 1.7.2

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.
Files changed (40) hide show
  1. package/README.md +42 -20
  2. package/android/src/main/java/com/reactnativecompressor/CompressorModule.java +31 -22
  3. package/android/src/main/java/com/reactnativecompressor/Image/ImageCompressor.java +28 -16
  4. package/android/src/main/java/com/reactnativecompressor/Image/utils/ImageCompressorOptions.java +4 -0
  5. package/android/src/main/java/com/reactnativecompressor/Utils/MediaCache.java +65 -0
  6. package/android/src/main/java/com/reactnativecompressor/Utils/Utils.java +161 -2
  7. package/android/src/main/java/com/reactnativecompressor/Video/VideoModule.java +3 -16
  8. package/android/src/oldarch/CompressorSpec.java +13 -7
  9. package/ios/Compressor-Bridging-Header.h +1 -0
  10. package/ios/Compressor.h +3 -2
  11. package/ios/Compressor.mm +56 -24
  12. package/ios/Image/ImageCompressor.h +12 -7
  13. package/ios/Image/ImageCompressor.m +164 -67
  14. package/ios/Image/ImageCompressorOptions.h +1 -0
  15. package/ios/Image/ImageCompressorOptions.m +5 -1
  16. package/ios/Utils/Downloader.h +16 -0
  17. package/ios/Utils/Downloader.m +150 -0
  18. package/ios/Utils/MediaCache.h +11 -0
  19. package/ios/Utils/MediaCache.m +51 -0
  20. package/ios/Video/VideoCompressor.swift +13 -4
  21. package/lib/commonjs/Image/index.js +25 -3
  22. package/lib/commonjs/Image/index.js.map +1 -1
  23. package/lib/commonjs/Spec/NativeCompressor.js.map +1 -1
  24. package/lib/commonjs/Video/index.js +14 -1
  25. package/lib/commonjs/Video/index.js.map +1 -1
  26. package/lib/module/Image/index.js +25 -3
  27. package/lib/module/Image/index.js.map +1 -1
  28. package/lib/module/Spec/NativeCompressor.js.map +1 -1
  29. package/lib/module/Video/index.js +14 -1
  30. package/lib/module/Video/index.js.map +1 -1
  31. package/lib/typescript/Image/index.d.ts +4 -0
  32. package/lib/typescript/Image/index.d.ts.map +1 -1
  33. package/lib/typescript/Spec/NativeCompressor.d.ts +2 -0
  34. package/lib/typescript/Spec/NativeCompressor.d.ts.map +1 -1
  35. package/lib/typescript/Video/index.d.ts +1 -0
  36. package/lib/typescript/Video/index.d.ts.map +1 -1
  37. package/package.json +4 -2
  38. package/src/Image/index.tsx +36 -3
  39. package/src/Spec/NativeCompressor.ts +2 -0
  40. package/src/Video/index.tsx +23 -1
@@ -0,0 +1,51 @@
1
+ #import "MediaCache.h"
2
+
3
+ @implementation MediaCache
4
+ NSMutableArray<NSString *> *completedImagePaths;
5
+
6
+ + (void)addCompletedImagePath:(NSString *)imagePath {
7
+ if (imagePath) {
8
+ [completedImagePaths addObject:imagePath];
9
+ }
10
+ }
11
+
12
+ + (void)removeCompletedImagePath:(NSString *)imagePath {
13
+ if (imagePath) {
14
+ [completedImagePaths removeObject:imagePath];
15
+ NSURL *fileURL = [NSURL URLWithString:imagePath];
16
+ NSString *fileSystemPath = [fileURL path];
17
+
18
+ NSFileManager *fileManager = [NSFileManager defaultManager];
19
+ NSError *error = nil;
20
+
21
+ if ([fileManager fileExistsAtPath:fileSystemPath isDirectory:nil]) {
22
+ [fileManager removeItemAtPath:fileSystemPath error:&error];
23
+ }
24
+
25
+ if (error) {
26
+ NSLog(@"Error deleting image at path: %@", fileSystemPath);
27
+ }
28
+ }
29
+ }
30
+
31
+ + (void)cleanupCache {
32
+ NSFileManager *fileManager = [NSFileManager defaultManager];
33
+ NSString *cacheDirectory = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
34
+
35
+ for (NSString *imagePath in completedImagePaths) {
36
+ NSString *absoluteImagePath = [cacheDirectory stringByAppendingPathComponent:imagePath];
37
+ NSError *error = nil;
38
+
39
+ if ([fileManager fileExistsAtPath:absoluteImagePath]) {
40
+ [fileManager removeItemAtPath:absoluteImagePath error:&error];
41
+ }
42
+
43
+ if (error) {
44
+ NSLog(@"Error deleting image at path: %@", absoluteImagePath);
45
+ }
46
+ }
47
+
48
+ [completedImagePaths removeAllObjects];
49
+ }
50
+
51
+ @end
@@ -37,12 +37,17 @@ class VideoCompressor: RCTEventEmitter, URLSessionTaskDelegate {
37
37
  var uploadRejectors: [String: RCTPromiseRejectBlock] = [:]
38
38
  var compressorExports: [String: NextLevelSessionExporter] = [:]
39
39
  let videoCompressionThreshold:Int=7
40
-
40
+
41
+ override init() {
42
+ super.init()
43
+ ImageCompressor.initVideoCompressorInstance(self)
44
+ }
41
45
 
42
46
  override static func requiresMainQueueSetup() -> Bool {
43
47
  return false
44
48
  }
45
49
 
50
+
46
51
  @objc(activateBackgroundTask:withResolver:withRejecter:)
47
52
  func activateBackgroundTask(options: [String: Any], resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) -> Void {
48
53
  guard backgroundTaskId == .invalid else {
@@ -173,7 +178,7 @@ func makeValidUri(filePath: String) -> String {
173
178
  }
174
179
 
175
180
  override func supportedEvents() -> [String]! {
176
- return ["videoCompressProgress", "VideoCompressorProgress", "backgroundTaskExpired"]
181
+ return ["videoCompressProgress", "VideoCompressorProgress", "backgroundTaskExpired","downloadProgress"]
177
182
  }
178
183
 
179
184
  override func stopObserving() -> Void {
@@ -206,7 +211,9 @@ func makeValidUri(filePath: String) -> String {
206
211
 
207
212
 
208
213
  func compressVideo(url: URL, options: [String: Any], onProgress: @escaping (Float) -> Void, onCompletion: @escaping (URL) -> Void, onFailure: @escaping (Error) -> Void){
209
- ImageCompressor.getAbsoluteVideoPath(url.absoluteString) { absoluteVideoPath in
214
+ let uuid:String = options["uuid"] as! String
215
+
216
+ ImageCompressor.getAbsoluteVideoPath(url.absoluteString, uuid: uuid) { absoluteVideoPath in
210
217
  var minimumFileSizeForCompress:Double=0.0;
211
218
  let videoURL = URL(string: absoluteVideoPath!)
212
219
  let fileSize=self.getfileSize(forURL: videoURL!);
@@ -216,11 +223,12 @@ func makeValidUri(filePath: String) -> String {
216
223
  }
217
224
  if(fileSize>minimumFileSizeForCompress)
218
225
  {
219
- if(options["compressionMethod"] as! String=="manual")
226
+ if(options["compressionMethod"] as! String=="auto")
220
227
  {
221
228
  self.autoCompressionHelper(url: videoURL!, options:options) { progress in
222
229
  onProgress(progress)
223
230
  } onCompletion: { outputURL in
231
+ MediaCache.removeCompletedImagePath(absoluteVideoPath);
224
232
  onCompletion(outputURL)
225
233
  } onFailure: { error in
226
234
  onFailure(error)
@@ -231,6 +239,7 @@ func makeValidUri(filePath: String) -> String {
231
239
  self.manualCompressionHelper(url: videoURL!, options:options) { progress in
232
240
  onProgress(progress)
233
241
  } onCompletion: { outputURL in
242
+ MediaCache.removeCompletedImagePath(absoluteVideoPath);
234
243
  onCompletion(outputURL)
235
244
  } onFailure: { error in
236
245
  onFailure(error)
@@ -5,15 +5,37 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _Main = require("../Main");
8
+ var _utils = require("../utils");
9
+ var _reactNative = require("react-native");
8
10
  const base64UrlRegex = /^data:image\/.*;(?:charset=.{3,5};)?base64,/;
11
+ const ImageCompressEventEmitter = new _reactNative.NativeEventEmitter(_Main.Compressor);
9
12
  const NativeImage = _Main.Compressor;
10
13
  const Image = {
11
- compress: (value, options) => {
14
+ compress: async function (value) {
15
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
12
16
  if (!value) {
13
17
  throw new Error('Compression value is empty, please provide a value for compression.');
14
18
  }
15
- const cleanData = value.replace(base64UrlRegex, '');
16
- return NativeImage.image_compress(cleanData, options);
19
+ const uuid = (0, _utils.uuidv4)();
20
+ let subscription;
21
+ try {
22
+ if (options !== null && options !== void 0 && options.downloadProgress) {
23
+ //@ts-ignore
24
+ options.uuid = uuid;
25
+ subscription = ImageCompressEventEmitter.addListener('downloadProgress', event => {
26
+ if (event.uuid === uuid) {
27
+ options.downloadProgress && options.downloadProgress(event.data.progress);
28
+ }
29
+ });
30
+ }
31
+ const cleanData = value.replace(base64UrlRegex, '');
32
+ return await NativeImage.image_compress(cleanData, options);
33
+ } finally {
34
+ // @ts-ignore
35
+ if (subscription) {
36
+ subscription.remove();
37
+ }
38
+ }
17
39
  }
18
40
  };
19
41
  var _default = Image;
@@ -1 +1 @@
1
- {"version":3,"names":["_Main","require","base64UrlRegex","NativeImage","Compressor","Image","compress","value","options","Error","cleanData","replace","image_compress","_default","exports","default"],"sourceRoot":"../../../src","sources":["Image/index.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,MAAMC,cAAc,GAAG,6CAA6C;AAyCpE,MAAMC,WAAW,GAAGC,gBAAU;AAM9B,MAAMC,KAAgB,GAAG;EACvBC,QAAQ,EAAEA,CAACC,KAAK,EAAEC,OAAO,KAAK;IAC5B,IAAI,CAACD,KAAK,EAAE;MACV,MAAM,IAAIE,KAAK,CACb,qEACF,CAAC;IACH;IACA,MAAMC,SAAS,GAAGH,KAAK,CAACI,OAAO,CAACT,cAAc,EAAE,EAAE,CAAC;IACnD,OAAOC,WAAW,CAACS,cAAc,CAACF,SAAS,EAAEF,OAAO,CAAC;EACvD;AACF,CAAC;AAAC,IAAAK,QAAA,GAEaR,KAAK;AAAAS,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
1
+ {"version":3,"names":["_Main","require","_utils","_reactNative","base64UrlRegex","ImageCompressEventEmitter","NativeEventEmitter","Compressor","NativeImage","Image","compress","value","options","arguments","length","undefined","Error","uuid","uuidv4","subscription","downloadProgress","addListener","event","data","progress","cleanData","replace","image_compress","remove","_default","exports","default"],"sourceRoot":"../../../src","sources":["Image/index.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAGA,IAAAE,YAAA,GAAAF,OAAA;AAFA,MAAMG,cAAc,GAAG,6CAA6C;AA+CpE,MAAMC,yBAAyB,GAAG,IAAIC,+BAAkB,CAACC,gBAAU,CAAC;AAEpE,MAAMC,WAAW,GAAGD,gBAAU;AAM9B,MAAME,KAAgB,GAAG;EACvBC,QAAQ,EAAE,eAAAA,CAAOC,KAAK,EAAmB;IAAA,IAAjBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAClC,IAAI,CAACF,KAAK,EAAE;MACV,MAAM,IAAIK,KAAK,CACb,qEACF,CAAC;IACH;IAEA,MAAMC,IAAI,GAAG,IAAAC,aAAM,EAAC,CAAC;IACrB,IAAIC,YAAqC;IACzC,IAAI;MACF,IAAIP,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEQ,gBAAgB,EAAE;QAC7B;QACAR,OAAO,CAACK,IAAI,GAAGA,IAAI;QACnBE,YAAY,GAAGd,yBAAyB,CAACgB,WAAW,CAClD,kBAAkB,EACjBC,KAAU,IAAK;UACd,IAAIA,KAAK,CAACL,IAAI,KAAKA,IAAI,EAAE;YACvBL,OAAO,CAACQ,gBAAgB,IACtBR,OAAO,CAACQ,gBAAgB,CAACE,KAAK,CAACC,IAAI,CAACC,QAAQ,CAAC;UACjD;QACF,CACF,CAAC;MACH;MAEA,MAAMC,SAAS,GAAGd,KAAK,CAACe,OAAO,CAACtB,cAAc,EAAE,EAAE,CAAC;MACnD,OAAO,MAAMI,WAAW,CAACmB,cAAc,CAACF,SAAS,EAAEb,OAAO,CAAC;IAC7D,CAAC,SAAS;MACR;MACA,IAAIO,YAAY,EAAE;QAChBA,YAAY,CAACS,MAAM,CAAC,CAAC;MACvB;IACF;EACF;AACF,CAAC;AAAC,IAAAC,QAAA,GAEapB,KAAK;AAAAqB,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -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,GAWpCC,gCAAmB,CAACC,YAAY,CAAO,YAAY,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,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,GAapCC,gCAAmB,CAACC,YAAY,CAAO,YAAY,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
@@ -46,6 +46,7 @@ const Video = {
46
46
  compress: async (fileUrl, options, onProgress) => {
47
47
  const uuid = (0, _utils.uuidv4)();
48
48
  let subscription;
49
+ let subscription2;
49
50
  try {
50
51
  if (onProgress) {
51
52
  subscription = VideoCompressEventEmitter.addListener('videoCompressProgress', event => {
@@ -54,6 +55,14 @@ const Video = {
54
55
  }
55
56
  });
56
57
  }
58
+ if (options !== null && options !== void 0 && options.downloadProgress) {
59
+ //@ts-ignore
60
+ subscription2 = VideoCompressEventEmitter.addListener('downloadProgress', event => {
61
+ if (event.uuid === uuid) {
62
+ options.downloadProgress && options.downloadProgress(event.data.progress);
63
+ }
64
+ });
65
+ }
57
66
  const modifiedOptions = {
58
67
  uuid
59
68
  };
@@ -61,7 +70,7 @@ const Video = {
61
70
  if (options !== null && options !== void 0 && options.compressionMethod) {
62
71
  modifiedOptions.compressionMethod = options === null || options === void 0 ? void 0 : options.compressionMethod;
63
72
  } else {
64
- modifiedOptions.compressionMethod = 'manual';
73
+ modifiedOptions.compressionMethod = 'auto';
65
74
  }
66
75
  if (options !== null && options !== void 0 && options.maxSize) {
67
76
  modifiedOptions.maxSize = options === null || options === void 0 ? void 0 : options.maxSize;
@@ -81,6 +90,10 @@ const Video = {
81
90
  if (subscription) {
82
91
  subscription.remove();
83
92
  }
93
+ //@ts-ignore
94
+ if (subscription2) {
95
+ subscription2.remove();
96
+ }
84
97
  }
85
98
  },
86
99
  backgroundUpload,
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_Main","_utils","VideoCompressEventEmitter","NativeEventEmitter","VideoCompressor","NativeVideoCompressor","backgroundUpload","url","fileUrl","options","onProgress","uuid","uuidv4","subscription","addListener","event","data","written","total","Platform","OS","includes","replace","result","upload","method","httpMethod","headers","remove","exports","cancelCompression","cancellationId","Video","compress","progress","modifiedOptions","bitrate","compressionMethod","maxSize","minimumFileSizeForCompress","undefined","getCancellationId","activateBackgroundTask","onExpired","deactivateBackgroundTask","removeAllListeners","_default","default"],"sourceRoot":"../../../src","sources":["Video/index.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_Main","_utils","VideoCompressEventEmitter","NativeEventEmitter","VideoCompressor","NativeVideoCompressor","backgroundUpload","url","fileUrl","options","onProgress","uuid","uuidv4","subscription","addListener","event","data","written","total","Platform","OS","includes","replace","result","upload","method","httpMethod","headers","remove","exports","cancelCompression","cancellationId","Video","compress","subscription2","progress","downloadProgress","modifiedOptions","bitrate","compressionMethod","maxSize","minimumFileSizeForCompress","undefined","getCancellationId","activateBackgroundTask","onExpired","deactivateBackgroundTask","removeAllListeners","_default","default"],"sourceRoot":"../../../src","sources":["Video/index.tsx"],"mappings":"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"}
@@ -1,13 +1,35 @@
1
1
  import { Compressor } from '../Main';
2
+ import { uuidv4 } from '../utils';
2
3
  const base64UrlRegex = /^data:image\/.*;(?:charset=.{3,5};)?base64,/;
4
+ import { NativeEventEmitter } from 'react-native';
5
+ const ImageCompressEventEmitter = new NativeEventEmitter(Compressor);
3
6
  const NativeImage = Compressor;
4
7
  const Image = {
5
- compress: (value, options) => {
8
+ compress: async function (value) {
9
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
6
10
  if (!value) {
7
11
  throw new Error('Compression value is empty, please provide a value for compression.');
8
12
  }
9
- const cleanData = value.replace(base64UrlRegex, '');
10
- return NativeImage.image_compress(cleanData, options);
13
+ const uuid = uuidv4();
14
+ let subscription;
15
+ try {
16
+ if (options !== null && options !== void 0 && options.downloadProgress) {
17
+ //@ts-ignore
18
+ options.uuid = uuid;
19
+ subscription = ImageCompressEventEmitter.addListener('downloadProgress', event => {
20
+ if (event.uuid === uuid) {
21
+ options.downloadProgress && options.downloadProgress(event.data.progress);
22
+ }
23
+ });
24
+ }
25
+ const cleanData = value.replace(base64UrlRegex, '');
26
+ return await NativeImage.image_compress(cleanData, options);
27
+ } finally {
28
+ // @ts-ignore
29
+ if (subscription) {
30
+ subscription.remove();
31
+ }
32
+ }
11
33
  }
12
34
  };
13
35
  export default Image;
@@ -1 +1 @@
1
- {"version":3,"names":["Compressor","base64UrlRegex","NativeImage","Image","compress","value","options","Error","cleanData","replace","image_compress"],"sourceRoot":"../../../src","sources":["Image/index.tsx"],"mappings":"AAAA,SAASA,UAAU,QAAQ,SAAS;AACpC,MAAMC,cAAc,GAAG,6CAA6C;AAyCpE,MAAMC,WAAW,GAAGF,UAAU;AAM9B,MAAMG,KAAgB,GAAG;EACvBC,QAAQ,EAAEA,CAACC,KAAK,EAAEC,OAAO,KAAK;IAC5B,IAAI,CAACD,KAAK,EAAE;MACV,MAAM,IAAIE,KAAK,CACb,qEACF,CAAC;IACH;IACA,MAAMC,SAAS,GAAGH,KAAK,CAACI,OAAO,CAACR,cAAc,EAAE,EAAE,CAAC;IACnD,OAAOC,WAAW,CAACQ,cAAc,CAACF,SAAS,EAAEF,OAAO,CAAC;EACvD;AACF,CAAC;AAED,eAAeH,KAAK"}
1
+ {"version":3,"names":["Compressor","uuidv4","base64UrlRegex","NativeEventEmitter","ImageCompressEventEmitter","NativeImage","Image","compress","value","options","arguments","length","undefined","Error","uuid","subscription","downloadProgress","addListener","event","data","progress","cleanData","replace","image_compress","remove"],"sourceRoot":"../../../src","sources":["Image/index.tsx"],"mappings":"AAAA,SAASA,UAAU,QAAQ,SAAS;AACpC,SAASC,MAAM,QAAQ,UAAU;AACjC,MAAMC,cAAc,GAAG,6CAA6C;AAEpE,SAASC,kBAAkB,QAAQ,cAAc;AA6CjD,MAAMC,yBAAyB,GAAG,IAAID,kBAAkB,CAACH,UAAU,CAAC;AAEpE,MAAMK,WAAW,GAAGL,UAAU;AAM9B,MAAMM,KAAgB,GAAG;EACvBC,QAAQ,EAAE,eAAAA,CAAOC,KAAK,EAAmB;IAAA,IAAjBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAClC,IAAI,CAACF,KAAK,EAAE;MACV,MAAM,IAAIK,KAAK,CACb,qEACF,CAAC;IACH;IAEA,MAAMC,IAAI,GAAGb,MAAM,CAAC,CAAC;IACrB,IAAIc,YAAqC;IACzC,IAAI;MACF,IAAIN,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEO,gBAAgB,EAAE;QAC7B;QACAP,OAAO,CAACK,IAAI,GAAGA,IAAI;QACnBC,YAAY,GAAGX,yBAAyB,CAACa,WAAW,CAClD,kBAAkB,EACjBC,KAAU,IAAK;UACd,IAAIA,KAAK,CAACJ,IAAI,KAAKA,IAAI,EAAE;YACvBL,OAAO,CAACO,gBAAgB,IACtBP,OAAO,CAACO,gBAAgB,CAACE,KAAK,CAACC,IAAI,CAACC,QAAQ,CAAC;UACjD;QACF,CACF,CAAC;MACH;MAEA,MAAMC,SAAS,GAAGb,KAAK,CAACc,OAAO,CAACpB,cAAc,EAAE,EAAE,CAAC;MACnD,OAAO,MAAMG,WAAW,CAACkB,cAAc,CAACF,SAAS,EAAEZ,OAAO,CAAC;IAC7D,CAAC,SAAS;MACR;MACA,IAAIM,YAAY,EAAE;QAChBA,YAAY,CAACS,MAAM,CAAC,CAAC;MACvB;IACF;EACF;AACF,CAAC;AAED,eAAelB,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["Spec/NativeCompressor.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAWlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC"}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["Spec/NativeCompressor.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAalD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC"}
@@ -38,6 +38,7 @@ const Video = {
38
38
  compress: async (fileUrl, options, onProgress) => {
39
39
  const uuid = uuidv4();
40
40
  let subscription;
41
+ let subscription2;
41
42
  try {
42
43
  if (onProgress) {
43
44
  subscription = VideoCompressEventEmitter.addListener('videoCompressProgress', event => {
@@ -46,6 +47,14 @@ const Video = {
46
47
  }
47
48
  });
48
49
  }
50
+ if (options !== null && options !== void 0 && options.downloadProgress) {
51
+ //@ts-ignore
52
+ subscription2 = VideoCompressEventEmitter.addListener('downloadProgress', event => {
53
+ if (event.uuid === uuid) {
54
+ options.downloadProgress && options.downloadProgress(event.data.progress);
55
+ }
56
+ });
57
+ }
49
58
  const modifiedOptions = {
50
59
  uuid
51
60
  };
@@ -53,7 +62,7 @@ const Video = {
53
62
  if (options !== null && options !== void 0 && options.compressionMethod) {
54
63
  modifiedOptions.compressionMethod = options === null || options === void 0 ? void 0 : options.compressionMethod;
55
64
  } else {
56
- modifiedOptions.compressionMethod = 'manual';
65
+ modifiedOptions.compressionMethod = 'auto';
57
66
  }
58
67
  if (options !== null && options !== void 0 && options.maxSize) {
59
68
  modifiedOptions.maxSize = options === null || options === void 0 ? void 0 : options.maxSize;
@@ -73,6 +82,10 @@ const Video = {
73
82
  if (subscription) {
74
83
  subscription.remove();
75
84
  }
85
+ //@ts-ignore
86
+ if (subscription2) {
87
+ subscription2.remove();
88
+ }
76
89
  }
77
90
  },
78
91
  backgroundUpload,
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","Platform","VideoCompressor","uuidv4","VideoCompressEventEmitter","NativeVideoCompressor","backgroundUpload","url","fileUrl","options","onProgress","uuid","subscription","addListener","event","data","written","total","OS","includes","replace","result","upload","method","httpMethod","headers","remove","cancelCompression","cancellationId","Video","compress","progress","modifiedOptions","bitrate","compressionMethod","maxSize","minimumFileSizeForCompress","undefined","getCancellationId","activateBackgroundTask","onExpired","deactivateBackgroundTask","removeAllListeners"],"sourceRoot":"../../../src","sources":["Video/index.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["NativeEventEmitter","Platform","VideoCompressor","uuidv4","VideoCompressEventEmitter","NativeVideoCompressor","backgroundUpload","url","fileUrl","options","onProgress","uuid","subscription","addListener","event","data","written","total","OS","includes","replace","result","upload","method","httpMethod","headers","remove","cancelCompression","cancellationId","Video","compress","subscription2","progress","downloadProgress","modifiedOptions","bitrate","compressionMethod","maxSize","minimumFileSizeForCompress","undefined","getCancellationId","activateBackgroundTask","onExpired","deactivateBackgroundTask","removeAllListeners"],"sourceRoot":"../../../src","sources":["Video/index.tsx"],"mappings":"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"}
@@ -31,6 +31,10 @@ export type CompressorOptions = {
31
31
  * The output that will return to user.
32
32
  */
33
33
  returnableOutputType?: ReturnableOutputType;
34
+ /***
35
+ * it is callback, only trigger when we pass image url from server
36
+ */
37
+ downloadProgress?: (progress: number) => void;
34
38
  };
35
39
  type ImageType = {
36
40
  compress(value: string, options?: CompressorOptions): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Image/index.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;AAEvC,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAElD,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;OAEG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C,CAAC;AAIF,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvE,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,SAUZ,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Image/index.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;AAEvC,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAElD,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;OAEG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C,CAAC;AAMF,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvE,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,SAkCZ,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -6,6 +6,8 @@ export interface Spec extends TurboModule {
6
6
  getRealPath(path: string, type: string): Promise<string>;
7
7
  getVideoMetaData(filePath: string): Promise<string>;
8
8
  getFileSize(filePath: string): Promise<string>;
9
+ addListener(eventName: string): void;
10
+ removeListeners(count: number): void;
9
11
  }
10
12
  declare const _default: Spec;
11
13
  export default _default;
@@ -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;IACvC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAChD;;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;IACvC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,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;CACtC;;AAED,wBAAoE"}
@@ -10,6 +10,7 @@ type videoCompresssionType = {
10
10
  compressionMethod?: compressionMethod;
11
11
  minimumFileSizeForCompress?: number;
12
12
  getCancellationId?: (cancellationId: string) => void;
13
+ downloadProgress?: (progress: number) => void;
13
14
  };
14
15
  export declare enum FileSystemSessionType {
15
16
  BACKGROUND = 0,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Video/index.tsx"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,MAAM,oBAAoB;IACtC,cAAc,IAAI;IAClB,SAAS,IAAI;CACd;AAED,MAAM,CAAC,OAAO,MAAM,kCAAkC,GAClD,MAAM,GACN,KAAK,GACL,OAAO,CAAC;AACZ,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAClD,KAAK,qBAAqB,GAAG;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,qBAAqB;IACvC,UAAU,IAAI;IACd,UAAU,IAAI;CACf;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,uBAAuB,GAAG,CAC1C;IACE,UAAU,CAAC,EAAE,oBAAoB,CAAC,cAAc,CAAC;CAClD,GACD;IACE,UAAU,EAAE,oBAAoB,CAAC,SAAS,CAAC;IAC3C,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,kCAAkC,CAAC;IAChD,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CACN,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,qBAAqB,EAC/B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACtC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,gBAAgB,CACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,uBAAuB,EAChC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACpD,OAAO,CAAC,GAAG,CAAC,CAAC;IAChB,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACtE,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;CAC1C,CAAC;AAMF,eAAO,MAAM,gBAAgB,QACtB,MAAM,WACF,MAAM,WACN,uBAAuB,0BACT,MAAM,SAAS,MAAM,KAAK,IAAI,kBACpD,QAAQ,GAAG,CA8Bb,CAAC;AAEF,eAAO,MAAM,iBAAiB,mBAAoB,MAAM,QAEvD,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,mBA6EW,CAAC;AAEzB,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Video/index.tsx"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,MAAM,oBAAoB;IACtC,cAAc,IAAI;IAClB,SAAS,IAAI;CACd;AAED,MAAM,CAAC,OAAO,MAAM,kCAAkC,GAClD,MAAM,GACN,KAAK,GACL,OAAO,CAAC;AACZ,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAClD,KAAK,qBAAqB,GAAG;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,qBAAqB;IACvC,UAAU,IAAI;IACd,UAAU,IAAI;CACf;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,uBAAuB,GAAG,CAC1C;IACE,UAAU,CAAC,EAAE,oBAAoB,CAAC,cAAc,CAAC;CAClD,GACD;IACE,UAAU,EAAE,oBAAoB,CAAC,SAAS,CAAC;IAC3C,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,kCAAkC,CAAC;IAChD,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CACN,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,qBAAqB,EAC/B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACtC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,gBAAgB,CACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,uBAAuB,EAChC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACpD,OAAO,CAAC,GAAG,CAAC,CAAC;IAChB,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACtE,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;CAC1C,CAAC;AAMF,eAAO,MAAM,gBAAgB,QACtB,MAAM,WACF,MAAM,WACN,uBAAuB,0BACT,MAAM,SAAS,MAAM,KAAK,IAAI,kBACpD,QAAQ,GAAG,CA8Bb,CAAC;AAEF,eAAO,MAAM,iBAAiB,mBAAoB,MAAM,QAEvD,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,mBAkGW,CAAC;AAEzB,eAAe,KAAK,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-compressor",
3
- "version": "1.7.0",
3
+ "version": "1.7.2",
4
4
  "description": "This library compress image, video and audio",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -53,7 +53,9 @@
53
53
  "compress-videos",
54
54
  "react-native-compress",
55
55
  "react-native-compressor",
56
- "compress-audio"
56
+ "compress-audio",
57
+ "whatsapp",
58
+ "compressor"
57
59
  ],
58
60
  "repository": "https://github.com/numandev1/react-native-compressor",
59
61
  "author": "numandev1 <muhammadnuman70@gmail.com> (https://github.com/numandev1)",
@@ -1,5 +1,8 @@
1
1
  import { Compressor } from '../Main';
2
+ import { uuidv4 } from '../utils';
2
3
  const base64UrlRegex = /^data:image\/.*;(?:charset=.{3,5};)?base64,/;
4
+ import type { NativeEventSubscription } from 'react-native';
5
+ import { NativeEventEmitter } from 'react-native';
3
6
 
4
7
  export type InputType = 'base64' | 'uri';
5
8
 
@@ -38,8 +41,14 @@ export type CompressorOptions = {
38
41
  * The output that will return to user.
39
42
  */
40
43
  returnableOutputType?: ReturnableOutputType;
44
+ /***
45
+ * it is callback, only trigger when we pass image url from server
46
+ */
47
+ downloadProgress?: (progress: number) => void;
41
48
  };
42
49
 
50
+ const ImageCompressEventEmitter = new NativeEventEmitter(Compressor);
51
+
43
52
  const NativeImage = Compressor;
44
53
 
45
54
  type ImageType = {
@@ -47,14 +56,38 @@ type ImageType = {
47
56
  };
48
57
 
49
58
  const Image: ImageType = {
50
- compress: (value, options) => {
59
+ compress: async (value, options = {}) => {
51
60
  if (!value) {
52
61
  throw new Error(
53
62
  'Compression value is empty, please provide a value for compression.'
54
63
  );
55
64
  }
56
- const cleanData = value.replace(base64UrlRegex, '');
57
- return NativeImage.image_compress(cleanData, options);
65
+
66
+ const uuid = uuidv4();
67
+ let subscription: NativeEventSubscription;
68
+ try {
69
+ if (options?.downloadProgress) {
70
+ //@ts-ignore
71
+ options.uuid = uuid;
72
+ subscription = ImageCompressEventEmitter.addListener(
73
+ 'downloadProgress',
74
+ (event: any) => {
75
+ if (event.uuid === uuid) {
76
+ options.downloadProgress &&
77
+ options.downloadProgress(event.data.progress);
78
+ }
79
+ }
80
+ );
81
+ }
82
+
83
+ const cleanData = value.replace(base64UrlRegex, '');
84
+ return await NativeImage.image_compress(cleanData, options);
85
+ } finally {
86
+ // @ts-ignore
87
+ if (subscription) {
88
+ subscription.remove();
89
+ }
90
+ }
58
91
  },
59
92
  };
60
93
 
@@ -8,6 +8,8 @@ export interface Spec extends TurboModule {
8
8
  getRealPath(path: string, type: string): Promise<string>;
9
9
  getVideoMetaData(filePath: string): Promise<string>;
10
10
  getFileSize(filePath: string): Promise<string>;
11
+ addListener(eventName: string): void;
12
+ removeListeners(count: number): void;
11
13
  }
12
14
 
13
15
  export default TurboModuleRegistry.getEnforcing<Spec>('Compressor');
@@ -19,6 +19,7 @@ type videoCompresssionType = {
19
19
  compressionMethod?: compressionMethod;
20
20
  minimumFileSizeForCompress?: number;
21
21
  getCancellationId?: (cancellationId: string) => void;
22
+ downloadProgress?: (progress: number) => void;
22
23
  };
23
24
 
24
25
  export declare enum FileSystemSessionType {
@@ -118,6 +119,8 @@ const Video: VideoCompressorType = {
118
119
  ) => {
119
120
  const uuid = uuidv4();
120
121
  let subscription: NativeEventSubscription;
122
+ let subscription2: NativeEventSubscription;
123
+
121
124
  try {
122
125
  if (onProgress) {
123
126
  subscription = VideoCompressEventEmitter.addListener(
@@ -129,6 +132,20 @@ const Video: VideoCompressorType = {
129
132
  }
130
133
  );
131
134
  }
135
+
136
+ if (options?.downloadProgress) {
137
+ //@ts-ignore
138
+ subscription2 = VideoCompressEventEmitter.addListener(
139
+ 'downloadProgress',
140
+ (event: any) => {
141
+ if (event.uuid === uuid) {
142
+ options.downloadProgress &&
143
+ options.downloadProgress(event.data.progress);
144
+ }
145
+ }
146
+ );
147
+ }
148
+
132
149
  const modifiedOptions: {
133
150
  uuid: string;
134
151
  bitrate?: number;
@@ -140,7 +157,7 @@ const Video: VideoCompressorType = {
140
157
  if (options?.compressionMethod) {
141
158
  modifiedOptions.compressionMethod = options?.compressionMethod;
142
159
  } else {
143
- modifiedOptions.compressionMethod = 'manual';
160
+ modifiedOptions.compressionMethod = 'auto';
144
161
  }
145
162
  if (options?.maxSize) {
146
163
  modifiedOptions.maxSize = options?.maxSize;
@@ -154,6 +171,7 @@ const Video: VideoCompressorType = {
154
171
  if (options?.getCancellationId) {
155
172
  options?.getCancellationId(uuid);
156
173
  }
174
+
157
175
  const result = await NativeVideoCompressor.compress(
158
176
  fileUrl,
159
177
  modifiedOptions
@@ -164,6 +182,10 @@ const Video: VideoCompressorType = {
164
182
  if (subscription) {
165
183
  subscription.remove();
166
184
  }
185
+ //@ts-ignore
186
+ if (subscription2) {
187
+ subscription2.remove();
188
+ }
167
189
  }
168
190
  },
169
191
  backgroundUpload,