From 13573eea7f603042c34f0b4a1327f795b31cb5aa Mon Sep 17 00:00:00 2001 From: "Suresh, Kamlesh" Date: Fri, 15 Jan 2021 21:59:41 -0500 Subject: [PATCH] map --- .../ActionHandler+ClientParameters.swift | 31 ++++++++++++------- .../ActionHandling/MVMCoreActionHandler.m | 28 +++-------------- .../ClientParameterProtocol.swift | 2 +- .../ClientParameterRegistry.swift | 8 ++--- 4 files changed, 28 insertions(+), 41 deletions(-) diff --git a/MVMCore/MVMCore/ActionHandling/ActionHandler+ClientParameters.swift b/MVMCore/MVMCore/ActionHandling/ActionHandler+ClientParameters.swift index 360546d..2c607b9 100644 --- a/MVMCore/MVMCore/ActionHandling/ActionHandler+ClientParameters.swift +++ b/MVMCore/MVMCore/ActionHandling/ActionHandler+ClientParameters.swift @@ -10,7 +10,7 @@ import Foundation public extension MVMCoreActionHandler { - @objc func setClientParameter(with actionMap: [String: Any]?, completionHandler: @escaping ([String : Any]?) -> ()) throws { + @objc func setClientParameter(with actionMap: [String: Any]?, completionHandler: @escaping ([String : Any]?) -> ()) { guard let clientParameters = actionMap?.optionalDictionaryForKey("clientParameters") else { completionHandler(actionMap) @@ -29,20 +29,27 @@ public extension MVMCoreActionHandler { } } - try ClientParameterRegistry.injectParameters(with: clientParameters) { (clientParams) in - guard let clientParams = clientParams else { + do { + try ClientParameterRegistry.injectParameters(with: clientParameters) { (clientParams) in + guard let clientParams = clientParams else { + stopLoadingOverlay() + completionHandler(actionMap) + return + } + + var extraParams: [String : Any] = actionMap?.optionalDictionaryForKey(KeyExtraParameters) ?? [:] + extraParams.merge(clientParams) { (_, new) in new } + var actionMapM = actionMap + actionMapM?[KeyExtraParameters] = extraParams + stopLoadingOverlay() - completionHandler(actionMap) - return + completionHandler(actionMapM) } - - var extraParams: [String : Any] = actionMap?.optionalDictionaryForKey(KeyExtraParameters) ?? [:] - extraParams.merge(clientParams) { (_, new) in new } - var actionMapM = actionMap - actionMapM?[KeyExtraParameters] = extraParams - + } catch { stopLoadingOverlay() - completionHandler(actionMapM) + completionHandler(actionMap) + MVMCoreLoggingHandler.logDebugMessage(withDelegate: "Error clientParamters: \(error)") } + } } diff --git a/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m b/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m index 837cadf..9362dd6 100644 --- a/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m +++ b/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m @@ -128,7 +128,7 @@ NSString * const KeyActionTypeOpen = @"openPage"; }]; }; - [self preprocessRequest:actionInformation actionBlock:performAction]; + [self setClientParameterWith:actionInformation completionHandler:performAction]; } - (void)shareAction:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject { @@ -293,7 +293,7 @@ NSString * const KeyActionTypeOpen = @"openPage"; [weakSelf prepareLinkAwayWithURL:otherURL appURL:appURL actionInformation:actionMap additionalData:additionalData delegateObject:delegateObject]; }; - [self preprocessRequest:actionInformation actionBlock:performAction]; + [self setClientParameterWith:actionInformation completionHandler:performAction]; } - (void)prepareLinkAwayWithURL:(nullable NSURL *)url appURL:(nullable NSURL *)appURL actionInformation:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject { @@ -443,27 +443,7 @@ NSString * const KeyActionTypeOpen = @"openPage"; }]; }; - [self preprocessRequest:actionInformation actionBlock:performAction]; -} - -- (void)preprocessRequest:(nullable NSDictionary *)actionInformation actionBlock:(nullable void (^)(NSDictionary*))actionBlock { - // Check for client params and fetch the parameters - if ([actionInformation dict:@"clientParameters"]) { - - NSError *error = nil; - - [self setClientParameterWith:actionInformation error:&error completionHandler:^(NSDictionary * _Nullable actionDict) { - actionBlock(actionDict); - }]; - - if (error) { - //MVMCoreLoggingHandler.logDebugMessage(withDelegate: "JS function reult: \(String(describing: result))") - MVMCoreLog(@"Error clientParamters %@", error); - actionBlock(actionInformation); - } - } else { - actionBlock(actionInformation); - } + [self setClientParameterWith:actionInformation completionHandler:performAction]; } - (void)restartAction:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegate:(nullable NSObject *)delegate { @@ -582,7 +562,7 @@ NSString * const KeyActionTypeOpen = @"openPage"; [weakSelf prepareLinkAwayWithURL:otherURL appURL:appURL actionInformation:actionMap additionalData:additionalData delegate:delegate]; }; - [self preprocessRequest:actionInformation actionBlock:performAction]; + [self setClientParameterWith:actionInformation completionHandler:performAction]; } - (void)prepareLinkAwayWithURL:(nullable NSURL *)url appURL:(nullable NSURL *)appURL actionInformation:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegate:(nullable NSObject *)delegate { diff --git a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterProtocol.swift b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterProtocol.swift index e2a8129..2c689ec 100644 --- a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterProtocol.swift +++ b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterProtocol.swift @@ -11,5 +11,5 @@ import Foundation public protocol ClientParameterProtocol { init() static var name: String { get } - func fetchClientParameters(for paramModel: ClientParameterModelProtocol, timingOutIn timeout: Double, completionHandler:@escaping ([String: Any]?) -> ()) + func fetchClientParameters(for paramModel: ClientParameterModelProtocol, timingOutIn timeout: Double, completionHandler:@escaping (AnyHashable?) -> ()) } diff --git a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterRegistry.swift b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterRegistry.swift index 3119f5a..a5e527a 100644 --- a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterRegistry.swift +++ b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterRegistry.swift @@ -73,11 +73,11 @@ import Foundation parametersList[parameterModel.type] = ["error": defaultErrorString] group.enter() // Dispatch asynchronous injection. - clientParameterRegistry.injectParameter(parameterModel, before: timeout) { (clientParam) in + clientParameterRegistry.injectParameter(parameterModel, before: timeout) { (recevedParameter) in // Queue the results for merge. parametersWorkQueue.async { - if let clientParam = clientParam { - parametersList.merge(clientParam) { (_, new) in new } + if let recevedParameter = recevedParameter { + parametersList[parameterModel.type] = recevedParameter } group.leave() // Leaving is only done after setup (barriered). } @@ -89,7 +89,7 @@ import Foundation } } - func injectParameter( _ parameterModel: ClientParameterModelProtocol, before timeout: Double, completionHandler:@escaping ([String: Any]?) -> ()) { + func injectParameter( _ parameterModel: ClientParameterModelProtocol, before timeout: Double, completionHandler:@escaping (AnyHashable?) -> ()) { guard let parammeterHandler = createParametersHandler(parameterModel.type) else { return completionHandler(nil) }