From 06b5c1a1ac7f8fbe2d17f2ef1786e0864d1f4d7a Mon Sep 17 00:00:00 2001 From: Di Wu Date: Fri, 31 May 2024 14:28:43 -0700 Subject: [PATCH] fix(datastore): crash when insert cancellables --- .../amplify_datastore/ios/Classes/FlutterApiPlugin.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/amplify_datastore/ios/Classes/FlutterApiPlugin.swift b/packages/amplify_datastore/ios/Classes/FlutterApiPlugin.swift index 0ceb6ffa02..c7cd9988cc 100644 --- a/packages/amplify_datastore/ios/Classes/FlutterApiPlugin.swift +++ b/packages/amplify_datastore/ios/Classes/FlutterApiPlugin.swift @@ -2,15 +2,13 @@ import Foundation import Flutter import Combine - - public class FlutterApiPlugin: APICategoryPlugin { public var key: PluginKey = "awsAPIPlugin" private let apiAuthFactory: APIAuthProviderFactory private let nativeApiPlugin: NativeApiPlugin private let nativeSubscriptionEvents: PassthroughSubject - private var cancellables = Set() + private var cancellables = AtomicDictionary() init( apiAuthProviderFactory: APIAuthProviderFactory, @@ -82,7 +80,9 @@ public class FlutterApiPlugin: APICategoryPlugin } } .toAmplifyAsyncThrowingSequence() - cancellables.insert(cancellable) // the subscription is bind with class instance lifecycle, it should be released when stream is finished or unsubscribed + + cancellables.set(value: (), forKey: cancellable) // the subscription is bind with class instance lifecycle, it should be released when stream is finished or unsubscribed + sequence.send(.connection(.connecting)) DispatchQueue.main.async { self.nativeApiPlugin.subscribe(request: request.toNativeGraphQLRequest()) { response in