@react-native-firebase/storage 25.1.0 → 26.1.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 +27 -0
- package/RNFBStorage.podspec +26 -7
- 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/RNFBStorageCommon.m +11 -0
- package/ios/RNFBStorage/RNFBStorageHelper.h +113 -0
- package/ios/RNFBStorage/{RNFBStorageModule.m → RNFBStorageHelper.m} +227 -222
- package/ios/RNFBStorage/RNFBStorageModule.h +2 -2
- package/ios/RNFBStorage/RNFBStorageModule.mm +252 -0
- 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
|
@@ -15,13 +15,19 @@
|
|
|
15
15
|
*
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
+
#if __has_include(<Firebase/Firebase.h>)
|
|
18
19
|
#import <Firebase/Firebase.h>
|
|
20
|
+
#else
|
|
21
|
+
@import FirebaseCore;
|
|
22
|
+
@import FirebaseStorage;
|
|
23
|
+
#endif
|
|
19
24
|
#import <React/RCTUtils.h>
|
|
20
25
|
|
|
26
|
+
#import "RNFBApp/RCTConvert+FIRApp.h"
|
|
27
|
+
#import "RNFBApp/RNFBSharedUtils.h"
|
|
21
28
|
#import "RNFBRCTEventEmitter.h"
|
|
22
|
-
#import "RNFBSharedUtils.h"
|
|
23
29
|
#import "RNFBStorageCommon.h"
|
|
24
|
-
#import "
|
|
30
|
+
#import "RNFBStorageHelper.h"
|
|
25
31
|
|
|
26
32
|
static NSString *const RNFB_STORAGE_EVENT = @"storage_event";
|
|
27
33
|
static NSString *const RNFB_STORAGE_STATE_CHANGED = @"state_changed";
|
|
@@ -40,35 +46,21 @@ static NSTimeInterval maxDownloadRetryTime = 600;
|
|
|
40
46
|
static NSTimeInterval maxUploadRetryTime = 600;
|
|
41
47
|
static NSTimeInterval maxOperationRetryTime = 120;
|
|
42
48
|
|
|
43
|
-
@implementation
|
|
44
|
-
#pragma mark -
|
|
45
|
-
#pragma mark Module Setup
|
|
46
|
-
|
|
47
|
-
RCT_EXPORT_MODULE();
|
|
48
|
-
|
|
49
|
-
+ (BOOL)requiresMainQueueSetup {
|
|
50
|
-
return YES;
|
|
51
|
-
}
|
|
49
|
+
@implementation RNFBStorageHelper
|
|
52
50
|
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
#pragma mark -
|
|
52
|
+
#pragma mark Shared state
|
|
55
53
|
|
|
54
|
+
+ (void)initializeSharedStateOnce {
|
|
56
55
|
static dispatch_once_t onceToken;
|
|
57
56
|
dispatch_once(&onceToken, ^{
|
|
58
57
|
PENDING_TASKS = [[NSMutableDictionary alloc] init];
|
|
59
58
|
emulatorConfigs = [[NSMutableDictionary alloc] init];
|
|
60
59
|
});
|
|
61
|
-
|
|
62
|
-
return self;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
- (void)dealloc {
|
|
66
|
-
for (NSString *key in [PENDING_TASKS allKeys]) {
|
|
67
|
-
[PENDING_TASKS removeObjectForKey:key];
|
|
68
|
-
}
|
|
69
60
|
}
|
|
70
61
|
|
|
71
|
-
|
|
62
|
+
+ (void)invalidate {
|
|
63
|
+
[self initializeSharedStateOnce];
|
|
72
64
|
for (NSString *key in [PENDING_TASKS allKeys]) {
|
|
73
65
|
[PENDING_TASKS removeObjectForKey:key];
|
|
74
66
|
}
|
|
@@ -80,11 +72,11 @@ RCT_EXPORT_MODULE();
|
|
|
80
72
|
/**
|
|
81
73
|
* @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#delete
|
|
82
74
|
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
75
|
+
+ (void)deleteObject:(NSString *)appName
|
|
76
|
+
url:(NSString *)url
|
|
77
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
78
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
79
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
88
80
|
FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
|
|
89
81
|
|
|
90
82
|
[storageReference deleteWithCompletion:^(NSError *_Nullable error) {
|
|
@@ -99,11 +91,11 @@ RCT_EXPORT_METHOD(delete
|
|
|
99
91
|
/**
|
|
100
92
|
* @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#getDownloadURL
|
|
101
93
|
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
94
|
+
+ (void)getDownloadURL:(NSString *)appName
|
|
95
|
+
url:(NSString *)url
|
|
96
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
97
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
98
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
107
99
|
FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
|
|
108
100
|
|
|
109
101
|
[storageReference downloadURLWithCompletion:^(NSURL *_Nullable URL, NSError *_Nullable error) {
|
|
@@ -125,11 +117,11 @@ RCT_EXPORT_METHOD(getDownloadURL
|
|
|
125
117
|
/**
|
|
126
118
|
* @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#getMetadata
|
|
127
119
|
*/
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
120
|
+
+ (void)getMetadata:(NSString *)appName
|
|
121
|
+
url:(NSString *)url
|
|
122
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
123
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
124
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
133
125
|
FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
|
|
134
126
|
|
|
135
127
|
[storageReference
|
|
@@ -145,13 +137,22 @@ RCT_EXPORT_METHOD(getMetadata
|
|
|
145
137
|
/**
|
|
146
138
|
* @url https://firebase.google.com/docs/reference/js/firebase.storage.Reference#updateMetadata
|
|
147
139
|
*/
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
140
|
+
+ (NSDictionary *)decodedMetadataMap:(NSDictionary *_Nullable)metadata {
|
|
141
|
+
if (metadata == nil) {
|
|
142
|
+
return @{};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return [RNFBSharedUtils decodeNullSentinels:metadata];
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
+ (void)updateMetadata:(NSString *)appName
|
|
149
|
+
url:(NSString *)url
|
|
150
|
+
metadata:(NSDictionary *_Nullable)metadata
|
|
151
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
152
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
153
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
154
154
|
FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
|
|
155
|
+
NSDictionary *metadataMap = [self decodedMetadataMap:metadata];
|
|
155
156
|
|
|
156
157
|
[storageReference metadataWithCompletion:^(FIRStorageMetadata *_Nullable fetchedMetadata,
|
|
157
158
|
NSError *_Nullable error) {
|
|
@@ -159,7 +160,7 @@ RCT_EXPORT_METHOD(updateMetadata
|
|
|
159
160
|
[self promiseRejectStorageException:reject error:error];
|
|
160
161
|
} else {
|
|
161
162
|
FIRStorageMetadata *storageMetadata =
|
|
162
|
-
[RNFBStorageCommon buildMetadataFromMap:
|
|
163
|
+
[RNFBStorageCommon buildMetadataFromMap:metadataMap
|
|
163
164
|
existingMetadata:fetchedMetadata
|
|
164
165
|
path:[storageReference fullPath]];
|
|
165
166
|
|
|
@@ -176,29 +177,25 @@ RCT_EXPORT_METHOD(updateMetadata
|
|
|
176
177
|
}];
|
|
177
178
|
}
|
|
178
179
|
|
|
179
|
-
|
|
180
|
-
*
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
: (RCTPromiseRejectBlock)reject) {
|
|
180
|
+
// list
|
|
181
|
+
+ (void)list:(NSString *)appName
|
|
182
|
+
url:(NSString *)url
|
|
183
|
+
maxResults:(long)maxResults
|
|
184
|
+
pageToken:(NSString *_Nullable)pageToken
|
|
185
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
186
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
187
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
188
188
|
FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
|
|
189
|
-
long maxResults = [listOptions[@"maxResults"] longValue];
|
|
190
189
|
|
|
191
190
|
id completionBlock = ^(FIRStorageListResult *result, NSError *error) {
|
|
192
191
|
if (error != nil) {
|
|
193
192
|
[self promiseRejectStorageException:reject error:error];
|
|
194
193
|
} else {
|
|
195
|
-
|
|
196
|
-
resolve(listResultDict);
|
|
194
|
+
resolve([RNFBStorageCommon listResultToDict:result]);
|
|
197
195
|
}
|
|
198
196
|
};
|
|
199
197
|
|
|
200
|
-
if (
|
|
201
|
-
NSString *pageToken = listOptions[@"pageToken"];
|
|
198
|
+
if (pageToken != nil) {
|
|
202
199
|
[storageReference listWithMaxResults:(int64_t)maxResults
|
|
203
200
|
pageToken:pageToken
|
|
204
201
|
completion:completionBlock];
|
|
@@ -207,14 +204,12 @@ RCT_EXPORT_METHOD(list
|
|
|
207
204
|
}
|
|
208
205
|
}
|
|
209
206
|
|
|
210
|
-
|
|
211
|
-
*
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
: (RCTPromiseResolveBlock)resolve
|
|
217
|
-
: (RCTPromiseRejectBlock)reject) {
|
|
207
|
+
// listAll
|
|
208
|
+
+ (void)listAll:(NSString *)appName
|
|
209
|
+
url:(NSString *)url
|
|
210
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
211
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
212
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
218
213
|
FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
|
|
219
214
|
|
|
220
215
|
__block bool alreadyCompleted = false;
|
|
@@ -222,7 +217,7 @@ RCT_EXPORT_METHOD(listAll
|
|
|
222
217
|
id completionBlock = ^(FIRStorageListResult *result, NSError *error) {
|
|
223
218
|
// This may be called multiple times if an error occurs
|
|
224
219
|
// Make sure we won't try to resolve the promise twice in this case
|
|
225
|
-
// TODO - remove pending resolution of
|
|
220
|
+
// TODO - remove pending resolution of firebase-ios-sdk issue 7197
|
|
226
221
|
if (alreadyCompleted) {
|
|
227
222
|
return;
|
|
228
223
|
}
|
|
@@ -237,59 +232,49 @@ RCT_EXPORT_METHOD(listAll
|
|
|
237
232
|
[storageReference listAllWithCompletion:completionBlock];
|
|
238
233
|
}
|
|
239
234
|
|
|
240
|
-
|
|
241
|
-
*
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
: (RCTPromiseRejectBlock)reject) {
|
|
249
|
-
maxDownloadRetryTime = [milliseconds doubleValue] / 1000;
|
|
250
|
-
[[FIRStorage storageForApp:firebaseApp]
|
|
251
|
-
setMaxDownloadRetryTime:[milliseconds doubleValue] / 1000];
|
|
235
|
+
// setMaxDownloadRetryTime
|
|
236
|
+
+ (void)setMaxDownloadRetryTime:(NSString *)appName
|
|
237
|
+
milliseconds:(double)milliseconds
|
|
238
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
239
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
240
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
241
|
+
maxDownloadRetryTime = milliseconds / 1000;
|
|
242
|
+
[[FIRStorage storageForApp:firebaseApp] setMaxDownloadRetryTime:milliseconds / 1000];
|
|
252
243
|
resolve([NSNull null]);
|
|
253
244
|
}
|
|
254
245
|
|
|
255
|
-
|
|
256
|
-
*
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
: (RCTPromiseRejectBlock)reject) {
|
|
264
|
-
maxOperationRetryTime = [milliseconds doubleValue] / 1000;
|
|
265
|
-
[[FIRStorage storageForApp:firebaseApp]
|
|
266
|
-
setMaxOperationRetryTime:[milliseconds doubleValue] / 1000];
|
|
246
|
+
// setMaxOperationRetryTime
|
|
247
|
+
+ (void)setMaxOperationRetryTime:(NSString *)appName
|
|
248
|
+
milliseconds:(double)milliseconds
|
|
249
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
250
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
251
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
252
|
+
maxOperationRetryTime = milliseconds / 1000;
|
|
253
|
+
[[FIRStorage storageForApp:firebaseApp] setMaxOperationRetryTime:milliseconds / 1000];
|
|
267
254
|
resolve([NSNull null]);
|
|
268
255
|
}
|
|
269
256
|
|
|
270
|
-
|
|
271
|
-
*
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
maxUploadRetryTime = [milliseconds doubleValue] / 1000;
|
|
279
|
-
[[FIRStorage storageForApp:firebaseApp] setMaxUploadRetryTime:[milliseconds doubleValue] / 1000];
|
|
257
|
+
// setMaxUploadRetryTime
|
|
258
|
+
+ (void)setMaxUploadRetryTime:(NSString *)appName
|
|
259
|
+
milliseconds:(double)milliseconds
|
|
260
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
261
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
262
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
263
|
+
maxUploadRetryTime = milliseconds / 1000;
|
|
264
|
+
[[FIRStorage storageForApp:firebaseApp] setMaxUploadRetryTime:milliseconds / 1000];
|
|
280
265
|
resolve([NSNull null]);
|
|
281
266
|
}
|
|
282
267
|
|
|
283
|
-
|
|
284
|
-
*
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
268
|
+
// writeToFile
|
|
269
|
+
+ (void)writeToFile:(NSString *)appName
|
|
270
|
+
url:(NSString *)url
|
|
271
|
+
localFilePath:(NSString *)localFilePath
|
|
272
|
+
taskId:(double)taskId
|
|
273
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
274
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
275
|
+
[self initializeSharedStateOnce];
|
|
276
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
277
|
+
NSNumber *taskIdNumber = @(taskId);
|
|
293
278
|
FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
|
|
294
279
|
NSURL *localFile = [NSURL fileURLWithPath:localFilePath];
|
|
295
280
|
|
|
@@ -298,9 +283,8 @@ RCT_EXPORT_METHOD(writeToFile
|
|
|
298
283
|
downloadTask = [storageReference writeToFile:localFile];
|
|
299
284
|
});
|
|
300
285
|
|
|
301
|
-
PENDING_TASKS[
|
|
286
|
+
PENDING_TASKS[taskIdNumber] = downloadTask;
|
|
302
287
|
|
|
303
|
-
// download started or resumed
|
|
304
288
|
[downloadTask
|
|
305
289
|
observeStatus:FIRStorageTaskStatusResume
|
|
306
290
|
handler:^(FIRStorageTaskSnapshot *snapshot) {
|
|
@@ -309,11 +293,10 @@ RCT_EXPORT_METHOD(writeToFile
|
|
|
309
293
|
[RNFBStorageCommon getStorageEventDictionary:eventBody
|
|
310
294
|
internalEventName:RNFB_STORAGE_STATE_CHANGED
|
|
311
295
|
appName:firebaseApp.name
|
|
312
|
-
taskId:
|
|
296
|
+
taskId:taskIdNumber];
|
|
313
297
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
|
|
314
298
|
}];
|
|
315
299
|
|
|
316
|
-
// download paused
|
|
317
300
|
[downloadTask
|
|
318
301
|
observeStatus:FIRStorageTaskStatusPause
|
|
319
302
|
handler:^(FIRStorageTaskSnapshot *snapshot) {
|
|
@@ -322,11 +305,10 @@ RCT_EXPORT_METHOD(writeToFile
|
|
|
322
305
|
[RNFBStorageCommon getStorageEventDictionary:eventBody
|
|
323
306
|
internalEventName:RNFB_STORAGE_STATE_CHANGED
|
|
324
307
|
appName:firebaseApp.name
|
|
325
|
-
taskId:
|
|
308
|
+
taskId:taskIdNumber];
|
|
326
309
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
|
|
327
310
|
}];
|
|
328
311
|
|
|
329
|
-
// download reported progress
|
|
330
312
|
[downloadTask
|
|
331
313
|
observeStatus:FIRStorageTaskStatusProgress
|
|
332
314
|
handler:^(FIRStorageTaskSnapshot *snapshot) {
|
|
@@ -335,56 +317,50 @@ RCT_EXPORT_METHOD(writeToFile
|
|
|
335
317
|
[RNFBStorageCommon getStorageEventDictionary:eventBody
|
|
336
318
|
internalEventName:RNFB_STORAGE_STATE_CHANGED
|
|
337
319
|
appName:firebaseApp.name
|
|
338
|
-
taskId:
|
|
320
|
+
taskId:taskIdNumber];
|
|
339
321
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
|
|
340
322
|
}];
|
|
341
323
|
|
|
342
|
-
// download completed successfully
|
|
343
324
|
[downloadTask
|
|
344
325
|
observeStatus:FIRStorageTaskStatusSuccess
|
|
345
326
|
handler:^(FIRStorageTaskSnapshot *snapshot) {
|
|
346
|
-
[PENDING_TASKS removeObjectForKey:
|
|
327
|
+
[PENDING_TASKS removeObjectForKey:taskIdNumber];
|
|
347
328
|
|
|
348
|
-
// state_changed
|
|
349
329
|
NSDictionary *stateChangedEventBody =
|
|
350
330
|
[RNFBStorageCommon getDownloadTaskAsDictionary:snapshot];
|
|
351
331
|
NSDictionary *stateChangedEvent =
|
|
352
332
|
[RNFBStorageCommon getStorageEventDictionary:stateChangedEventBody
|
|
353
333
|
internalEventName:RNFB_STORAGE_STATE_CHANGED
|
|
354
334
|
appName:firebaseApp.name
|
|
355
|
-
taskId:
|
|
335
|
+
taskId:taskIdNumber];
|
|
356
336
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT
|
|
357
337
|
body:stateChangedEvent];
|
|
358
338
|
|
|
359
|
-
// download_success
|
|
360
339
|
NSDictionary *eventBody = [RNFBStorageCommon getDownloadTaskAsDictionary:snapshot];
|
|
361
340
|
NSDictionary *event =
|
|
362
341
|
[RNFBStorageCommon getStorageEventDictionary:eventBody
|
|
363
342
|
internalEventName:RNFB_STORAGE_DOWNLOAD_SUCCESS
|
|
364
343
|
appName:firebaseApp.name
|
|
365
|
-
taskId:
|
|
344
|
+
taskId:taskIdNumber];
|
|
366
345
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
|
|
367
346
|
resolve(eventBody);
|
|
368
347
|
}];
|
|
369
348
|
|
|
370
|
-
// download task failed
|
|
371
349
|
[downloadTask
|
|
372
350
|
observeStatus:FIRStorageTaskStatusFailure
|
|
373
351
|
handler:^(FIRStorageTaskSnapshot *snapshot) {
|
|
374
|
-
[PENDING_TASKS removeObjectForKey:
|
|
352
|
+
[PENDING_TASKS removeObjectForKey:taskIdNumber];
|
|
375
353
|
|
|
376
|
-
// state_changed
|
|
377
354
|
NSDictionary *stateChangedEventBody =
|
|
378
355
|
[RNFBStorageCommon getDownloadTaskAsDictionary:snapshot];
|
|
379
356
|
NSDictionary *stateChangedEvent =
|
|
380
357
|
[RNFBStorageCommon getStorageEventDictionary:stateChangedEventBody
|
|
381
358
|
internalEventName:RNFB_STORAGE_STATE_CHANGED
|
|
382
359
|
appName:firebaseApp.name
|
|
383
|
-
taskId:
|
|
360
|
+
taskId:taskIdNumber];
|
|
384
361
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT
|
|
385
362
|
body:stateChangedEvent];
|
|
386
363
|
|
|
387
|
-
// download_failed
|
|
388
364
|
NSMutableDictionary *taskSnapshotDict =
|
|
389
365
|
[RNFBStorageCommon getDownloadTaskAsDictionary:snapshot];
|
|
390
366
|
NSDictionary *eventBody = [RNFBStorageCommon buildErrorSnapshotDict:snapshot.error
|
|
@@ -393,27 +369,27 @@ RCT_EXPORT_METHOD(writeToFile
|
|
|
393
369
|
[RNFBStorageCommon getStorageEventDictionary:eventBody
|
|
394
370
|
internalEventName:RNFB_STORAGE_DOWNLOAD_FAILURE
|
|
395
371
|
appName:firebaseApp.name
|
|
396
|
-
taskId:
|
|
372
|
+
taskId:taskIdNumber];
|
|
397
373
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
|
|
398
374
|
|
|
399
375
|
[self promiseRejectStorageException:reject error:snapshot.error];
|
|
400
376
|
}];
|
|
401
377
|
}
|
|
402
378
|
|
|
403
|
-
|
|
404
|
-
*
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
: (RCTPromiseRejectBlock)reject) {
|
|
379
|
+
// putFile
|
|
380
|
+
+ (void)putFile:(NSString *)appName
|
|
381
|
+
url:(NSString *)url
|
|
382
|
+
localFilePath:(NSString *)localFilePath
|
|
383
|
+
metadata:(NSDictionary *_Nullable)metadata
|
|
384
|
+
taskId:(double)taskId
|
|
385
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
386
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
387
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
388
|
+
NSNumber *taskIdNumber = @(taskId);
|
|
414
389
|
FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
|
|
390
|
+
NSDictionary *metadataMap = [self decodedMetadataMap:metadata];
|
|
415
391
|
FIRStorageMetadata *storageMetadata =
|
|
416
|
-
[RNFBStorageCommon buildMetadataFromMap:
|
|
392
|
+
[RNFBStorageCommon buildMetadataFromMap:metadataMap
|
|
417
393
|
existingMetadata:nil
|
|
418
394
|
path:[storageReference fullPath]];
|
|
419
395
|
|
|
@@ -422,7 +398,6 @@ RCT_EXPORT_METHOD(putFile
|
|
|
422
398
|
completion:^(NSArray *errorCodeMessageArray, NSURL *temporaryFileUrl,
|
|
423
399
|
NSString *contentType) {
|
|
424
400
|
if (errorCodeMessageArray != nil) {
|
|
425
|
-
// state_changed
|
|
426
401
|
NSMutableDictionary *taskSnapshotDict =
|
|
427
402
|
[RNFBStorageCommon getUploadTaskAsDictionary:nil];
|
|
428
403
|
NSDictionary *eventBody = [RNFBStorageCommon
|
|
@@ -432,16 +407,15 @@ RCT_EXPORT_METHOD(putFile
|
|
|
432
407
|
getStorageEventDictionary:eventBody
|
|
433
408
|
internalEventName:RNFB_STORAGE_STATE_CHANGED
|
|
434
409
|
appName:[[[storageReference storage] app] name]
|
|
435
|
-
taskId:
|
|
410
|
+
taskId:taskIdNumber];
|
|
436
411
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT
|
|
437
412
|
body:stateChangedEvent];
|
|
438
413
|
|
|
439
|
-
// upload_failed
|
|
440
414
|
NSDictionary *event = [RNFBStorageCommon
|
|
441
415
|
getStorageEventDictionary:eventBody
|
|
442
416
|
internalEventName:RNFB_STORAGE_UPLOAD_FAILURE
|
|
443
417
|
appName:[[[storageReference storage] app] name]
|
|
444
|
-
taskId:
|
|
418
|
+
taskId:taskIdNumber];
|
|
445
419
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
|
|
446
420
|
|
|
447
421
|
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
@@ -467,27 +441,27 @@ RCT_EXPORT_METHOD(putFile
|
|
|
467
441
|
|
|
468
442
|
[self addUploadTaskObservers:uploadTask
|
|
469
443
|
appDisplayName:[[[storageReference storage] app] name]
|
|
470
|
-
taskId:
|
|
444
|
+
taskId:taskIdNumber
|
|
471
445
|
resolver:resolve
|
|
472
446
|
rejecter:reject];
|
|
473
447
|
}];
|
|
474
448
|
}
|
|
475
449
|
|
|
476
|
-
|
|
477
|
-
*
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
: (RCTPromiseRejectBlock)reject) {
|
|
450
|
+
// putString
|
|
451
|
+
+ (void)putString:(NSString *)appName
|
|
452
|
+
url:(NSString *)url
|
|
453
|
+
string:(NSString *)string
|
|
454
|
+
format:(NSString *)format
|
|
455
|
+
metadata:(NSDictionary *_Nullable)metadata
|
|
456
|
+
taskId:(double)taskId
|
|
457
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
458
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
459
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
460
|
+
NSNumber *taskIdNumber = @(taskId);
|
|
488
461
|
FIRStorageReference *storageReference = [self getReferenceFromUrl:url app:firebaseApp];
|
|
462
|
+
NSDictionary *metadataMap = [self decodedMetadataMap:metadata];
|
|
489
463
|
FIRStorageMetadata *storageMetadata =
|
|
490
|
-
[RNFBStorageCommon buildMetadataFromMap:
|
|
464
|
+
[RNFBStorageCommon buildMetadataFromMap:metadataMap
|
|
491
465
|
existingMetadata:nil
|
|
492
466
|
path:[storageReference fullPath]];
|
|
493
467
|
|
|
@@ -500,78 +474,129 @@ RCT_EXPORT_METHOD(putString
|
|
|
500
474
|
|
|
501
475
|
[self addUploadTaskObservers:uploadTask
|
|
502
476
|
appDisplayName:[[[storageReference storage] app] name]
|
|
503
|
-
taskId:
|
|
477
|
+
taskId:taskIdNumber
|
|
504
478
|
resolver:resolve
|
|
505
479
|
rejecter:reject];
|
|
506
480
|
}
|
|
507
481
|
|
|
508
|
-
|
|
509
|
-
*
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
: (NSString *)bucketUrl) {
|
|
482
|
+
// useEmulator
|
|
483
|
+
+ (void)useEmulator:(NSString *)appName
|
|
484
|
+
host:(NSString *)host
|
|
485
|
+
port:(double)port
|
|
486
|
+
bucketUrl:(NSString *)bucketUrl {
|
|
487
|
+
[self initializeSharedStateOnce];
|
|
488
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
516
489
|
emulatorHost = host;
|
|
517
|
-
emulatorPort = port;
|
|
490
|
+
emulatorPort = (NSInteger)port;
|
|
518
491
|
NSString *key = [self createEmulatorKey:bucketUrl appName:firebaseApp.name];
|
|
519
492
|
|
|
520
493
|
if (!emulatorConfigs[key]) {
|
|
521
|
-
[[FIRStorage storageForApp:firebaseApp URL:bucketUrl] useEmulatorWithHost:host
|
|
494
|
+
[[FIRStorage storageForApp:firebaseApp URL:bucketUrl] useEmulatorWithHost:host
|
|
495
|
+
port:(NSInteger)port];
|
|
522
496
|
emulatorConfigs[key] = @YES;
|
|
523
497
|
}
|
|
524
498
|
}
|
|
525
499
|
|
|
526
|
-
|
|
527
|
-
*
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
: (nonnull NSNumber *)taskId
|
|
532
|
-
: (nonnull NSNumber *)status
|
|
533
|
-
: (RCTPromiseResolveBlock)resolve
|
|
534
|
-
: (RCTPromiseRejectBlock)reject) {
|
|
535
|
-
id task = PENDING_TASKS[taskId];
|
|
500
|
+
// setTaskStatus
|
|
501
|
+
+ (NSNumber *)setTaskStatus:(NSString *)appName taskId:(double)taskId status:(double)status {
|
|
502
|
+
[self initializeSharedStateOnce];
|
|
503
|
+
NSNumber *taskIdNumber = @(taskId);
|
|
504
|
+
id task = PENDING_TASKS[taskIdNumber];
|
|
536
505
|
if (task == nil) {
|
|
537
|
-
|
|
538
|
-
|
|
506
|
+
return @NO;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
FIRStorageTaskSnapshot *snapshot = nil;
|
|
510
|
+
if ([task isKindOfClass:[FIRStorageUploadTask class]]) {
|
|
511
|
+
snapshot = [(FIRStorageUploadTask *)task snapshot];
|
|
512
|
+
} else if ([task isKindOfClass:[FIRStorageDownloadTask class]]) {
|
|
513
|
+
snapshot = [(FIRStorageDownloadTask *)task snapshot];
|
|
514
|
+
} else {
|
|
515
|
+
return @NO;
|
|
539
516
|
}
|
|
540
517
|
|
|
541
|
-
|
|
518
|
+
FIRStorageTaskStatus currentStatus = snapshot.status;
|
|
519
|
+
|
|
520
|
+
switch ((NSInteger)status) {
|
|
542
521
|
case 0:
|
|
543
|
-
|
|
544
|
-
|
|
522
|
+
if (currentStatus != FIRStorageTaskStatusPause &&
|
|
523
|
+
(currentStatus == FIRStorageTaskStatusResume ||
|
|
524
|
+
currentStatus == FIRStorageTaskStatusProgress)) {
|
|
525
|
+
if ([task isKindOfClass:[FIRStorageDownloadTask class]]) {
|
|
526
|
+
[(FIRStorageDownloadTask *)task pause];
|
|
527
|
+
} else {
|
|
528
|
+
[(FIRStorageUploadTask *)task pause];
|
|
529
|
+
}
|
|
530
|
+
return @YES;
|
|
531
|
+
}
|
|
532
|
+
return @NO;
|
|
545
533
|
case 1:
|
|
546
|
-
if (
|
|
547
|
-
[
|
|
548
|
-
|
|
549
|
-
|
|
534
|
+
if (currentStatus == FIRStorageTaskStatusPause) {
|
|
535
|
+
if ([task isKindOfClass:[FIRStorageDownloadTask class]]) {
|
|
536
|
+
[(FIRStorageDownloadTask *)task resume];
|
|
537
|
+
} else {
|
|
538
|
+
[(FIRStorageUploadTask *)task resume];
|
|
539
|
+
}
|
|
540
|
+
return @YES;
|
|
550
541
|
}
|
|
551
|
-
|
|
542
|
+
return @NO;
|
|
552
543
|
case 2:
|
|
553
|
-
|
|
554
|
-
|
|
544
|
+
if (currentStatus != FIRStorageTaskStatusSuccess &&
|
|
545
|
+
currentStatus != FIRStorageTaskStatusFailure &&
|
|
546
|
+
(currentStatus == FIRStorageTaskStatusResume ||
|
|
547
|
+
currentStatus == FIRStorageTaskStatusProgress ||
|
|
548
|
+
currentStatus == FIRStorageTaskStatusPause)) {
|
|
549
|
+
[PENDING_TASKS removeObjectForKey:taskIdNumber];
|
|
550
|
+
if ([task isKindOfClass:[FIRStorageDownloadTask class]]) {
|
|
551
|
+
[(FIRStorageDownloadTask *)task cancel];
|
|
552
|
+
} else {
|
|
553
|
+
[(FIRStorageUploadTask *)task cancel];
|
|
554
|
+
}
|
|
555
|
+
return @YES;
|
|
556
|
+
}
|
|
557
|
+
return @NO;
|
|
555
558
|
default:
|
|
556
|
-
|
|
559
|
+
return @NO;
|
|
557
560
|
}
|
|
558
561
|
}
|
|
559
562
|
|
|
563
|
+
// storageConstantsDictionary
|
|
564
|
+
+ (NSDictionary *)storageConstantsDictionary {
|
|
565
|
+
NSMutableDictionary *constants = [@{} mutableCopy];
|
|
566
|
+
|
|
567
|
+
if ([[[FIRApp allApps] allKeys] count] > 0) {
|
|
568
|
+
FIRStorage *storageInstance = [FIRStorage storage];
|
|
569
|
+
constants[@"maxDownloadRetryTime"] =
|
|
570
|
+
@((NSInteger)[storageInstance maxDownloadRetryTime] * 1000);
|
|
571
|
+
constants[@"maxOperationRetryTime"] =
|
|
572
|
+
@((NSInteger)[storageInstance maxOperationRetryTime] * 1000);
|
|
573
|
+
constants[@"maxUploadRetryTime"] = @((NSInteger)[storageInstance maxUploadRetryTime] * 1000);
|
|
574
|
+
} else {
|
|
575
|
+
constants[@"maxDownloadRetryTime"] = @0;
|
|
576
|
+
constants[@"maxOperationRetryTime"] = @0;
|
|
577
|
+
constants[@"maxUploadRetryTime"] = @0;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
return constants;
|
|
581
|
+
}
|
|
582
|
+
|
|
560
583
|
#pragma mark -
|
|
561
584
|
#pragma mark Firebase Storage Internals
|
|
562
585
|
|
|
563
|
-
|
|
586
|
+
// createEmulatorKey
|
|
587
|
+
+ (NSString *)createEmulatorKey:(NSString *)bucketUrl appName:(NSString *)appName {
|
|
564
588
|
return [NSString stringWithFormat:@"%@-%@", appName, bucketUrl];
|
|
565
589
|
}
|
|
566
590
|
|
|
567
|
-
|
|
591
|
+
// addUploadTaskObservers
|
|
592
|
+
+ (void)addUploadTaskObservers:(FIRStorageUploadTask *)uploadTask
|
|
568
593
|
appDisplayName:(NSString *)appDisplayName
|
|
569
594
|
taskId:(NSNumber *)taskId
|
|
570
595
|
resolver:(RCTPromiseResolveBlock)resolve
|
|
571
596
|
rejecter:(RCTPromiseRejectBlock)reject {
|
|
597
|
+
[self initializeSharedStateOnce];
|
|
572
598
|
PENDING_TASKS[taskId] = uploadTask;
|
|
573
599
|
|
|
574
|
-
// upload started or resumed
|
|
575
600
|
[uploadTask
|
|
576
601
|
observeStatus:FIRStorageTaskStatusResume
|
|
577
602
|
handler:^(FIRStorageTaskSnapshot *snapshot) {
|
|
@@ -584,7 +609,6 @@ RCT_EXPORT_METHOD(setTaskStatus
|
|
|
584
609
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
|
|
585
610
|
}];
|
|
586
611
|
|
|
587
|
-
// upload paused
|
|
588
612
|
[uploadTask
|
|
589
613
|
observeStatus:FIRStorageTaskStatusPause
|
|
590
614
|
handler:^(FIRStorageTaskSnapshot *snapshot) {
|
|
@@ -597,7 +621,6 @@ RCT_EXPORT_METHOD(setTaskStatus
|
|
|
597
621
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
|
|
598
622
|
}];
|
|
599
623
|
|
|
600
|
-
// upload reported progress
|
|
601
624
|
[uploadTask
|
|
602
625
|
observeStatus:FIRStorageTaskStatusProgress
|
|
603
626
|
handler:^(FIRStorageTaskSnapshot *snapshot) {
|
|
@@ -610,7 +633,6 @@ RCT_EXPORT_METHOD(setTaskStatus
|
|
|
610
633
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT body:event];
|
|
611
634
|
}];
|
|
612
635
|
|
|
613
|
-
// upload completed successfully
|
|
614
636
|
[uploadTask observeStatus:FIRStorageTaskStatusSuccess
|
|
615
637
|
handler:^(FIRStorageTaskSnapshot *snapshot) {
|
|
616
638
|
[PENDING_TASKS removeObjectForKey:taskId];
|
|
@@ -618,7 +640,6 @@ RCT_EXPORT_METHOD(setTaskStatus
|
|
|
618
640
|
NSDictionary *eventBody =
|
|
619
641
|
[RNFBStorageCommon getUploadTaskAsDictionary:snapshot];
|
|
620
642
|
|
|
621
|
-
// state_changed
|
|
622
643
|
NSDictionary *stateChangeEvent =
|
|
623
644
|
[RNFBStorageCommon getStorageEventDictionary:eventBody
|
|
624
645
|
internalEventName:RNFB_STORAGE_STATE_CHANGED
|
|
@@ -627,7 +648,6 @@ RCT_EXPORT_METHOD(setTaskStatus
|
|
|
627
648
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT
|
|
628
649
|
body:stateChangeEvent];
|
|
629
650
|
|
|
630
|
-
// upload_success
|
|
631
651
|
NSDictionary *uploadSuccessEvent =
|
|
632
652
|
[RNFBStorageCommon getStorageEventDictionary:eventBody
|
|
633
653
|
internalEventName:RNFB_STORAGE_UPLOAD_SUCCESS
|
|
@@ -643,7 +663,6 @@ RCT_EXPORT_METHOD(setTaskStatus
|
|
|
643
663
|
handler:^(FIRStorageTaskSnapshot *snapshot) {
|
|
644
664
|
[PENDING_TASKS removeObjectForKey:taskId];
|
|
645
665
|
|
|
646
|
-
// state_changed
|
|
647
666
|
NSMutableDictionary *taskSnapshotDict =
|
|
648
667
|
[RNFBStorageCommon getUploadTaskAsDictionary:snapshot];
|
|
649
668
|
NSDictionary *stateChangedEvtBody =
|
|
@@ -657,7 +676,6 @@ RCT_EXPORT_METHOD(setTaskStatus
|
|
|
657
676
|
[[RNFBRCTEventEmitter shared] sendEventWithName:RNFB_STORAGE_EVENT
|
|
658
677
|
body:stateChangedEvent];
|
|
659
678
|
|
|
660
|
-
// upload_failed
|
|
661
679
|
NSDictionary *eventBody = [RNFBStorageCommon buildErrorSnapshotDict:snapshot.error
|
|
662
680
|
taskSnapshotDict:taskSnapshotDict];
|
|
663
681
|
NSDictionary *event =
|
|
@@ -671,7 +689,9 @@ RCT_EXPORT_METHOD(setTaskStatus
|
|
|
671
689
|
}];
|
|
672
690
|
}
|
|
673
691
|
|
|
674
|
-
|
|
692
|
+
// getReferenceFromUrl
|
|
693
|
+
+ (FIRStorageReference *)getReferenceFromUrl:(NSString *)url app:(FIRApp *)firebaseApp {
|
|
694
|
+
[self initializeSharedStateOnce];
|
|
675
695
|
FIRStorage *storage;
|
|
676
696
|
NSString *pathWithBucketName = [url substringWithRange:NSMakeRange(5, [url length] - 5)];
|
|
677
697
|
NSString *bucket = url;
|
|
@@ -681,7 +701,6 @@ RCT_EXPORT_METHOD(setTaskStatus
|
|
|
681
701
|
}
|
|
682
702
|
storage = [FIRStorage storageForApp:firebaseApp URL:bucket];
|
|
683
703
|
|
|
684
|
-
NSLog(@"Setting emulator - host %@ port %ld", emulatorHost, (long)emulatorPort);
|
|
685
704
|
NSString *key = [self createEmulatorKey:bucket appName:firebaseApp.name];
|
|
686
705
|
if (![emulatorHost isEqual:[NSNull null]] && emulatorHost != nil && !emulatorConfigs[key]) {
|
|
687
706
|
@try {
|
|
@@ -696,7 +715,8 @@ RCT_EXPORT_METHOD(setTaskStatus
|
|
|
696
715
|
return [storage referenceForURL:url];
|
|
697
716
|
}
|
|
698
717
|
|
|
699
|
-
|
|
718
|
+
// promiseRejectStorageException
|
|
719
|
+
+ (void)promiseRejectStorageException:(RCTPromiseRejectBlock)reject error:(NSError *)error {
|
|
700
720
|
NSArray *codeAndMessage = [RNFBStorageCommon getErrorCodeMessage:error];
|
|
701
721
|
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
702
722
|
userInfo:(NSMutableDictionary *)@{
|
|
@@ -705,19 +725,4 @@ RCT_EXPORT_METHOD(setTaskStatus
|
|
|
705
725
|
}];
|
|
706
726
|
}
|
|
707
727
|
|
|
708
|
-
- (NSDictionary *)constantsToExport {
|
|
709
|
-
NSMutableDictionary *constants = [@{} mutableCopy];
|
|
710
|
-
|
|
711
|
-
if ([[[FIRApp allApps] allKeys] count] > 0) {
|
|
712
|
-
FIRStorage *storageInstance = [FIRStorage storage];
|
|
713
|
-
constants[@"maxDownloadRetryTime"] =
|
|
714
|
-
@((NSInteger)[storageInstance maxDownloadRetryTime] * 1000);
|
|
715
|
-
constants[@"maxOperationRetryTime"] =
|
|
716
|
-
@((NSInteger)[storageInstance maxOperationRetryTime] * 1000);
|
|
717
|
-
constants[@"maxUploadRetryTime"] = @((NSInteger)[storageInstance maxUploadRetryTime] * 1000);
|
|
718
|
-
}
|
|
719
|
-
|
|
720
|
-
return constants;
|
|
721
|
-
}
|
|
722
|
-
|
|
723
728
|
@end
|