code review
This commit is contained in:
parent
34c4bd18ee
commit
f2855f317b
@ -10,7 +10,7 @@ import Foundation
|
|||||||
|
|
||||||
public extension MVMCoreActionHandler {
|
public extension MVMCoreActionHandler {
|
||||||
|
|
||||||
/// Iterates threw the clientParameters list. Gets values from the individual handlers and attaches the parameters to extraParameters.
|
/// Iterates through the clientParameters list. Gets values from the individual handlers and attaches the parameters to extraParameters.
|
||||||
@objc func setClientParameter(with actionMap: [String: Any]?, completionHandler: @escaping ([String : Any]?) -> ()) {
|
@objc func setClientParameter(with actionMap: [String: Any]?, completionHandler: @escaping ([String : Any]?) -> ()) {
|
||||||
|
|
||||||
guard let actionMapWithClientParameters = actionMap, let clientParameters = actionMapWithClientParameters.optionalDictionaryForKey("clientParameters") else {
|
guard let actionMapWithClientParameters = actionMap, let clientParameters = actionMapWithClientParameters.optionalDictionaryForKey("clientParameters") else {
|
||||||
@ -31,7 +31,7 @@ public extension MVMCoreActionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
try ClientParameterRegistry.injectParameters(with: clientParameters) { (clientParams) in
|
try ClientParameterRegistry.getParameters(with: clientParameters) { (clientParams) in
|
||||||
guard let clientParams = clientParams else {
|
guard let clientParams = clientParams else {
|
||||||
stopLoadingOverlay()
|
stopLoadingOverlay()
|
||||||
completionHandler(actionMapWithClientParameters)
|
completionHandler(actionMapWithClientParameters)
|
||||||
|
|||||||
@ -25,7 +25,7 @@ public class ClientParameterModel: Codable {
|
|||||||
|
|
||||||
public func encode(to encoder: Encoder) throws {
|
public func encode(to encoder: Encoder) throws {
|
||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
try container.encode(timeout, forKey: .timeout)
|
try container.encodeIfPresent(timeout, forKey: .timeout)
|
||||||
try container.encodeModels(list, forKey: .list)
|
try container.encodeModels(list, forKey: .list)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,7 +33,21 @@ import Foundation
|
|||||||
return try JSONDecoder().decode(ClientParameterModel.self, from: data)
|
return try JSONDecoder().decode(ClientParameterModel.self, from: data)
|
||||||
}
|
}
|
||||||
|
|
||||||
static func injectParameters(with clientParameters: [String: Any], completionHandler:@escaping ([String: Any]?) -> ()) throws {
|
/// Sample clientParameters
|
||||||
|
///{
|
||||||
|
/// "timeout": 30,
|
||||||
|
/// "list": [
|
||||||
|
/// {
|
||||||
|
/// "type": "currentLocation",
|
||||||
|
/// "inputParameters": {
|
||||||
|
/// "accuracy": 10,
|
||||||
|
/// "timeThreshold": 600
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// ]
|
||||||
|
///}
|
||||||
|
/// completionHandler can return flat dictinary or a map. It depends on the paramters handler
|
||||||
|
static func getParameters(with clientParameters: [String: Any], completionHandler:@escaping ([String: Any]?) -> ()) throws {
|
||||||
|
|
||||||
guard let clientParameterRegistry = MVMCoreObject.sharedInstance()?.clientParameterRegistry,
|
guard let clientParameterRegistry = MVMCoreObject.sharedInstance()?.clientParameterRegistry,
|
||||||
let clientParameterModel = try ClientParameterRegistry.getClientParameterModel(clientParameters) else {
|
let clientParameterModel = try ClientParameterRegistry.getClientParameterModel(clientParameters) else {
|
||||||
@ -73,7 +87,7 @@ import Foundation
|
|||||||
parametersList[parameterModel.type] = ["error": defaultErrorString]
|
parametersList[parameterModel.type] = ["error": defaultErrorString]
|
||||||
group.enter()
|
group.enter()
|
||||||
// Dispatch asynchronous injection.
|
// Dispatch asynchronous injection.
|
||||||
clientParameterRegistry.injectParameter(parameterModel, before: timeout) { (receivedParameter) in
|
clientParameterRegistry.getParameterFromHandler(parameterModel, before: timeout) { (receivedParameter) in
|
||||||
// Queue the results for merge.
|
// Queue the results for merge.
|
||||||
parametersWorkQueue.async {
|
parametersWorkQueue.async {
|
||||||
if let receivedParameter = receivedParameter {
|
if let receivedParameter = receivedParameter {
|
||||||
@ -89,7 +103,7 @@ import Foundation
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func injectParameter( _ parameterModel: ClientParameterModelProtocol, before timeout: Double, completionHandler:@escaping (AnyHashable?) -> ()) {
|
func getParameterFromHandler( _ parameterModel: ClientParameterModelProtocol, before timeout: Double, completionHandler:@escaping (AnyHashable?) -> ()) {
|
||||||
guard let parameterHandler = createParametersHandler(parameterModel.type) else {
|
guard let parameterHandler = createParametersHandler(parameterModel.type) else {
|
||||||
return completionHandler(nil)
|
return completionHandler(nil)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user