@react-native-firebase/storage 25.0.1 → 26.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.
Files changed (73) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/RNFBStorage.podspec +17 -6
  3. package/android/build.gradle +23 -0
  4. package/android/src/main/java/io/invertase/firebase/storage/{ReactNativeFirebaseStorageModule.java → NativeRNFBTurboStorage.java} +72 -131
  5. package/android/src/main/java/io/invertase/firebase/storage/ReactNativeFirebaseStoragePackage.java +1 -1
  6. package/android/src/main/java/io/invertase/firebase/storage/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboStorageSpec.java +125 -0
  7. package/android/src/main/java/io/invertase/firebase/storage/generated/jni/CMakeLists.txt +36 -0
  8. package/android/src/main/java/io/invertase/firebase/storage/generated/jni/RNFBStorageTurboModules-generated.cpp +116 -0
  9. package/android/src/main/java/io/invertase/firebase/storage/generated/jni/RNFBStorageTurboModules.h +31 -0
  10. package/android/src/main/java/io/invertase/firebase/storage/generated/jni/react/renderer/components/RNFBStorageTurboModules/RNFBStorageTurboModulesJSI-generated.cpp +153 -0
  11. package/android/src/main/java/io/invertase/firebase/storage/generated/jni/react/renderer/components/RNFBStorageTurboModules/RNFBStorageTurboModulesJSI.h +246 -0
  12. package/dist/module/StorageReference.js +4 -7
  13. package/dist/module/StorageReference.js.map +1 -1
  14. package/dist/module/StorageTask.js.map +1 -1
  15. package/dist/module/index.js +384 -6
  16. package/dist/module/index.js.map +1 -1
  17. package/dist/module/types/storage.js +6 -2
  18. package/dist/module/types/storage.js.map +1 -1
  19. package/dist/module/version.js +1 -1
  20. package/dist/module/web/RNFBStorageModule.js +9 -11
  21. package/dist/module/web/RNFBStorageModule.js.map +1 -1
  22. package/dist/typescript/lib/StorageReference.d.ts.map +1 -1
  23. package/dist/typescript/lib/StorageTask.d.ts +7 -8
  24. package/dist/typescript/lib/StorageTask.d.ts.map +1 -1
  25. package/dist/typescript/lib/index.d.ts +150 -4
  26. package/dist/typescript/lib/index.d.ts.map +1 -1
  27. package/dist/typescript/lib/types/internal.d.ts +5 -5
  28. package/dist/typescript/lib/types/internal.d.ts.map +1 -1
  29. package/dist/typescript/lib/types/storage.d.ts +15 -10
  30. package/dist/typescript/lib/types/storage.d.ts.map +1 -1
  31. package/dist/typescript/lib/version.d.ts +1 -1
  32. package/dist/typescript/lib/web/RNFBStorageModule.d.ts +3 -3
  33. package/dist/typescript/lib/web/RNFBStorageModule.d.ts.map +1 -1
  34. package/ios/RNFBStorage/RNFBStorageModule.h +2 -2
  35. package/ios/RNFBStorage/{RNFBStorageModule.m → RNFBStorageModule.mm} +193 -130
  36. package/ios/RNFBStorage.xcodeproj/project.pbxproj +8 -8
  37. package/ios/generated/RCTAppDependencyProvider.h +25 -0
  38. package/ios/generated/RCTAppDependencyProvider.mm +55 -0
  39. package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
  40. package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
  41. package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
  42. package/ios/generated/RCTThirdPartyComponentsProvider.mm +23 -0
  43. package/ios/generated/RNFBStorageTurboModules/RNFBStorageTurboModules-generated.mm +142 -0
  44. package/ios/generated/RNFBStorageTurboModules/RNFBStorageTurboModules.h +198 -0
  45. package/ios/generated/RNFBStorageTurboModulesJSI-generated.cpp +153 -0
  46. package/ios/generated/RNFBStorageTurboModulesJSI.h +246 -0
  47. package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
  48. package/lib/StorageReference.ts +3 -8
  49. package/lib/StorageTask.ts +13 -15
  50. package/lib/index.ts +501 -7
  51. package/lib/types/internal.ts +5 -5
  52. package/lib/types/storage.ts +17 -10
  53. package/lib/version.ts +1 -1
  54. package/lib/web/RNFBStorageModule.ts +10 -12
  55. package/package.json +22 -4
  56. package/react-native.config.js +10 -0
  57. package/specs/NativeRNFBTurboStorage.ts +46 -0
  58. package/typedoc.json +2 -3
  59. package/dist/module/modular.js +0 -270
  60. package/dist/module/modular.js.map +0 -1
  61. package/dist/module/namespaced.js +0 -192
  62. package/dist/module/namespaced.js.map +0 -1
  63. package/dist/module/types/namespaced.js +0 -64
  64. package/dist/module/types/namespaced.js.map +0 -1
  65. package/dist/typescript/lib/modular.d.ts +0 -154
  66. package/dist/typescript/lib/modular.d.ts.map +0 -1
  67. package/dist/typescript/lib/namespaced.d.ts +0 -12
  68. package/dist/typescript/lib/namespaced.d.ts.map +0 -1
  69. package/dist/typescript/lib/types/namespaced.d.ts +0 -1122
  70. package/dist/typescript/lib/types/namespaced.d.ts.map +0 -1
  71. package/lib/modular.ts +0 -401
  72. package/lib/namespaced.ts +0 -264
  73. package/lib/types/namespaced.ts +0 -1248
