@react-native-firebase/storage 15.7.0 → 16.0.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,14 @@
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
+ ## [16.0.0](https://github.com/invertase/react-native-firebase/compare/v15.7.1...v16.0.0) (2022-10-19)
7
+
8
+ **Note:** Version bump only for package @react-native-firebase/storage
9
+
10
+ ## [15.7.1](https://github.com/invertase/react-native-firebase/compare/v15.7.0...v15.7.1) (2022-10-19)
11
+
12
+ **Note:** Version bump only for package @react-native-firebase/storage
13
+
6
14
  # [15.7.0](https://github.com/invertase/react-native-firebase/compare/v15.6.0...v15.7.0) (2022-10-01)
7
15
 
8
16
  **Note:** Version bump only for package @react-native-firebase/storage
@@ -8,6 +8,8 @@ firebase_sdk_version = appPackage['sdkVersions']['ios']['firebase']
8
8
  if coreVersionDetected != coreVersionRequired
9
9
  Pod::UI.warn "NPM package '#{package['name']}' depends on '#{appPackage['name']}' v#{coreVersionRequired} but found v#{coreVersionDetected}, this might cause build issues or runtime crashes."
10
10
  end
11
+ firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget']
12
+ firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget']
11
13
 
12
14
  Pod::Spec.new do |s|
13
15
  s.name = "RNFBStorage"
@@ -21,7 +23,8 @@ Pod::Spec.new do |s|
21
23
  s.authors = "Invertase Limited"
22
24
  s.source = { :git => "https://github.com/invertase/react-native-firebase.git", :tag => "v#{s.version}" }
23
25
  s.social_media_url = 'http://twitter.com/invertaseio'
24
- s.ios.deployment_target = "10.0"
26
+ s.ios.deployment_target = firebase_ios_target
27
+ s.macos.deployment_target = firebase_macos_target
25
28
  s.source_files = 'ios/**/*.{h,m}'
26
29
 
27
30
  # React Native dependencies
@@ -1,3 +1,5 @@
1
+ import { describe, expect, it } from '@jest/globals';
2
+
1
3
  import storage, { firebase } from '../lib';
2
4
 
