@react-native-firebase/storage 14.11.1 → 14.12.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/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [14.12.0](https://github.com/invertase/react-native-firebase/compare/v14.11.2...v14.12.0) (2022-09-17)
7
+
8
+ **Note:** Version bump only for package @react-native-firebase/storage
9
+
10
+ ## [14.11.2](https://github.com/invertase/react-native-firebase/compare/v14.11.1...v14.11.2) (2022-09-17)
11
+
12
+ ### Bug Fixes
13
+
14
+ - **storage, ios:** correct storage metadata update / delete ([2dcb079](https://github.com/invertase/react-native-firebase/commit/2dcb0790c1812a33100cceea9dcb407d6a64cb87))
15
+ - **storage, ios:** surface underlying reason for unknown errors if possible ([6cd53ea](https://github.com/invertase/react-native-firebase/commit/6cd53eaca16ef52c52a28a7b209a7c8313fef08b))
16
+
6
17
  ## [14.11.1](https://github.com/invertase/react-native-firebase/compare/v14.11.0...v14.11.1) (2022-06-17)
7
18
 
8
19
  **Note:** Version bump only for package @react-native-firebase/storage
@@ -56,7 +56,8 @@
56
56
 
57
57
  + (NSString *)getTaskStatus:(FIRStorageTaskStatus)status;
58
58
 
59
- + (FIRStorageMetadata *)buildMetadataFromMap:(NSDictionary *)metadata;
59
+ + (FIRStorageMetadata *)buildMetadataFromMap:(NSDictionary *)metadata
60
+ existingMetadata:(FIRStorageMetadata *)existingMetadata;
60
61
 
61
62
  + (NSArray *)getErrorCodeMessage:(NSError *)error;
62
63
 
@@ -392,9 +392,64 @@
392
392
  }
393
393
  }
394
394
 
395
- + (FIRStorageMetadata *)buildMetadataFromMap:(NSDictionary *)metadata {
396
- FIRStorageMetadata *storageMetadata = [[FIRStorageMetadata alloc] initWithDictionary:metadata];
397
- storageMetadata.customMetadata = [metadata[@"customMetadata"] mutableCopy];
395
+ + (FIRStorageMetadata *)buildMetadataFromMap:(NSDictionary *)metadata
396
+ existingMetadata:(nullable FIRStorageMetadata *)existingMetadata {
397
+ // If an existing metadata was passed in, modify it with our map, otherwise init a fresh copy
398
+ FIRStorageMetadata *storageMetadata = existingMetadata;
399
+ if (storageMetadata == nil) {
400
+ storageMetadata = [[FIRStorageMetadata alloc] init];
401
+ }
402
+
403
+ if (metadata[@"cacheControl"] == [NSNull null]) {
404
+ storageMetadata.cacheControl = nil;
405
+ } else {
406
+ storageMetadata.cacheControl = metadata[@"cacheControl"];
407
+ }
408
+
409
+ if (metadata[@"contentLanguage"] == [NSNull null]) {
410
+ storageMetadata.contentLanguage = nil;
411
+ } else {
412
+ storageMetadata.contentLanguage = metadata[@"contentLanguage"];
413
+ }
414
+
415
+ if (metadata[@"contentEncoding"] == [NSNull null]) {
416
+ storageMetadata.contentEncoding = nil;
417
+ } else {
418
+ storageMetadata.contentEncoding = metadata[@"contentEncoding"];
419
+ }
420
+
421
+ if (metadata[@"contentDisposition"] == [NSNull null]) {
422
+ storageMetadata.contentDisposition = nil;
423
+ } else {
424
+ storageMetadata.contentDisposition = metadata[@"contentDisposition"];
425
+ }
426
+
427
+ if (metadata[@"contentType"] == [NSNull null]) {
428
+ storageMetadata.contentType = nil;
429
+ } else {
430
+ storageMetadata.contentType = metadata[@"contentType"];
431
+ }
432
+
433
+ if (metadata[@"customMetadata"] == [NSNull null]) {
434
+ storageMetadata.customMetadata = @{};
435
+ } else {
436
+ NSMutableDictionary *customMetadata = [metadata[@"customMetadata"] mutableCopy];
437
+ for (NSString *key in customMetadata.allKeys) {
438
+ if (customMetadata[key] == [NSNull null] || customMetadata[key] == nil) {
439
+ [customMetadata removeObjectForKey:key];
440
+ }
441
+ }
442
+ storageMetadata.customMetadata = customMetadata;
443
+ }
444
+
445
+ // md5hash may be settable but is not update-able, so just test for existence and carry it in
446
+ // FIXME this will need a fix related to
447
+ // https://github.com/firebase/firebase-ios-sdk/issues/9849#issuecomment-1159292592 if
448
+ // (metadata[@"md5hash"]) {
449
+ // NSLog(@"STORAGE md5hash was set");
450
+ // storageMetadata.md5Hash = metadata[@"md5hash"];
451
+ // }
452
+
398
453
  return storageMetadata;
399
454
  }
400
455
 
@@ -417,7 +472,13 @@
417
472
  code = @"invalid-device-file-path";
418
473
  message = @"The specified device file path is invalid or is restricted.";
419
474
  } else {
420
- message = @"An unknown error has occurred.";
475
+ if (userInfo[@"ResponseBody"]) {
476
+ message =
477
+ [NSString stringWithFormat:@"An unknown error has occurred. (underlying reason '%@')",
478
+ userInfo[@"ResponseBody"]];
479
+ } else {
480
+ message = @"An unknown error has occurred.";
481
+ }
421
482
  }
422
483
  break;
423
484
  case FIRStorageErrorCodeObjectNotFound:
@@ -143,17 +143,26 @@ RCT_EXPORT_METHOD(updateMetadata
143
143
  : (RCTPromiseResolveBlock)resolve
144
144
  : (RCTPromiseRejectBlock)reject) {
145
145
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
146
- FIRStorageMetadata *storageMetadata = [RNFBStorageCommon buildMetadataFromMap:metadata];
147
146
 
148
- [storageReference
149
- updateMetadata:storageMetadata
150
- completion:^(FIRStorageMetadata *_Nullable metadata, NSError *_Nullable error) {
151
- if (error != nil) {
152
- [self promiseRejectStorageException:reject error:error];
153
- } else {
154
- resolve([RNFBStorageCommon metadataToDict:metadata]);
155
- }
156
- }];
147
+ [storageReference metadataWithCompletion:^(FIRStorageMetadata *_Nullable fetchedMetadata,
148
+ NSError *_Nullable error) {
149
+ if (error != nil) {
150
+ [self promiseRejectStorageException:reject error:error];
151
+ } else {
152
+ FIRStorageMetadata *storageMetadata =
153
+ [RNFBStorageCommon buildMetadataFromMap:metadata existingMetadata:fetchedMetadata];
154
+
155
+ [storageReference updateMetadata:storageMetadata
156
+ completion:^(FIRStorageMetadata *_Nullable updatedMetadata,
157
+ NSError *_Nullable error) {
158
+ if (error != nil) {
159
+ [self promiseRejectStorageException:reject error:error];
160
+ } else {
161
+ resolve([RNFBStorageCommon metadataToDict:updatedMetadata]);
162
+ }
163
+ }];
164
+ }
165
+ }];
157
166
  }
158
167
 
159
168
  /**
@@ -391,7 +400,8 @@ RCT_EXPORT_METHOD(putFile
391
400
  : (nonnull NSNumber *)taskId
392
401
  : (RCTPromiseResolveBlock)resolve
393
402
  : (RCTPromiseRejectBlock)reject) {
394
- FIRStorageMetadata *storageMetadata = [RNFBStorageCommon buildMetadataFromMap:metadata];
403
+ FIRStorageMetadata *storageMetadata = [RNFBStorageCommon buildMetadataFromMap:metadata
404
+ existingMetadata:nil];
395
405
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
396
406
 
397
407
  [RNFBStorageCommon
@@ -462,7 +472,8 @@ RCT_EXPORT_METHOD(putString
462
472
  : (nonnull NSNumber *)taskId
463
473
  : (RCTPromiseResolveBlock)resolve
464
474
  : (RCTPromiseRejectBlock)reject) {
465
- FIRStorageMetadata *storageMetadata = [RNFBStorageCommon buildMetadataFromMap:metadata];
475
+ FIRStorageMetadata *storageMetadata = [RNFBStorageCommon buildMetadataFromMap:metadata
476
+ existingMetadata:nil];
466
477
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
467
478
 
468
479
  __block FIRStorageUploadTask *uploadTask;
package/lib/utils.js CHANGED
@@ -88,9 +88,9 @@ export function validateMetadata(metadata, update = true) {
88
88
  `firebase.storage.SettableMetadata invalid property '${key}' should be a string or null value.`,
89
89
  );
90
90
  }
91
- } else if (!isObject(value)) {
91
+ } else if (!isObject(value) && !isNull(value)) {
92
92
  throw new Error(
93
- 'firebase.storage.SettableMetadata.customMetadata must be an object of keys and string values.',
93
+ 'firebase.storage.SettableMetadata.customMetadata must be an object of keys and string values or null value.',
94
94
  );
95
95
  }
96
96
  }
package/lib/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- module.exports = '14.11.1';
2
+ module.exports = '14.12.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native-firebase/storage",
3
- "version": "14.11.1",
3
+ "version": "14.12.0",
4
4
  "author": "Invertase <oss@invertase.io> (http://invertase.io)",
5
5
  "description": "React Native Firebase - React Native Firebase provides native integration with Cloud Storage, providing support to upload and download files directly from your device and from your Firebase Cloud Storage bucket.",
6
6
  "main": "lib/index.js",
@@ -29,10 +29,10 @@
29
29
  "download"
30
30
  ],
31
31
  "peerDependencies": {
32
- "@react-native-firebase/app": "14.11.1"
32
+ "@react-native-firebase/app": "14.12.0"
33
33
  },
34
34
  "publishConfig": {
35
35
  "access": "public"
36
36
  },
37
- "gitHead": "b1a430bbf36a41076b33550fec113fa0e44583b4"
37
+ "gitHead": "1c777417365db4ce127b2cbdb07ae1d2d56e2d95"
38
38
  }