@@ -412,10 +412,10 @@ - (void)referencePutDataApp:(PigeonStorageFirebaseApp *)app
412
412
self->_tasks [handle] = task;
413
413
}
414
414
415
- completion ([self setupTaskListeners: task], nil );
415
+ completion ([self setupTaskListeners: task handle: handle ], nil );
416
416
}
417
417
418
- - (NSString *)setupTaskListeners : (FIRStorageObservableTask *)task {
418
+ - (NSString *)setupTaskListeners : (FIRStorageObservableTask *)task handle : ( NSNumber *) handle {
419
419
// Generate a random UUID to register with
420
420
NSString *uuid = [[NSUUID UUID ] UUIDString ];
421
421
@@ -426,7 +426,10 @@ - (NSString *)setupTaskListeners:(FIRStorageObservableTask *)task {
426
426
FlutterEventChannel *channel = [FlutterEventChannel eventChannelWithName: channelName
427
427
binaryMessenger: _binaryMessenger];
428
428
FLTTaskStateChannelStreamHandler *handler =
429
- [[FLTTaskStateChannelStreamHandler alloc ] initWithTask: task];
429
+ [[FLTTaskStateChannelStreamHandler alloc ] initWithTask: task
430
+ storagePlugin: self
431
+ channelName: channelName
432
+ handle: handle];
430
433
[channel setStreamHandler: handler];
431
434
432
435
[_eventChannels setObject: channel forKey: channelName];
@@ -435,6 +438,23 @@ - (NSString *)setupTaskListeners:(FIRStorageObservableTask *)task {
435
438
return uuid;
436
439
}
437
440
441
+ - (void )cleanUpTask : (NSString *)channelName handle : (NSNumber *)handle {
442
+ NSObject <FlutterStreamHandler> *handler = [_streamHandlers objectForKey: channelName];
443
+ if (handler) {
444
+ [_streamHandlers removeObjectForKey: channelName];
445
+ }
446
+
447
+ FlutterEventChannel *channel = [_eventChannels objectForKey: channelName];
448
+ if (channel) {
449
+ [channel setStreamHandler: nil ];
450
+ [_eventChannels removeObjectForKey: channelName];
451
+ }
452
+
453
+ @synchronized (self->_tasks ) {
454
+ [self ->_tasks removeObjectForKey: handle];
455
+ }
456
+ }
457
+
438
458
- (void )referencePutStringApp : (PigeonStorageFirebaseApp *)app
439
459
reference : (PigeonStorageReference *)reference
440
460
data : (NSString *)data
@@ -456,7 +476,7 @@ - (void)referencePutStringApp:(PigeonStorageFirebaseApp *)app
456
476
self->_tasks [handle] = task;
457
477
}
458
478
459
- completion ([self setupTaskListeners: task], nil );
479
+ completion ([self setupTaskListeners: task handle: handle ], nil );
460
480
}
461
481
462
482
- (void )referencePutFileApp : (PigeonStorageFirebaseApp *)app
@@ -481,7 +501,7 @@ - (void)referencePutFileApp:(PigeonStorageFirebaseApp *)app
481
501
self->_tasks [handle] = task;
482
502
}
483
503
484
- completion ([self setupTaskListeners: task], nil );
504
+ completion ([self setupTaskListeners: task handle: handle ], nil );
485
505
}
486
506
487
507
- (void )referenceDownloadFileApp : (PigeonStorageFirebaseApp *)app
@@ -501,7 +521,7 @@ - (void)referenceDownloadFileApp:(PigeonStorageFirebaseApp *)app
501
521
self->_tasks [handle] = task;
502
522
}
503
523
504
- completion ([self setupTaskListeners: task], nil );
524
+ completion ([self setupTaskListeners: task handle: handle ], nil );
505
525
}
506
526
507
527
- (void )referenceUpdateMetadataApp : (PigeonStorageFirebaseApp *)app
0 commit comments