@@ -174,6 +174,7 @@ - (FIRStorageUploadTask *)putData:(NSData *)uploadData
174
174
metadata: metadata];
175
175
176
176
if (completion) {
177
+ __block BOOL completed = NO ;
177
178
dispatch_queue_t callbackQueue = _storage.fetcherServiceForApp .callbackQueue ;
178
179
if (!callbackQueue) {
179
180
callbackQueue = dispatch_get_main_queue ();
@@ -182,13 +183,19 @@ - (FIRStorageUploadTask *)putData:(NSData *)uploadData
182
183
[task observeStatus: FIRStorageTaskStatusSuccess
183
184
handler: ^(FIRStorageTaskSnapshot *_Nonnull snapshot) {
184
185
dispatch_async (callbackQueue, ^{
185
- completion (snapshot.metadata , nil );
186
+ if (!completed) {
187
+ completed = YES ;
188
+ completion (snapshot.metadata , nil );
189
+ }
186
190
});
187
191
}];
188
192
[task observeStatus: FIRStorageTaskStatusFailure
189
193
handler: ^(FIRStorageTaskSnapshot *_Nonnull snapshot) {
190
194
dispatch_async (callbackQueue, ^{
191
- completion (nil , snapshot.error );
195
+ if (!completed) {
196
+ completed = YES ;
197
+ completion (nil , snapshot.error );
198
+ }
192
199
});
193
200
}];
194
201
}
@@ -222,6 +229,7 @@ - (FIRStorageUploadTask *)putFile:(NSURL *)fileURL
222
229
metadata: metadata];
223
230
224
231
if (completion) {
232
+ __block BOOL completed = NO ;
225
233
dispatch_queue_t callbackQueue = _storage.fetcherServiceForApp .callbackQueue ;
226
234
if (!callbackQueue) {
227
235
callbackQueue = dispatch_get_main_queue ();
@@ -230,13 +238,19 @@ - (FIRStorageUploadTask *)putFile:(NSURL *)fileURL
230
238
[task observeStatus: FIRStorageTaskStatusSuccess
231
239
handler: ^(FIRStorageTaskSnapshot *_Nonnull snapshot) {
232
240
dispatch_async (callbackQueue, ^{
233
- completion (snapshot.metadata , nil );
241
+ if (!completed) {
242
+ completed = YES ;
243
+ completion (snapshot.metadata , nil );
244
+ }
234
245
});
235
246
}];
236
247
[task observeStatus: FIRStorageTaskStatusFailure
237
248
handler: ^(FIRStorageTaskSnapshot *_Nonnull snapshot) {
238
249
dispatch_async (callbackQueue, ^{
239
- completion (nil , snapshot.error );
250
+ if (!completed) {
251
+ completed = YES ;
252
+ completion (nil , snapshot.error );
253
+ }
240
254
});
241
255
}];
242
256
}
@@ -248,6 +262,7 @@ - (FIRStorageUploadTask *)putFile:(NSURL *)fileURL
248
262
249
263
- (FIRStorageDownloadTask *)dataWithMaxSize : (int64_t )size
250
264
completion : (FIRStorageVoidDataError)completion {
265
+ __block BOOL completed = NO ;
251
266
FIRStorageDownloadTask *task =
252
267
[[FIRStorageDownloadTask alloc ] initWithReference: self
253
268
fetcherService: _storage.fetcherServiceForApp
@@ -263,13 +278,20 @@ - (FIRStorageDownloadTask *)dataWithMaxSize:(int64_t)size
263
278
handler: ^(FIRStorageTaskSnapshot *_Nonnull snapshot) {
264
279
FIRStorageDownloadTask *task = snapshot.task ;
265
280
dispatch_async (callbackQueue, ^{
266
- completion (task.downloadData , nil );
281
+ if (!completed) {
282
+ completed = YES ;
283
+ completion (task.downloadData , nil );
284
+ }
267
285
});
268
286
}];
287
+
269
288
[task observeStatus: FIRStorageTaskStatusFailure
270
289
handler: ^(FIRStorageTaskSnapshot *_Nonnull snapshot) {
271
290
dispatch_async (callbackQueue, ^{
272
- completion (nil , snapshot.error );
291
+ if (!completed) {
292
+ completed = YES ;
293
+ completion (nil , snapshot.error );
294
+ }
273
295
});
274
296
}];
275
297
[task
@@ -302,6 +324,7 @@ - (FIRStorageDownloadTask *)writeToFile:(NSURL *)fileURL
302
324
dispatchQueue: _storage.dispatchQueue
303
325
file: fileURL];
304
326
if (completion) {
327
+ __block BOOL completed = NO ;
305
328
dispatch_queue_t callbackQueue = _storage.fetcherServiceForApp .callbackQueue ;
306
329
if (!callbackQueue) {
307
330
callbackQueue = dispatch_get_main_queue ();
@@ -310,13 +333,19 @@ - (FIRStorageDownloadTask *)writeToFile:(NSURL *)fileURL
310
333
[task observeStatus: FIRStorageTaskStatusSuccess
311
334
handler: ^(FIRStorageTaskSnapshot *_Nonnull snapshot) {
312
335
dispatch_async (callbackQueue, ^{
313
- completion (fileURL, nil );
336
+ if (!completed) {
337
+ completed = YES ;
338
+ completion (fileURL, nil );
339
+ }
314
340
});
315
341
}];
316
342
[task observeStatus: FIRStorageTaskStatusFailure
317
343
handler: ^(FIRStorageTaskSnapshot *_Nonnull snapshot) {
318
344
dispatch_async (callbackQueue, ^{
319
- completion (nil , snapshot.error );
345
+ if (!completed) {
346
+ completed = YES ;
347
+ completion (nil , snapshot.error );
348
+ }
320
349
});
321
350
}];
322
351
}
0 commit comments