@@ -18,10 +18,12 @@
18
18
  #import <Firebase/Firebase.h>
19
19
  #import <React/RCTUtils.h>
20
20
 
21
+ #import "RNFBApp/RCTConvert+FIRApp.h"
22
+ #import "RNFBApp/RNFBSharedUtils.h"
21
23
  #import "RNFBRCTEventEmitter.h"
22
- #import "RNFBSharedUtils.h"
23
24
  #import "RNFBStorageCommon.h"
24
25
  #import "RNFBStorageModule.h"
26
+ #import "RNFBStorageTurboModules.h"
25
27
 
26
28
  static NSString *const RNFB_STORAGE_EVENT = @"storage_event";
27
29
  static NSString *const RNFB_STORAGE_STATE_CHANGED = @"state_changed";
@@ -44,10 +46,15 @@ static NSTimeInterval maxOperationRetryTime = 120;
44
46
  #pragma mark -
45
47
  #pragma mark Module Setup
46
48
 
47
- RCT_EXPORT_MODULE();
49
+ RCT_EXPORT_MODULE(NativeRNFBTurboStorage);
48
50
 
49
51
  + (BOOL)requiresMainQueueSetup {
50
- return YES;
52
+ return NO;
53
+ }
54
+
55
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
56
+ (const facebook::react::ObjCTurboModule::InitParams &)params {
57
+ return std::make_shared<facebook::react::NativeRNFBTurboStorageSpecJSI>(params);
51
58
  }
52
59
 
