@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.
- package/CHANGELOG.md +25 -0
- package/RNFBStorage.podspec +17 -6
- package/android/build.gradle +23 -0
- package/android/src/main/java/io/invertase/firebase/storage/{ReactNativeFirebaseStorageModule.java → NativeRNFBTurboStorage.java} +72 -131
- package/android/src/main/java/io/invertase/firebase/storage/ReactNativeFirebaseStoragePackage.java +1 -1
- package/android/src/main/java/io/invertase/firebase/storage/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboStorageSpec.java +125 -0
- package/android/src/main/java/io/invertase/firebase/storage/generated/jni/CMakeLists.txt +36 -0
- package/android/src/main/java/io/invertase/firebase/storage/generated/jni/RNFBStorageTurboModules-generated.cpp +116 -0
- package/android/src/main/java/io/invertase/firebase/storage/generated/jni/RNFBStorageTurboModules.h +31 -0
- package/android/src/main/java/io/invertase/firebase/storage/generated/jni/react/renderer/components/RNFBStorageTurboModules/RNFBStorageTurboModulesJSI-generated.cpp +153 -0
- package/android/src/main/java/io/invertase/firebase/storage/generated/jni/react/renderer/components/RNFBStorageTurboModules/RNFBStorageTurboModulesJSI.h +246 -0
- package/dist/module/StorageReference.js +4 -7
- package/dist/module/StorageReference.js.map +1 -1
- package/dist/module/StorageTask.js.map +1 -1
- package/dist/module/index.js +384 -6
- package/dist/module/index.js.map +1 -1
- package/dist/module/types/storage.js +6 -2
- package/dist/module/types/storage.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/module/web/RNFBStorageModule.js +9 -11
- package/dist/module/web/RNFBStorageModule.js.map +1 -1
- package/dist/typescript/lib/StorageReference.d.ts.map +1 -1
- package/dist/typescript/lib/StorageTask.d.ts +7 -8
- package/dist/typescript/lib/StorageTask.d.ts.map +1 -1
- package/dist/typescript/lib/index.d.ts +150 -4
- package/dist/typescript/lib/index.d.ts.map +1 -1
- package/dist/typescript/lib/types/internal.d.ts +5 -5
- package/dist/typescript/lib/types/internal.d.ts.map +1 -1
- package/dist/typescript/lib/types/storage.d.ts +15 -10
- package/dist/typescript/lib/types/storage.d.ts.map +1 -1
- package/dist/typescript/lib/version.d.ts +1 -1
- package/dist/typescript/lib/web/RNFBStorageModule.d.ts +3 -3
- package/dist/typescript/lib/web/RNFBStorageModule.d.ts.map +1 -1
- package/ios/RNFBStorage/RNFBStorageModule.h +2 -2
- package/ios/RNFBStorage/{RNFBStorageModule.m → RNFBStorageModule.mm} +193 -130
- package/ios/RNFBStorage.xcodeproj/project.pbxproj +8 -8
- package/ios/generated/RCTAppDependencyProvider.h +25 -0
- package/ios/generated/RCTAppDependencyProvider.mm +55 -0
- package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
- package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
- package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
- package/ios/generated/RCTThirdPartyComponentsProvider.mm +23 -0
- package/ios/generated/RNFBStorageTurboModules/RNFBStorageTurboModules-generated.mm +142 -0
- package/ios/generated/RNFBStorageTurboModules/RNFBStorageTurboModules.h +198 -0
- package/ios/generated/RNFBStorageTurboModulesJSI-generated.cpp +153 -0
- package/ios/generated/RNFBStorageTurboModulesJSI.h +246 -0
- package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
- package/lib/StorageReference.ts +3 -8
- package/lib/StorageTask.ts +13 -15
- package/lib/index.ts +501 -7
- package/lib/types/internal.ts +5 -5
- package/lib/types/storage.ts +17 -10
- package/lib/version.ts +1 -1
- package/lib/web/RNFBStorageModule.ts +10 -12
- package/package.json +22 -4
- package/react-native.config.js +10 -0
- package/specs/NativeRNFBTurboStorage.ts +46 -0
- package/typedoc.json +2 -3
- package/dist/module/modular.js +0 -270
- package/dist/module/modular.js.map +0 -1
- package/dist/module/namespaced.js +0 -192
- package/dist/module/namespaced.js.map +0 -1
- package/dist/module/types/namespaced.js +0 -64
- package/dist/module/types/namespaced.js.map +0 -1
- package/dist/typescript/lib/modular.d.ts +0 -154
- package/dist/typescript/lib/modular.d.ts.map +0 -1
- package/dist/typescript/lib/namespaced.d.ts +0 -12
- package/dist/typescript/lib/namespaced.d.ts.map +0 -1
- package/dist/typescript/lib/types/namespaced.d.ts +0 -1122
- package/dist/typescript/lib/types/namespaced.d.ts.map +0 -1
- package/lib/modular.ts +0 -401
- package/lib/namespaced.ts +0 -264
- 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
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
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:
|
|
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
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
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 =
|
|
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
|
-
|
|
201
|
-
|
|
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
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
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
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
maxDownloadRetryTime =
|
|
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
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
maxOperationRetryTime =
|
|
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
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
maxUploadRetryTime =
|
|
279
|
-
[[FIRStorage storageForApp:firebaseApp] setMaxUploadRetryTime:
|
|
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
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
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[
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
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
|
|
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
|
-
|
|
530
|
-
|
|
531
|
-
|
|
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
|
-
|
|
538
|
-
|
|
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
|
-
|
|
565
|
+
FIRStorageTaskStatus currentStatus = snapshot.status;
|
|
566
|
+
|
|
567
|
+
switch ((NSInteger)status) {
|
|
542
568
|
case 0:
|
|
543
|
-
|
|
544
|
-
|
|
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 (
|
|
547
|
-
[
|
|
548
|
-
|
|
549
|
-
|
|
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
|
-
|
|
589
|
+
return @NO;
|
|
552
590
|
case 2:
|
|
553
|
-
|
|
554
|
-
|
|
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
|
-
|
|
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 *)
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
337
|
+
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
|
338
338
|
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
339
339
|
MACH_O_TYPE = staticlib;
|
|
340
340
|
ONLY_ACTIVE_ARCH = YES;
|