diff --git a/MVMCore/MVMCore/ActionHandling/ActionHandler+ClientParameters.swift b/MVMCore/MVMCore/ActionHandling/ActionHandler+ClientParameters.swift index 9d6deab..a2c3841 100644 --- a/MVMCore/MVMCore/ActionHandling/ActionHandler+ClientParameters.swift +++ b/MVMCore/MVMCore/ActionHandling/ActionHandler+ClientParameters.swift @@ -31,7 +31,7 @@ public extension MVMCoreActionHandler { } do { - try ClientParameterRegistry().getParameters(with: clientParameters) { (clientParams) in + try MVMCoreObject.sharedInstance()?.clientParameterRegistry?.getParameters(with: clientParameters) { (clientParams) in guard let clientParams = clientParams else { stopLoadingOverlay() completionHandler(actionMapWithClientParameters) diff --git a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterRegistry.swift b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterRegistry.swift index 23f5ca5..ba698f4 100644 --- a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterRegistry.swift +++ b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterRegistry.swift @@ -49,8 +49,7 @@ import Foundation /// completionHandler can return flat dictinary or a map. It depends on the paramters handler func getParameters(with clientParameters: [String: Any], completionHandler:@escaping ([String: Any]?) -> ()) throws { - guard let clientParameterRegistry = MVMCoreObject.sharedInstance()?.clientParameterRegistry, - let clientParameterModel = try ClientParameterRegistry.getClientParameterModel(clientParameters) else { + guard let clientParameterModel = try ClientParameterRegistry.getClientParameterModel(clientParameters) else { completionHandler(nil) return } @@ -63,7 +62,8 @@ import Foundation let defaultErrorString = "failed_to_collect." // Dispatch setup on queue to ensure setup is complete before completion callbacks. - parametersWorkQueue.async(group: group, qos: .userInitiated) { + parametersWorkQueue.async(group: group, qos: .userInitiated) { [weak self] in + guard let self = self else { return } // Setup completion handlers. Barriered to ensure one happens after the other. var complete = false let timeoutWorkItem = DispatchWorkItem(qos: .userInitiated) { @@ -87,7 +87,7 @@ import Foundation parametersList[parameterModel.type] = ["error": defaultErrorString] group.enter() // Dispatch asynchronous injection. - clientParameterRegistry.getParameterFromHandler(parameterModel, before: timeout) { (receivedParameter) in + self.getParameterFromHandler(parameterModel, before: timeout) { (receivedParameter) in // Queue the results for merge. parametersWorkQueue.async { if let receivedParameter = receivedParameter {