3
5
  describe('Storage', function () {
@@ -57,7 +57,8 @@
57
57
  + (NSString *)getTaskStatus:(FIRStorageTaskStatus)status;
58
58
 
59
59
  + (FIRStorageMetadata *)buildMetadataFromMap:(NSDictionary *)metadata
60
- existingMetadata:(FIRStorageMetadata *)existingMetadata;
60
+ existingMetadata:(FIRStorageMetadata *)existingMetadata
61
+ path:(NSString *)path;
61
62
 
62
63
  + (NSArray *)getErrorCodeMessage:(NSError *)error;
63
64
 
@@ -393,11 +393,18 @@
393
393
  }
394
394
 
395
395
  + (FIRStorageMetadata *)buildMetadataFromMap:(NSDictionary *)metadata
396
- existingMetadata:(nullable FIRStorageMetadata *)existingMetadata {
396
+ existingMetadata:(nullable FIRStorageMetadata *)existingMetadata
397
+ path:(NSString *)path {
397
398
  // If an existing metadata was passed in, modify it with our map, otherwise init a fresh copy
398
399
  FIRStorageMetadata *storageMetadata = existingMetadata;
399
400
  if (storageMetadata == nil) {
400
- storageMetadata = [[FIRStorageMetadata alloc] init];
401
+ // NOTE: Firebase iOS SDK 10 requires a "path" property on `FIRStorageMetadata`. We do this by
402
+ // "initWithDictionary()" which uses "name" property as "path" under the hood.
403
+ // See
404
+ // https://github.com/firebase/firebase-ios-sdk/blob/970b4c45098319e40e6e5157d340d16cb73a2b88/FirebaseStorage/Sources/StorageMetadata.swift#L156-L178
405
+ NSMutableDictionary *metadata = [[NSMutableDictionary alloc] init];
406
+ metadata[@"name"] = path;
407
+ storageMetadata = [[FIRStorageMetadata alloc] initWithDictionary:metadata];
401
408
  }
402
409
 
403
410
  if (metadata[@"cacheControl"] == [NSNull null]) {
@@ -35,6 +35,7 @@ static NSMutableDictionary *PENDING_TASKS;
35
35
  // The iOS SDK has a short memory on settings, store these globally and set them in each time
36
36
  static NSString *emulatorHost = nil;
37
37
  static NSInteger emulatorPort = 0;
38
+ static bool useEmulatorCalled = false;
38
39
  static NSTimeInterval maxDownloadRetryTime = 600;
39
40
  static NSTimeInterval maxUploadRetryTime = 600;
40
41
  static NSTimeInterval maxOperationRetryTime = 120;
@@ -150,7 +151,9 @@ RCT_EXPORT_METHOD(updateMetadata
150
151
  [self promiseRejectStorageException:reject error:error];
151
152
  } else {
152
153
  FIRStorageMetadata *storageMetadata =
153
- [RNFBStorageCommon buildMetadataFromMap:metadata existingMetadata:fetchedMetadata];
154
+ [RNFBStorageCommon buildMetadataFromMap:metadata
155
+ existingMetadata:fetchedMetadata
156
+ path:[storageReference fullPath]];
154
157
 
155
158
  [storageReference updateMetadata:storageMetadata
156
159
  completion:^(FIRStorageMetadata *_Nullable updatedMetadata,
@@ -400,9 +403,11 @@ RCT_EXPORT_METHOD(putFile
400
403
  : (nonnull NSNumber *)taskId
401
404
  : (RCTPromiseResolveBlock)resolve
402
405
  : (RCTPromiseRejectBlock)reject) {
403
- FIRStorageMetadata *storageMetadata = [RNFBStorageCommon buildMetadataFromMap:metadata
404
- existingMetadata:nil];
405
406
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
407
+ FIRStorageMetadata *storageMetadata =
408
+ [RNFBStorageCommon buildMetadataFromMap:metadata
409
+ existingMetadata:nil
410
+ path:[storageReference fullPath]];
406
411
 
407
412
  [RNFBStorageCommon
408
413
  NSURLForLocalFilePath:localFilePath
@@ -472,9 +477,11 @@ RCT_EXPORT_METHOD(putString
472
477
  : (nonnull NSNumber *)taskId
473
478
  : (RCTPromiseResolveBlock)resolve
474
479
  : (RCTPromiseRejectBlock)reject) {
475
- FIRStorageMetadata *storageMetadata = [RNFBStorageCommon buildMetadataFromMap:metadata
476
- existingMetadata:nil];
477
480
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
481
+ FIRStorageMetadata *storageMetadata =
482
+ [RNFBStorageCommon buildMetadataFromMap:metadata
483
+ existingMetadata:nil
484
+ path:[storageReference fullPath]];
478
485
 
479
486
  __block FIRStorageUploadTask *uploadTask;
480
487
  RCTUnsafeExecuteOnMainQueueSync(^{
@@ -499,7 +506,12 @@ RCT_EXPORT_METHOD(useEmulator
499
506
  : (NSInteger)port) {
500
507
  emulatorHost = host;
501
508
  emulatorPort = port;
509
+ if (useEmulatorCalled == true) {
510
+ return;
511
+ }
512
+
502
513
  [[FIRStorage storageForApp:firebaseApp] useEmulatorWithHost:host port:port];
514
+ useEmulatorCalled = true;
503
515
  }
504
516
 
505
517
  /**
@@ -657,9 +669,10 @@ RCT_EXPORT_METHOD(setTaskStatus
657
669
  storage = [FIRStorage storageForApp:firebaseApp URL:bucket];
658
670
 
659
671
  NSLog(@"Setting emulator - host %@ port %ld", emulatorHost, (long)emulatorPort);
660
- if (![emulatorHost isEqual:[NSNull null]] && emulatorHost != nil) {
672
+ if (![emulatorHost isEqual:[NSNull null]] && emulatorHost != nil && useEmulatorCalled == false) {
661
673
  @try {
662
674
  [storage useEmulatorWithHost:emulatorHost port:emulatorPort];
675
+ useEmulatorCalled = true;
663
676
  } @catch (NSException *e) {
664
677
  NSLog(@"WARNING: Unable to set the Firebase Storage emulator settings. These must be set "
665
678
  @"before any usages of Firebase Storage. If you see this log after a hot "
package/lib/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- module.exports = '15.7.0';
2
+ module.exports = '16.0.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native-firebase/storage",
3
- "version": "15.7.0",
3
+ "version": "16.0.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": "15.7.0"
32
+ "@react-native-firebase/app": "16.0.0"
33
33
  },
34
34
  "publishConfig": {
35
35
  "access": "public"
36
36
  },
37
- "gitHead": "769bb2b92df5775109cc4222eed6d940d1f4853a"
37
+ "gitHead": "fe2bebee106dc178b0835f7097c2d05b30223b2f"
38
38
  }