@ammarahmed/react-native-upload 6.20.0 → 6.22.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.
package/dist/index.d.ts CHANGED
@@ -141,7 +141,7 @@ declare class Upload {
141
141
  private startPromise;
142
142
  private resolveStart;
143
143
  private rejectStart;
144
- private changeCallback;
144
+ private changeCallbacks;
145
145
  constructor(config: UploadOptions);
146
146
  /**
147
147
  * Create a new upload instance or return existing one for the same path
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAIL,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC;AAE3E,MAAM,MAAM,mBAAmB,GAAG;IAChC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5C;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE;QACX,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,SAAS,GACT,aAAa,GACb,aAAa,CAAC;AAalB,eAAO,MAAM,WAAW;;;;;;CAMd,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAExE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,YAAY,CAAC;CACrB;AAiCD,cAAM,MAAM;IACV,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,YAAY,CAAiD;IACrE,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,cAAc,CAAqD;gBAE/D,MAAM,EAAE,aAAa;IAIjC;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,sBAAsB,GAAG,MAAM;IAkBrE;;OAEG;WACU,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA2B7D;;OAEG;IACH,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE;IAMzB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;IAK5D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;IAsDpC,OAAO,CAAC,mBAAmB;IAwE3B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAehC;;OAEG;IACH,SAAS,IAAI,YAAY;IAIzB;;OAEG;IACH,KAAK,IAAI,MAAM,GAAG,IAAI;IAItB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,OAAO,CAAC,OAAO;CAOhB;AAGD,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,OAAO,CAAC,QAAQ,CAO1D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,SAAS,aAAa,KAAG,OAAO,CAAC,MAAM,CAChC,CAAC;AAEpC,eAAO,MAAM,YAAY,GAAI,gBAAgB,MAAM,KAAG,OAAO,CAAC,OAAO,CAKpE,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,WAAW,WAAW,EACtB,UAAU,MAAM,EAChB,UAAU,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,KACxC,mBASF,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAAO,IAIzC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,IAEnD,CAAC;AAEF,eAAO,MAAM,aAAa,QAAO,OAAO,CAAC,gBAAgB,EAAE,CAE1D,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -41,7 +41,7 @@ import { NativeModules, DeviceEventEmitter, Platform, } from 'react-native';
41
41
  var NativeModule = NativeModules.RNFileUploader;
42
42
  var eventPrefix = 'RNFileUploader-';
43
43
  // for IOS, register event listeners or else they don't fire on DeviceEventEmitter
44
- if (NativeModules.RNFileUploader) {
44
+ if (NativeModules.RNFileUploader && NativeModule.addListener) {
45
45
  NativeModule.addListener(eventPrefix + 'progress');
46
46
  NativeModule.addListener(eventPrefix + 'error');
47
47
  NativeModule.addListener(eventPrefix + 'cancelled');
@@ -90,7 +90,7 @@ var Upload = /** @class */ (function () {
90
90
  this.startPromise = null;
91
91
  this.resolveStart = null;
92
92
  this.rejectStart = null;
93
- this.changeCallback = null;
93
+ this.changeCallbacks = [];
94
94
  this.config = config;
95
95
  }
96
96
  /**
@@ -131,6 +131,10 @@ var Upload = /** @class */ (function () {
131
131
  upload = new Upload({ url: '', path: '' });
132
132
  upload.uploadId = uploadId;
133
133
  upload.status = upload.mapNativeStateToStatus(uploadInfo.state);
134
+ upload.startPromise = new Promise(function (resolve, reject) {
135
+ upload.resolveStart = resolve;
136
+ upload.rejectStart = reject;
137
+ });
134
138
  // Register and setup listeners
135
139
  UploadRegistry.register(upload);
136
140
  upload.setupEventListeners();
@@ -151,7 +155,9 @@ var Upload = /** @class */ (function () {
151
155
  * Set a callback to be called whenever the upload state changes
152
156
  */
153
157
  Upload.prototype.onChange = function (callback) {
154
- this.changeCallback = callback;
158
+ if (!this.changeCallbacks.find(function (cb) { return cb === callback; })) {
159
+ this.changeCallbacks.push(callback);
160
+ }
155
161
  return this;
156
162
  };
157
163
  /**
@@ -164,18 +170,20 @@ var Upload = /** @class */ (function () {
164
170
  return __generator(this, function (_b) {
165
171
  switch (_b.label) {
166
172
  case 0:
167
- if (this.uploadId) {
168
- throw new Error('Upload already started');
169
- }
170
- if (this.startPromise) {
173
+ if (this.uploadId && this.startPromise) {
171
174
  return [2 /*return*/, this.startPromise];
172
175
  }
173
- if (!this.config.path) return [3 /*break*/, 2];
176
+ if (!this.config.customUploadId) return [3 /*break*/, 2];
174
177
  return [4 /*yield*/, getAllUploads()];
175
178
  case 1:
176
179
  nativeUploads = _b.sent();
177
- existingUpload = nativeUploads.find(function (u) { return u.state === 'running' || u.state === 'pending'; });
178
- if (existingUpload && !this.config.customUploadId) {
180
+ existingUpload = nativeUploads.find(function (u) {
181
+ return u.id === _this.config.customUploadId &&
182
+ u.state !== 'error' &&
183
+ u.state !== 'cancelled';
184
+ });
185
+ console.log('FOUND EXISTING UPLOAD?', existingUpload, nativeUploads);
186
+ if (existingUpload) {
179
187
  console.warn("Found existing upload in native side. Resuming upload: ".concat(existingUpload.id));
180
188
  this.uploadId = existingUpload.id;
181
189
  this.status = this.mapNativeStateToStatus(existingUpload.state);
@@ -216,6 +224,7 @@ var Upload = /** @class */ (function () {
216
224
  var _this = this;
217
225
  // Progress listener
218
226
  var progressSubscription = DeviceEventEmitter.addListener(eventPrefix + 'progress', function (data) {
227
+ console.log('progress', data.id);
219
228
  if (_this.uploadId && data.id === _this.uploadId) {
220
229
  _this.notifyChange({
221
230
  status: UploadState.Running,
@@ -269,8 +278,8 @@ var Upload = /** @class */ (function () {
269
278
  this.notifyChange({ status: status, error: error, responseCode: responseCode, responseBody: responseBody });
270
279
  };
271
280
  Upload.prototype.notifyChange = function (event) {
272
- if (this.changeCallback) {
273
- this.changeCallback(event);
281
+ if (this.changeCallbacks.length) {
282
+ this.changeCallbacks.forEach(function (cb) { return cb(event); });
274
283
  }
275
284
  };
276
285
  Upload.prototype.mapNativeStateToStatus = function (state) {
@@ -385,8 +394,17 @@ export var canSuspendIfBackground = function () {
385
394
  export var shouldLimitNetwork = function (limit) {
386
395
  NativeModule.shouldLimitNetwork(limit);
387
396
  };
388
- export var getAllUploads = function () {
389
- return NativeModule.getAllUploads();
390
- };
397
+ export var getAllUploads = function () { return __awaiter(void 0, void 0, void 0, function () {
398
+ var allUploads;
399
+ return __generator(this, function (_a) {
400
+ switch (_a.label) {
401
+ case 0: return [4 /*yield*/, NativeModule.getAllUploads()];
402
+ case 1:
403
+ allUploads = _a.sent();
404
+ console.log(allUploads);
405
+ return [2 /*return*/, allUploads];
406
+ }
407
+ });
408
+ }); };
391
409
  export { Upload };
392
410
  export default Upload;
@@ -417,7 +417,11 @@ totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend {
417
417
  {
418
418
  progress = 100.0 * (float)totalBytesSent / (float)totalBytesExpectedToSend;
419
419
  }
420
- [self _sendEventWithName:@"RNFileUploader-progress" body:@{ @"id": task.taskDescription, @"progress": [NSNumber numberWithFloat:progress] }];
420
+ [self _sendEventWithName:@"RNFileUploader-progress" body:@{ @"id": task.taskDescription,
421
+ @"progress": [NSNumber numberWithFloat:progress],
422
+ @"totalBytes": [NSNumber numberWithInteger:totalBytesExpectedToSend],
423
+ @"uploadedBytes": [NSNumber numberWithInteger:totalBytesSent]
424
+ }];
421
425
  }
422
426
 
423
427
  - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ammarahmed/react-native-upload",
3
- "version": "6.20.0",
3
+ "version": "6.22.0",
4
4
  "description": "Cross platform http post file uploader with Android and iOS background support.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -130,7 +130,7 @@ const NativeModule = NativeModules.RNFileUploader;
130
130
  const eventPrefix = 'RNFileUploader-';
131
131
 
132
132
  // for IOS, register event listeners or else they don't fire on DeviceEventEmitter
133
- if (NativeModules.RNFileUploader) {
133
+ if (NativeModules.RNFileUploader && NativeModule.addListener) {
134
134
  NativeModule.addListener(eventPrefix + 'progress');
135
135
  NativeModule.addListener(eventPrefix + 'error');
136
136
  NativeModule.addListener(eventPrefix + 'cancelled');
@@ -208,7 +208,7 @@ class Upload {
208
208
  private startPromise: Promise<UploadResult> | null = null;
209
209
  private resolveStart: ((result: UploadResult) => void) | null = null;
210
210
  private rejectStart: ((error: Error) => void) | null = null;
211
- private changeCallback: ((event: UploadChangeEvent) => void) | null = null;
211
+ private changeCallbacks: ((event: UploadChangeEvent) => void)[] = [];
212
212
 
213
213
  constructor(config: UploadOptions) {
214
214
  this.config = config;
@@ -222,6 +222,7 @@ class Upload {
222
222
  const existingUpload = config.customUploadId
223
223
  ? UploadRegistry.getById(config.customUploadId)
224
224
  : null;
225
+
225
226
  if (existingUpload && existingUpload.isRunning()) {
226
227
  console.warn(
227
228
  `Upload already in progress for path: ${
@@ -258,8 +259,14 @@ class Upload {
258
259
  upload.uploadId = uploadId;
259
260
  upload.status = upload.mapNativeStateToStatus(uploadInfo.state);
260
261
 
262
+ upload.startPromise = new Promise<UploadResult>((resolve, reject) => {
263
+ upload.resolveStart = resolve;
264
+ upload.rejectStart = reject;
265
+ });
266
+
261
267
  // Register and setup listeners
262
268
  UploadRegistry.register(upload);
269
+
263
270
  upload.setupEventListeners();
264
271
 
265
272
  return upload;
@@ -278,7 +285,9 @@ class Upload {
278
285
  * Set a callback to be called whenever the upload state changes
279
286
  */
280
287
  onChange(callback: (event: UploadChangeEvent) => void): this {
281
- this.changeCallback = callback;
288
+ if (!this.changeCallbacks.find(cb => cb === callback)) {
289
+ this.changeCallbacks.push(callback);
290
+ }
282
291
  return this;
283
292
  }
284
293
 
@@ -286,22 +295,21 @@ class Upload {
286
295
  * Start the upload - resolves when upload completes, is cancelled, or errors
287
296
  */
288
297
  async start(): Promise<UploadResult> {
289
- if (this.uploadId) {
290
- throw new Error('Upload already started');
291
- }
292
-
293
- if (this.startPromise) {
298
+ if (this.uploadId && this.startPromise) {
294
299
  return this.startPromise;
295
300
  }
296
-
297
301
  // Check if there's an existing upload for this path in native side
298
- if (this.config.path) {
302
+ if (this.config.customUploadId) {
299
303
  const nativeUploads = await getAllUploads();
300
304
  const existingUpload = nativeUploads.find(
301
- u => u.state === 'running' || u.state === 'pending',
305
+ u =>
306
+ u.id === this.config.customUploadId &&
307
+ u.state !== 'error' &&
308
+ u.state !== 'cancelled',
302
309
  );
310
+ console.log('FOUND EXISTING UPLOAD?', existingUpload, nativeUploads);
303
311
 
304
- if (existingUpload && !this.config.customUploadId) {
312
+ if (existingUpload) {
305
313
  console.warn(
306
314
  `Found existing upload in native side. Resuming upload: ${
307
315
  existingUpload.id
@@ -344,6 +352,7 @@ class Upload {
344
352
  const progressSubscription = DeviceEventEmitter.addListener(
345
353
  eventPrefix + 'progress',
346
354
  (data: ProgressData) => {
355
+ console.log('progress', data.id);
347
356
  if (this.uploadId && data.id === this.uploadId) {
348
357
  this.notifyChange({
349
358
  status: UploadState.Running,
@@ -422,8 +431,8 @@ class Upload {
422
431
  }
423
432
 
424
433
  private notifyChange(event: UploadChangeEvent): void {
425
- if (this.changeCallback) {
426
- this.changeCallback(event);
434
+ if (this.changeCallbacks.length) {
435
+ this.changeCallbacks.forEach(cb => cb(event));
427
436
  }
428
437
  }
429
438
 
@@ -545,8 +554,10 @@ export const shouldLimitNetwork = (limit: boolean): void => {
545
554
  NativeModule.shouldLimitNetwork(limit);
546
555
  };
547
556
 
548
- export const getAllUploads = (): Promise<NativeUploadInfo[]> => {
549
- return NativeModule.getAllUploads();
557
+ export const getAllUploads = async (): Promise<NativeUploadInfo[]> => {
558
+ const allUploads = await NativeModule.getAllUploads();
559
+ console.log(allUploads);
560
+ return allUploads;
550
561
  };
551
562
 
552
563
  export { Upload };
@@ -1,254 +0,0 @@
1
- // !$*UTF8*$!
2
- {
3
- archiveVersion = 1;
4
- classes = {
5
- };
6
- objectVersion = 46;
7
- objects = {
8
-
9
- /* Begin PBXBuildFile section */
10
- DCC748851E044F8700EA453E /* VydiaRNFileUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = DCC748841E044F8700EA453E /* VydiaRNFileUploader.m */; };
11
- /* End PBXBuildFile section */
12
-
13
- /* Begin PBXCopyFilesBuildPhase section */
14
- 014A3B5A1C6CF33500B6D375 /* CopyFiles */ = {
15
- isa = PBXCopyFilesBuildPhase;
16
- buildActionMask = 2147483647;
17
- dstPath = "include/$(PRODUCT_NAME)";
18
- dstSubfolderSpec = 16;
19
- files = (
20
- );
21
- runOnlyForDeploymentPostprocessing = 0;
22
- };
23
- /* End PBXCopyFilesBuildPhase section */
24
-
25
- /* Begin PBXFileReference section */
26
- 014A3B5C1C6CF33500B6D375 /* libVydiaRNFileUploader.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libVydiaRNFileUploader.a; sourceTree = BUILT_PRODUCTS_DIR; };
27
- DCC748841E044F8700EA453E /* VydiaRNFileUploader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VydiaRNFileUploader.m; sourceTree = "<group>"; };
28
- /* End PBXFileReference section */
29
-
30
- /* Begin PBXFrameworksBuildPhase section */
31
- 014A3B591C6CF33500B6D375 /* Frameworks */ = {
32
- isa = PBXFrameworksBuildPhase;
33
- buildActionMask = 2147483647;
34
- files = (
35
- );
36
- runOnlyForDeploymentPostprocessing = 0;
37
- };
38
- /* End PBXFrameworksBuildPhase section */
39
-
40
- /* Begin PBXGroup section */
41
- 014A3B531C6CF33500B6D375 = {
42
- isa = PBXGroup;
43
- children = (
44
- DCC748841E044F8700EA453E /* VydiaRNFileUploader.m */,
45
- 014A3B5D1C6CF33500B6D375 /* Products */,
46
- );
47
- sourceTree = "<group>";
48
- };
49
- 014A3B5D1C6CF33500B6D375 /* Products */ = {
50
- isa = PBXGroup;
51
- children = (
52
- 014A3B5C1C6CF33500B6D375 /* libVydiaRNFileUploader.a */,
53
- );
54
- name = Products;
55
- sourceTree = "<group>";
56
- };
57
- /* End PBXGroup section */
58
-
59
- /* Begin PBXNativeTarget section */
60
- 014A3B5B1C6CF33500B6D375 /* VydiaRNFileUploader */ = {
61
- isa = PBXNativeTarget;
62
- buildConfigurationList = 014A3B651C6CF33500B6D375 /* Build configuration list for PBXNativeTarget "VydiaRNFileUploader" */;
63
- buildPhases = (
64
- 014A3B581C6CF33500B6D375 /* Sources */,
65
- 014A3B591C6CF33500B6D375 /* Frameworks */,
66
- 014A3B5A1C6CF33500B6D375 /* CopyFiles */,
67
- );
68
- buildRules = (
69
- );
70
- dependencies = (
71
- );
72
- name = VydiaRNFileUploader;
73
- productName = VydiaRNFileUploader;
74
- productReference = 014A3B5C1C6CF33500B6D375 /* libVydiaRNFileUploader.a */;
75
- productType = "com.apple.product-type.library.static";
76
- };
77
- /* End PBXNativeTarget section */
78
-
79
- /* Begin PBXProject section */
80
- 014A3B541C6CF33500B6D375 /* Project object */ = {
81
- isa = PBXProject;
82
- attributes = {
83
- LastUpgradeCheck = 0720;
84
- ORGANIZATIONNAME = "Marc Shilling";
85
- TargetAttributes = {
86
- 014A3B5B1C6CF33500B6D375 = {
87
- CreatedOnToolsVersion = 7.2.1;
88
- };
89
- };
90
- };
91
- buildConfigurationList = 014A3B571C6CF33500B6D375 /* Build configuration list for PBXProject "VydiaRNFileUploader" */;
92
- compatibilityVersion = "Xcode 3.2";
93
- developmentRegion = English;
94
- hasScannedForEncodings = 0;
95
- knownRegions = (
96
- en,
97
- );
98
- mainGroup = 014A3B531C6CF33500B6D375;
99
- productRefGroup = 014A3B5D1C6CF33500B6D375 /* Products */;
100
- projectDirPath = "";
101
- projectRoot = "";
102
- targets = (
103
- 014A3B5B1C6CF33500B6D375 /* VydiaRNFileUploader */,
104
- );
105
- };
106
- /* End PBXProject section */
107
-
108
- /* Begin PBXSourcesBuildPhase section */
109
- 014A3B581C6CF33500B6D375 /* Sources */ = {
110
- isa = PBXSourcesBuildPhase;
111
- buildActionMask = 2147483647;
112
- files = (
113
- DCC748851E044F8700EA453E /* VydiaRNFileUploader.m in Sources */,
114
- );
115
- runOnlyForDeploymentPostprocessing = 0;
116
- };
117
- /* End PBXSourcesBuildPhase section */
118
-
119
- /* Begin XCBuildConfiguration section */
120
- 014A3B631C6CF33500B6D375 /* Debug */ = {
121
- isa = XCBuildConfiguration;
122
- buildSettings = {
123
- ALWAYS_SEARCH_USER_PATHS = NO;
124
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
125
- CLANG_CXX_LIBRARY = "libc++";
126
- CLANG_ENABLE_MODULES = YES;
127
- CLANG_ENABLE_OBJC_ARC = YES;
128
- CLANG_WARN_BOOL_CONVERSION = YES;
129
- CLANG_WARN_CONSTANT_CONVERSION = YES;
130
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
131
- CLANG_WARN_EMPTY_BODY = YES;
132
- CLANG_WARN_ENUM_CONVERSION = YES;
133
- CLANG_WARN_INT_CONVERSION = YES;
134
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
135
- CLANG_WARN_UNREACHABLE_CODE = YES;
136
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
137
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
138
- COPY_PHASE_STRIP = NO;
139
- DEBUG_INFORMATION_FORMAT = dwarf;
140
- ENABLE_STRICT_OBJC_MSGSEND = YES;
141
- ENABLE_TESTABILITY = YES;
142
- GCC_C_LANGUAGE_STANDARD = gnu99;
143
- GCC_DYNAMIC_NO_PIC = NO;
144
- GCC_NO_COMMON_BLOCKS = YES;
145
- GCC_OPTIMIZATION_LEVEL = 0;
146
- GCC_PREPROCESSOR_DEFINITIONS = (
147
- "DEBUG=1",
148
- "$(inherited)",
149
- );
150
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
151
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
152
- GCC_WARN_UNDECLARED_SELECTOR = YES;
153
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
154
- GCC_WARN_UNUSED_FUNCTION = YES;
155
- GCC_WARN_UNUSED_VARIABLE = YES;
156
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
157
- MTL_ENABLE_DEBUG_INFO = YES;
158
- ONLY_ACTIVE_ARCH = YES;
159
- SDKROOT = iphoneos;
160
- };
161
- name = Debug;
162
- };
163
- 014A3B641C6CF33500B6D375 /* Release */ = {
164
- isa = XCBuildConfiguration;
165
- buildSettings = {
166
- ALWAYS_SEARCH_USER_PATHS = NO;
167
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
168
- CLANG_CXX_LIBRARY = "libc++";
169
- CLANG_ENABLE_MODULES = YES;
170
- CLANG_ENABLE_OBJC_ARC = YES;
171
- CLANG_WARN_BOOL_CONVERSION = YES;
172
- CLANG_WARN_CONSTANT_CONVERSION = YES;
173
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
174
- CLANG_WARN_EMPTY_BODY = YES;
175
- CLANG_WARN_ENUM_CONVERSION = YES;
176
- CLANG_WARN_INT_CONVERSION = YES;
177
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
178
- CLANG_WARN_UNREACHABLE_CODE = YES;
179
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
180
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
181
- COPY_PHASE_STRIP = NO;
182
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
183
- ENABLE_NS_ASSERTIONS = NO;
184
- ENABLE_STRICT_OBJC_MSGSEND = YES;
185
- GCC_C_LANGUAGE_STANDARD = gnu99;
186
- GCC_NO_COMMON_BLOCKS = YES;
187
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
188
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
189
- GCC_WARN_UNDECLARED_SELECTOR = YES;
190
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
191
- GCC_WARN_UNUSED_FUNCTION = YES;
192
- GCC_WARN_UNUSED_VARIABLE = YES;
193
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
194
- MTL_ENABLE_DEBUG_INFO = NO;
195
- SDKROOT = iphoneos;
196
- VALIDATE_PRODUCT = YES;
197
- };
198
- name = Release;
199
- };
200
- 014A3B661C6CF33500B6D375 /* Debug */ = {
201
- isa = XCBuildConfiguration;
202
- buildSettings = {
203
- HEADER_SEARCH_PATHS = (
204
- "$(SRCROOT)/../node_modules/react-native/React/**",
205
- "$(SRCROOT)/../../react-native/React/**",
206
- "$(SRCROOT)/../Example/node_modules/react-native/React/**",
207
- "$(SRCROOT)/../../../ios/Pods/Headers/Public/**",
208
- );
209
- OTHER_LDFLAGS = "-ObjC";
210
- PRODUCT_NAME = "$(TARGET_NAME)";
211
- SKIP_INSTALL = YES;
212
- };
213
- name = Debug;
214
- };
215
- 014A3B671C6CF33500B6D375 /* Release */ = {
216
- isa = XCBuildConfiguration;
217
- buildSettings = {
218
- HEADER_SEARCH_PATHS = (
219
- "$(SRCROOT)/../node_modules/react-native/React/**",
220
- "$(SRCROOT)/../../react-native/React/**",
221
- "$(SRCROOT)/../Example/node_modules/react-native/React/**",
222
- "$(SRCROOT)/../../../ios/Pods/Headers/Public/**",
223
- );
224
- OTHER_LDFLAGS = "-ObjC";
225
- PRODUCT_NAME = "$(TARGET_NAME)";
226
- SKIP_INSTALL = YES;
227
- };
228
- name = Release;
229
- };
230
- /* End XCBuildConfiguration section */
231
-
232
- /* Begin XCConfigurationList section */
233
- 014A3B571C6CF33500B6D375 /* Build configuration list for PBXProject "VydiaRNFileUploader" */ = {
234
- isa = XCConfigurationList;
235
- buildConfigurations = (
236
- 014A3B631C6CF33500B6D375 /* Debug */,
237
- 014A3B641C6CF33500B6D375 /* Release */,
238
- );
239
- defaultConfigurationIsVisible = 0;
240
- defaultConfigurationName = Release;
241
- };
242
- 014A3B651C6CF33500B6D375 /* Build configuration list for PBXNativeTarget "VydiaRNFileUploader" */ = {
243
- isa = XCConfigurationList;
244
- buildConfigurations = (
245
- 014A3B661C6CF33500B6D375 /* Debug */,
246
- 014A3B671C6CF33500B6D375 /* Release */,
247
- );
248
- defaultConfigurationIsVisible = 0;
249
- defaultConfigurationName = Release;
250
- };
251
- /* End XCConfigurationList section */
252
- };
253
- rootObject = 014A3B541C6CF33500B6D375 /* Project object */;
254
- }