53
60
  - (id)init {
@@ -80,11 +87,11 @@ RCT_EXPORT_MODULE();
80
87
  /**
81
88
  * @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#delete
82
89
  */
83
- RCT_EXPORT_METHOD(delete
84
- : (FIRApp *)firebaseApp
85
- : (NSString *)url
86
- : (RCTPromiseResolveBlock)resolve
87
- : (RCTPromiseRejectBlock)reject) {
90
+ - (void)deleteObject:(NSString *)appName
91
+ url:(NSString *)url
92
+ resolve:(RCTPromiseResolveBlock)resolve
93
+ reject:(RCTPromiseRejectBlock)reject {
94
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
88
95
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
89
96
 
90
97
  [storageReference deleteWithCompletion:^(NSError *_Nullable error) {
@@ -99,11 +106,11 @@ RCT_EXPORT_METHOD(delete
99
106
  /**
100
107
  * @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#getDownloadURL
101
108
  */
102
- RCT_EXPORT_METHOD(getDownloadURL
103
- : (FIRApp *)firebaseApp
104
- : (NSString *)url
105
- : (RCTPromiseResolveBlock)resolve
106
- : (RCTPromiseRejectBlock)reject) {
109
+ - (void)getDownloadURL:(NSString *)appName
110
+ url:(NSString *)url
111
+ resolve:(RCTPromiseResolveBlock)resolve
112
+ reject:(RCTPromiseRejectBlock)reject {
113
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
107
114
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
108
115
 
109
116
  [storageReference downloadURLWithCompletion:^(NSURL *_Nullable URL, NSError *_Nullable error) {
@@ -125,11 +132,11 @@ RCT_EXPORT_METHOD(getDownloadURL
125
132
  /**
126
133
  * @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#getMetadata
127
134
  */
128
- RCT_EXPORT_METHOD(getMetadata
129
- : (FIRApp *)firebaseApp
130
- : (NSString *)url
131
- : (RCTPromiseResolveBlock)resolve
132
- : (RCTPromiseRejectBlock)reject) {
135
+ - (void)getMetadata:(NSString *)appName
136
+ url:(NSString *)url
137
+ resolve:(RCTPromiseResolveBlock)resolve
138
+ reject:(RCTPromiseRejectBlock)reject {
139
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
133
140
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
134
141
 
135
142
  [storageReference
@@ -145,13 +152,22 @@ RCT_EXPORT_METHOD(getMetadata
145
152
  /**
146
153
  * @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#updateMetadata
147
154
  */
148
- RCT_EXPORT_METHOD(updateMetadata
149
- : (FIRApp *)firebaseApp
150
- : (NSString *)url
151
- : (NSDictionary *)metadata
152
- : (RCTPromiseResolveBlock)resolve
153
- : (RCTPromiseRejectBlock)reject) {
155
+ - (NSDictionary *)decodedMetadataMap:(NSDictionary *_Nullable)metadata {
156
+ if (metadata == nil) {
157
+ return @{};
158
+ }
159
+
160
+ return [RNFBSharedUtils decodeNullSentinels:metadata];
161
+ }
162
+
163
+ - (void)updateMetadata:(NSString *)appName
164
+ url:(NSString *)url
165
+ metadata:(NSDictionary *_Nullable)metadata
166
+ resolve:(RCTPromiseResolveBlock)resolve
167
+ reject:(RCTPromiseRejectBlock)reject {
168
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
154
169
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
170
+ NSDictionary *metadataMap = [self decodedMetadataMap:metadata];
155
171
 
156
172
  [storageReference metadataWithCompletion:^(FIRStorageMetadata *_Nullable fetchedMetadata,
157
173
  NSError *_Nullable error) {
@@ -159,7 +175,7 @@ RCT_EXPORT_METHOD(updateMetadata
159
175
  [self promiseRejectStorageException:reject error:error];
160
176
  } else {
161
177
  FIRStorageMetadata *storageMetadata =
162
- [RNFBStorageCommon buildMetadataFromMap:metadata
178
+ [RNFBStorageCommon buildMetadataFromMap:metadataMap
163
179
  existingMetadata:fetchedMetadata
164
180
  path:[storageReference fullPath]];
165
181
 
@@ -179,14 +195,14 @@ RCT_EXPORT_METHOD(updateMetadata
179
195
  /**
180
196
  * @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#list
181
197
  */
182
- RCT_EXPORT_METHOD(list
183
- : (FIRApp *)firebaseApp
184
- : (NSString *)url
185
- : (NSDictionary *)listOptions
186
- : (RCTPromiseResolveBlock)resolve
187
- : (RCTPromiseRejectBlock)reject) {
198
+ - (void)list:(NSString *)appName
199
+ url:(NSString *)url
200
+ listOptions:(JS::NativeRNFBTurboStorage::StorageListOptions &)listOptions
201
+ resolve:(RCTPromiseResolveBlock)resolve
202
+ reject:(RCTPromiseRejectBlock)reject {
203
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
188
204
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
189
- long maxResults = [listOptions[@"maxResults"] longValue];
205
+ long maxResults = (long)listOptions.maxResults();
190
206
 
191
207
  id completionBlock = ^(FIRStorageListResult *result, NSError *error) {
192
208
  if (error != nil) {
@@ -197,8 +213,8 @@ RCT_EXPORT_METHOD(list
197
213
  }
198
214
  };
199
215
 
200
- if (listOptions[@"pageToken"]) {
201
- NSString *pageToken = listOptions[@"pageToken"];
216
+ NSString *pageToken = listOptions.pageToken();
217
+ if (pageToken != nil) {
202
218
  [storageReference listWithMaxResults:(int64_t)maxResults
203
219
  pageToken:pageToken
204
220
  completion:completionBlock];
@@ -210,11 +226,11 @@ RCT_EXPORT_METHOD(list
210
226
  /**
211
227
  * @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#listAll
212
228
  */
213
- RCT_EXPORT_METHOD(listAll
214
- : (FIRApp *)firebaseApp
215
- : (NSString *)url
216
- : (RCTPromiseResolveBlock)resolve
217
- : (RCTPromiseRejectBlock)reject) {
229
+ - (void)listAll:(NSString *)appName
230
+ url:(NSString *)url
231
+ resolve:(RCTPromiseResolveBlock)resolve
232
+ reject:(RCTPromiseRejectBlock)reject {
233
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
218
234
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
219
235
 
220
236
  __block bool alreadyCompleted = false;
@@ -241,14 +257,13 @@ RCT_EXPORT_METHOD(listAll
241
257
  * @url
242
258
  * https://firebase.google.com/docs/reference/js/firebase.storage.Storage#setMaxDownloadRetryTime
243
259
  */
244
- RCT_EXPORT_METHOD(setMaxDownloadRetryTime
245
- : (FIRApp *)firebaseApp
246
- : (nonnull NSNumber *)milliseconds
247
- : (RCTPromiseResolveBlock)resolve
248
- : (RCTPromiseRejectBlock)reject) {
249
- maxDownloadRetryTime = [milliseconds doubleValue] / 1000;
250
- [[FIRStorage storageForApp:firebaseApp]
251
- setMaxDownloadRetryTime:[milliseconds doubleValue] / 1000];
260
+ - (void)setMaxDownloadRetryTime:(NSString *)appName
261
+ milliseconds:(double)milliseconds
262
+ resolve:(RCTPromiseResolveBlock)resolve
263
+ reject:(RCTPromiseRejectBlock)reject {
264
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
265
+ maxDownloadRetryTime = milliseconds / 1000;
266
+ [[FIRStorage storageForApp:firebaseApp] setMaxDownloadRetryTime:milliseconds / 1000];
252
267
  resolve([NSNull null]);
253
268
  }
254
269
 
@@ -256,40 +271,40 @@ RCT_EXPORT_METHOD(setMaxDownloadRetryTime
256
271
  * @url
257
272
  * https://firebase.google.com/docs/reference/js/firebase.storage.Storage#setMaxOperationRetryTime
258
273
  */
259
- RCT_EXPORT_METHOD(setMaxOperationRetryTime
260
- : (FIRApp *)firebaseApp
261
- : (nonnull NSNumber *)milliseconds
262
- : (RCTPromiseResolveBlock)resolve
263
- : (RCTPromiseRejectBlock)reject) {
264
- maxOperationRetryTime = [milliseconds doubleValue] / 1000;
265
- [[FIRStorage storageForApp:firebaseApp]
266
- setMaxOperationRetryTime:[milliseconds doubleValue] / 1000];
274
+ - (void)setMaxOperationRetryTime:(NSString *)appName
275
+ milliseconds:(double)milliseconds
276
+ resolve:(RCTPromiseResolveBlock)resolve
277
+ reject:(RCTPromiseRejectBlock)reject {
278
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
279
+ maxOperationRetryTime = milliseconds / 1000;
280
+ [[FIRStorage storageForApp:firebaseApp] setMaxOperationRetryTime:milliseconds / 1000];
267
281
  resolve([NSNull null]);
268
282
  }
269
283
 
270
284
  /**
271
285
  * @url https://firebase.google.com/docs/reference/js/firebase.storage.Storage#setMaxUploadRetryTime
272
286
  */
273
- RCT_EXPORT_METHOD(setMaxUploadRetryTime
274
- : (FIRApp *)firebaseApp
275
- : (nonnull NSNumber *)milliseconds
276
- : (RCTPromiseResolveBlock)resolve
277
- : (RCTPromiseRejectBlock)reject) {
278
- maxUploadRetryTime = [milliseconds doubleValue] / 1000;
279
- [[FIRStorage storageForApp:firebaseApp] setMaxUploadRetryTime:[milliseconds doubleValue] / 1000];
287
+ - (void)setMaxUploadRetryTime:(NSString *)appName
288
+ milliseconds:(double)milliseconds
289
+ resolve:(RCTPromiseResolveBlock)resolve
290
+ reject:(RCTPromiseRejectBlock)reject {
291
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
292
+ maxUploadRetryTime = milliseconds / 1000;
293
+ [[FIRStorage storageForApp:firebaseApp] setMaxUploadRetryTime:milliseconds / 1000];
280
294
  resolve([NSNull null]);
281
295
  }
282
296
 
283
297
  /**
284
298
  * @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#downloadFile
285
299
  */
286
- RCT_EXPORT_METHOD(writeToFile
287
- : (FIRApp *)firebaseApp
288
- : (NSString *)url
289
- : (NSString *)localFilePath
290
- : (nonnull NSNumber *)taskId
291
- : (RCTPromiseResolveBlock)resolve
292
- : (RCTPromiseRejectBlock)reject) {
300
+ - (void)writeToFile:(NSString *)appName
301
+ url:(NSString *)url
302
+ localFilePath:(NSString *)localFilePath
303
+ taskId:(double)taskId
304
+ resolve:(RCTPromiseResolveBlock)resolve
305
+ reject:(RCTPromiseRejectBlock)reject {
306
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
307
+ NSNumber *taskIdNumber = @(taskId);
293
308
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
294
309
  NSURL *localFile = [NSURL fileURLWithPath:localFilePath];
295
310
 
@@ -298,7 +313,7 @@ RCT_EXPORT_METHOD(writeToFile
298
313
  downloadTask = [storageReference writeToFile:localFile];
299
314
  });
300
315
 
301
- PENDING_TASKS[taskId] = downloadTask;
316
+ PENDING_TASKS[taskIdNumber] = downloadTask;
302
317
 
303
318
  // download started or resumed
304
319
  [downloadTask
@@ -309,7 +324,7 @@ RCT_EXPORT_METHOD(writeToFile
309
324
  [RNFBStorageCommon getStorageEventDictionary:eventBody
310
325
  internalEventName:RNFB_STORAGE_STATE_CHANGED
311
326
  appName:firebaseApp.name
312
- taskId:taskId];
327
+ taskId:taskIdNumber];
313
328
  [[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
314
329
  }];
315
330
 
@@ -322,7 +337,7 @@ RCT_EXPORT_METHOD(writeToFile
322
337
  [RNFBStorageCommon getStorageEventDictionary:eventBody
323
338
  internalEventName:RNFB_STORAGE_STATE_CHANGED
324
339
  appName:firebaseApp.name
325
- taskId:taskId];
340
+ taskId:taskIdNumber];
326
341
  [[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
327
342
  }];
328
343
 
@@ -335,7 +350,7 @@ RCT_EXPORT_METHOD(writeToFile
335
350
  [RNFBStorageCommon getStorageEventDictionary:eventBody
336
351
  internalEventName:RNFB_STORAGE_STATE_CHANGED
337
352
  appName:firebaseApp.name
338
- taskId:taskId];
353
+ taskId:taskIdNumber];
339
354
  [[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
340
355
  }];
341
356
 
@@ -343,7 +358,7 @@ RCT_EXPORT_METHOD(writeToFile
343
358
  [downloadTask
344
359
  observeStatus:FIRStorageTaskStatusSuccess
345
360
  handler:^(FIRStorageTaskSnapshot *snapshot) {
346
- [PENDING_TASKS removeObjectForKey:taskId];
361
+ [PENDING_TASKS removeObjectForKey:taskIdNumber];
347
362
 
348
363
  // state_changed
349
364
  NSDictionary *stateChangedEventBody =
@@ -352,7 +367,7 @@ RCT_EXPORT_METHOD(writeToFile
352
367
  [RNFBStorageCommon getStorageEventDictionary:stateChangedEventBody
353
368
  internalEventName:RNFB_STORAGE_STATE_CHANGED
354
369
  appName:firebaseApp.name
355
- taskId:taskId];
370
+ taskId:taskIdNumber];
356
371
  [[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT
357
372
  body:stateChangedEvent];
358
373
 
@@ -362,7 +377,7 @@ RCT_EXPORT_METHOD(writeToFile
362
377
  [RNFBStorageCommon getStorageEventDictionary:eventBody
363
378
  internalEventName:RNFB_STORAGE_DOWNLOAD_SUCCESS
364
379
  appName:firebaseApp.name
365
- taskId:taskId];
380
+ taskId:taskIdNumber];
366
381
  [[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
367
382
  resolve(eventBody);
368
383
  }];
@@ -371,7 +386,7 @@ RCT_EXPORT_METHOD(writeToFile
371
386
  [downloadTask
372
387
  observeStatus:FIRStorageTaskStatusFailure
373
388
  handler:^(FIRStorageTaskSnapshot *snapshot) {
374
- [PENDING_TASKS removeObjectForKey:taskId];
389
+ [PENDING_TASKS removeObjectForKey:taskIdNumber];
375
390
 
376
391
  // state_changed
377
392
  NSDictionary *stateChangedEventBody =
@@ -380,7 +395,7 @@ RCT_EXPORT_METHOD(writeToFile
380
395
  [RNFBStorageCommon getStorageEventDictionary:stateChangedEventBody
381
396
  internalEventName:RNFB_STORAGE_STATE_CHANGED
382
397
  appName:firebaseApp.name
383
- taskId:taskId];
398
+ taskId:taskIdNumber];
384
399
  [[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT
385
400
  body:stateChangedEvent];
386
401
 
@@ -393,7 +408,7 @@ RCT_EXPORT_METHOD(writeToFile
393
408
  [RNFBStorageCommon getStorageEventDictionary:eventBody
394
409
  internalEventName:RNFB_STORAGE_DOWNLOAD_FAILURE
395
410
  appName:firebaseApp.name
396
- taskId:taskId];
411
+ taskId:taskIdNumber];
397
412
  [[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
398
413
 
399
414
  [self promiseRejectStorageException:reject error:snapshot.error];
@@ -403,17 +418,19 @@ RCT_EXPORT_METHOD(writeToFile
403
418
  /**
404
419
  * @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#putFile
405
420
  */
406
- RCT_EXPORT_METHOD(putFile
407
- : (FIRApp *)firebaseApp
408
- : (NSString *)url
409
- : (NSString *)localFilePath
410
- : (NSDictionary *)metadata
411
- : (nonnull NSNumber *)taskId
412
- : (RCTPromiseResolveBlock)resolve
413
- : (RCTPromiseRejectBlock)reject) {
421
+ - (void)putFile:(NSString *)appName
422
+ url:(NSString *)url
423
+ localFilePath:(NSString *)localFilePath
424
+ metadata:(NSDictionary *_Nullable)metadata
425
+ taskId:(double)taskId
426
+ resolve:(RCTPromiseResolveBlock)resolve
427
+ reject:(RCTPromiseRejectBlock)reject {
428
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
429
+ NSNumber *taskIdNumber = @(taskId);
414
430
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
431
+ NSDictionary *metadataMap = [self decodedMetadataMap:metadata];
415
432
  FIRStorageMetadata *storageMetadata =
416
- [RNFBStorageCommon buildMetadataFromMap:metadata
433
+ [RNFBStorageCommon buildMetadataFromMap:metadataMap
417
434
  existingMetadata:nil
418
435
  path:[storageReference fullPath]];
419
436
 
@@ -432,7 +449,7 @@ RCT_EXPORT_METHOD(putFile
432
449
  getStorageEventDictionary:eventBody
433
450
  internalEventName:RNFB_STORAGE_STATE_CHANGED
434
451
  appName:[[[storageReference storage] app] name]
435
- taskId:taskId];
452
+ taskId:taskIdNumber];
436
453
  [[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT
437
454
  body:stateChangedEvent];
438
455
 
@@ -441,7 +458,7 @@ RCT_EXPORT_METHOD(putFile
441
458
  getStorageEventDictionary:eventBody
442
459
  internalEventName:RNFB_STORAGE_UPLOAD_FAILURE
443
460
  appName:[[[storageReference storage] app] name]
444
- taskId:taskId];
461
+ taskId:taskIdNumber];
445
462
  [[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
446
463
 
447
464
  [RNFBSharedUtils rejectPromiseWithUserInfo:reject
@@ -467,7 +484,7 @@ RCT_EXPORT_METHOD(putFile
467
484
 
468
485
  [self addUploadTaskObservers:uploadTask
469
486
  appDisplayName:[[[storageReference storage] app] name]
470
- taskId:taskId
487
+ taskId:taskIdNumber
471
488
  resolver:resolve
472
489
  rejecter:reject];
473
490
  }];
@@ -476,18 +493,20 @@ RCT_EXPORT_METHOD(putFile
476
493
  /**
477
494
  * @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#putFile
478
495
  */
479
- RCT_EXPORT_METHOD(putString
480
- : (FIRApp *)firebaseApp
481
- : (NSString *)url
482
- : (NSString *)string
483
- : (NSString *)format
484
- : (NSDictionary *)metadata
485
- : (nonnull NSNumber *)taskId
486
- : (RCTPromiseResolveBlock)resolve
487
- : (RCTPromiseRejectBlock)reject) {
496
+ - (void)putString:(NSString *)appName
497
+ url:(NSString *)url
498
+ string:(NSString *)string
499
+ format:(NSString *)format
500
+ metadata:(NSDictionary *_Nullable)metadata
501
+ taskId:(double)taskId
502
+ resolve:(RCTPromiseResolveBlock)resolve
503
+ reject:(RCTPromiseRejectBlock)reject {
504
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
505
+ NSNumber *taskIdNumber = @(taskId);
488
506
  FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
507
+ NSDictionary *metadataMap = [self decodedMetadataMap:metadata];
489
508
  FIRStorageMetadata *storageMetadata =
490
- [RNFBStorageCommon buildMetadataFromMap:metadata
509
+ [RNFBStorageCommon buildMetadataFromMap:metadataMap
491
510
  existingMetadata:nil
492
511
  path:[storageReference fullPath]];
493
512
 
@@ -500,7 +519,7 @@ RCT_EXPORT_METHOD(putString
500
519
 
501
520
  [self addUploadTaskObservers:uploadTask
502
521
  appDisplayName:[[[storageReference storage] app] name]
503
- taskId:taskId
522
+ taskId:taskIdNumber
504
523
  resolver:resolve
505
524
  rejecter:reject];
506
525
  }
@@ -508,17 +527,18 @@ RCT_EXPORT_METHOD(putString
508
527
  /**
509
528
  * @url https://firebase.google.com/docs/reference/js/firebase.storage.Storage#useEmulator
510
529
  */
511
- RCT_EXPORT_METHOD(useEmulator
512
- : (FIRApp *)firebaseApp
513
- : (nonnull NSString *)host
514
- : (NSInteger)port
515
- : (NSString *)bucketUrl) {
530
+ - (void)useEmulator:(NSString *)appName
531
+ host:(NSString *)host
532
+ port:(double)port
533
+ bucketUrl:(NSString *)bucketUrl {
534
+ FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
516
535
  emulatorHost = host;
517
- emulatorPort = port;
536
+ emulatorPort = (NSInteger)port;
518
537
  NSString *key = [self createEmulatorKey:bucketUrl appName:firebaseApp.name];
519
538
 
520
539
  if (!emulatorConfigs[key]) {
521
- [[FIRStorage storageForApp:firebaseApp URL:bucketUrl] useEmulatorWithHost:host port:port];
540
+ [[FIRStorage storageForApp:firebaseApp URL:bucketUrl] useEmulatorWithHost:host
541
+ port:(NSInteger)port];
522
542
  emulatorConfigs[key] = @YES;
523
543
  }
524
544
  }
@@ -526,34 +546,64 @@ RCT_EXPORT_METHOD(useEmulator
526
546
  /**
527
547
  * @url N/A - RNFB Specific
528
548
  */
529
- RCT_EXPORT_METHOD(setTaskStatus
530
- : (FIRApp *)firebaseApp
531
- : (nonnull NSNumber *)taskId
532
- : (nonnull NSNumber *)status
533
- : (RCTPromiseResolveBlock)resolve
534
- : (RCTPromiseRejectBlock)reject) {
535
- id task = PENDING_TASKS[taskId];
549
+ - (NSNumber *)setTaskStatus:(NSString *)appName taskId:(double)taskId status:(double)status {
550
+ NSNumber *taskIdNumber = @(taskId);
551
+ id task = PENDING_TASKS[taskIdNumber];
536
552
  if (task == nil) {
537
- resolve(@(NO));
538
- return;
553
+ return @NO;
554
+ }
555
+
556
+ FIRStorageTaskSnapshot *snapshot = nil;
557
+ if ([task isKindOfClass:[FIRStorageUploadTask class]]) {
558
+ snapshot = [(FIRStorageUploadTask *)task snapshot];
559
+ } else if ([task isKindOfClass:[FIRStorageDownloadTask class]]) {
560
+ snapshot = [(FIRStorageDownloadTask *)task snapshot];
561
+ } else {
562
+ return @NO;
539
563
  }
540
564
 
541
- switch ([status integerValue]) {
565
+ FIRStorageTaskStatus currentStatus = snapshot.status;
566
+
567
+ switch ((NSInteger)status) {
542
568
  case 0:
543
- [task pause];
544
- break;
569
+ if (currentStatus != FIRStorageTaskStatusPause &&
570
+ (currentStatus == FIRStorageTaskStatusResume ||
571
+ currentStatus == FIRStorageTaskStatusProgress)) {
572
+ if ([task isKindOfClass:[FIRStorageDownloadTask class]]) {
573
+ [(FIRStorageDownloadTask *)task pause];
574
+ } else {
575
+ [(FIRStorageUploadTask *)task pause];
576
+ }
577
+ return @YES;
578
+ }
579
+ return @NO;
545
580
  case 1:
546
- if ([task isKindOfClass:[FIRStorageDownloadTask class]]) {
547
- [(FIRStorageDownloadTask *)task resume];
548
- } else {
549
- [(FIRStorageUploadTask *)task resume];
581
+ if (currentStatus == FIRStorageTaskStatusPause) {
582
+ if ([task isKindOfClass:[FIRStorageDownloadTask class]]) {
583
+ [(FIRStorageDownloadTask *)task resume];
584
+ } else {
585
+ [(FIRStorageUploadTask *)task resume];
586
+ }
587
+ return @YES;
550
588
  }
551
- break;
589
+ return @NO;
552
590
  case 2:
553
- [task cancel];
554
- break;
591
+ if (currentStatus != FIRStorageTaskStatusSuccess &&
592
+ currentStatus != FIRStorageTaskStatusFailure &&
593
+ (currentStatus == FIRStorageTaskStatusResume ||
594
+ currentStatus == FIRStorageTaskStatusProgress ||
595
+ currentStatus == FIRStorageTaskStatusPause)) {
596
+ [PENDING_TASKS removeObjectForKey:taskIdNumber];
597
+ if ([task isKindOfClass:[FIRStorageDownloadTask class]]) {
598
+ [(FIRStorageDownloadTask *)task cancel];
599
+ } else {
600
+ [(FIRStorageUploadTask *)task cancel];
601
+ }
602
+ return @YES;
603
+ }
604
+ return @NO;
555
605
  default:
556
- break;
606
+ return @NO;
557
607
  }
558
608
  }
559
609
 
@@ -705,7 +755,7 @@ RCT_EXPORT_METHOD(setTaskStatus
705
755
  }];
706
756
  }
707
757
 
708
- - (NSDictionary *)constantsToExport {
758
+ - (NSDictionary *)storageConstantsDictionary {
709
759
  NSMutableDictionary *constants = [@{} mutableCopy];
710
760
 
711
761
  if ([[[FIRApp allApps] allKeys] count] > 0) {
@@ -715,9 +765,22 @@ RCT_EXPORT_METHOD(setTaskStatus
715
765
  constants[@"maxOperationRetryTime"] =
716
766
  @((NSInteger)[storageInstance maxOperationRetryTime] * 1000);
717
767
  constants[@"maxUploadRetryTime"] = @((NSInteger)[storageInstance maxUploadRetryTime] * 1000);
768
+ } else {
769
+ constants[@"maxDownloadRetryTime"] = @0;
770
+ constants[@"maxOperationRetryTime"] = @0;
771
+ constants[@"maxUploadRetryTime"] = @0;
718
772
  }
719
773
 
720
774
  return constants;
721
775
  }
722
776
 
777
+ - (facebook::react::ModuleConstants<JS::NativeRNFBTurboStorage::Constants::Builder>)
778
+ constantsToExport {
779
+ return [_RCTTypedModuleConstants newWithUnsafeDictionary:[self storageConstantsDictionary]];
780
+ }
781
+
782
+ - (facebook::react::ModuleConstants<JS::NativeRNFBTurboStorage::Constants::Builder>)getConstants {
783
+ return [self constantsToExport];
784
+ }
785
+
723
786
  @end
@@ -7,7 +7,7 @@
7
7
  objects = {
8
8
 
9
9
  /* Begin PBXBuildFile section */
10
- 2744B98621F45429004F8E3F /* RNFBStorageModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 2744B98521F45429004F8E3F /* RNFBStorageModule.m */; };
10
+ 2744B98621F45429004F8E3F /* RNFBStorageModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2744B98521F45429004F8E3F /* RNFBStorageModule.mm */; };
11
11
  27A35B622268E0AB005BE5A8 /* RNFBStorageTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 27A35B612268E0AB005BE5A8 /* RNFBStorageTask.m */; };
12
12
  27A35B652268E118005BE5A8 /* RNFBStorageDownloadTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 27A35B642268E118005BE5A8 /* RNFBStorageDownloadTask.m */; };
13
13
  27A35B682268E138005BE5A8 /* RNFBStorageUploadTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 27A35B672268E138005BE5A8 /* RNFBStorageUploadTask.m */; };
@@ -29,7 +29,7 @@
29
29
  /* Begin PBXFileReference section */
30
30
  2744B98221F45429004F8E3F /* libRNFBStorage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNFBStorage.a; sourceTree = BUILT_PRODUCTS_DIR; };
31
31
  2744B98421F45429004F8E3F /* RNFBStorageModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RNFBStorageModule.h; path = RNFBStorage/RNFBStorageModule.h; sourceTree = SOURCE_ROOT; };
32
- 2744B98521F45429004F8E3F /* RNFBStorageModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RNFBStorageModule.m; path = RNFBStorage/RNFBStorageModule.m; sourceTree = SOURCE_ROOT; };
32
+ 2744B98521F45429004F8E3F /* RNFBStorageModule.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = RNFBStorageModule.mm; path = RNFBStorage/RNFBStorageModule.mm; sourceTree = SOURCE_ROOT; };
33
33
  27A35B612268E0AB005BE5A8 /* RNFBStorageTask.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBStorageTask.m; sourceTree = "<group>"; };
34
34
  27A35B632268E0CD005BE5A8 /* RNFBStorageTask.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RNFBStorageTask.h; sourceTree = "<group>"; };
35
35
  27A35B642268E118005BE5A8 /* RNFBStorageDownloadTask.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFBStorageDownloadTask.m; sourceTree = "<group>"; };
@@ -63,7 +63,7 @@
63
63
  isa = PBXGroup;
64
64
  children = (
65
65
  2744B98421F45429004F8E3F /* RNFBStorageModule.h */,
66
- 2744B98521F45429004F8E3F /* RNFBStorageModule.m */,
66
+ 2744B98521F45429004F8E3F /* RNFBStorageModule.mm */,
67
67
  27A35B612268E0AB005BE5A8 /* RNFBStorageTask.m */,
68
68
  27A35B632268E0CD005BE5A8 /* RNFBStorageTask.h */,
69
69
  27A35B642268E118005BE5A8 /* RNFBStorageDownloadTask.m */,
@@ -144,7 +144,7 @@
144
144
  files = (
145
145
  27A35B622268E0AB005BE5A8 /* RNFBStorageTask.m in Sources */,
146
146
  27A35B6B2268E1BE005BE5A8 /* RNFBStorageCommon.m in Sources */,
147
- 2744B98621F45429004F8E3F /* RNFBStorageModule.m in Sources */,
147
+ 2744B98621F45429004F8E3F /* RNFBStorageModule.mm in Sources */,
148
148
  27A35B652268E118005BE5A8 /* RNFBStorageDownloadTask.m in Sources */,
149
149
  27A35B682268E138005BE5A8 /* RNFBStorageUploadTask.m in Sources */,
150
150
  );
@@ -181,7 +181,7 @@
181
181
  );
182
182
  GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
183
183
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
184
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
184
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
185
185
  MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
186
186
  MTL_FAST_MATH = YES;
187
187
  OTHER_LDFLAGS = "-ObjC";
@@ -215,7 +215,7 @@
215
215
  GCC_C_LANGUAGE_STANDARD = gnu11;
216
216
  GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
217
217
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
218
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
218
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
219
219
  MTL_ENABLE_DEBUG_INFO = NO;
220
220
  MTL_FAST_MATH = YES;
221
221
  OTHER_LDFLAGS = "-ObjC";
@@ -276,7 +276,7 @@
276
276
  "$(SRCROOT)/../../../node_modules/react-native-firebase/ios/**",
277
277
  "$(SRCROOT)/../../../packages/app/ios/**",
278
278
  );
279
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
279
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
280
280
  LIBRARY_SEARCH_PATHS = "$(inherited)";
281
281
  MACH_O_TYPE = staticlib;
282
282
  OTHER_LDFLAGS = "$(inherited)";
@@ -334,7 +334,7 @@
334
334
  "$(SRCROOT)/../../../node_modules/react-native-firebase/ios/**",
335
335
  "$(SRCROOT)/../../../packages/app/ios/**",
336
336
  );
337
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
337
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
338
338
  LIBRARY_SEARCH_PATHS = "$(inherited)";
339
339
  MACH_O_TYPE = staticlib;
340
340
  ONLY_ACTIVE_ARCH = YES;