code review

This commit is contained in:
Suresh, Kamlesh 2021-01-20 10:24:00 -05:00
parent 34c4bd18ee
commit f2855f317b
3 changed files with 20 additions and 6 deletions

View File

@ -10,7 +10,7 @@ import Foundation
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]?) -> ()) {
guard let actionMapWithClientParameters = actionMap, let clientParameters = actionMapWithClientParameters.optionalDictionaryForKey("clientParameters") else {
@ -31,7 +31,7 @@ public extension MVMCoreActionHandler {
}
do {
try ClientParameterRegistry.injectParameters(with: clientParameters) { (clientParams) in
try ClientParameterRegistry.getParameters(with: clientParameters) { (clientParams) in
guard let clientParams = clientParams else {
stopLoadingOverlay()
completionHandler(actionMapWithClientParameters)

View File

@ -25,7 +25,7 @@ public class ClientParameterModel: Codable {
public func encode(to encoder: Encoder) throws {
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)
}
}

View File

@ -33,7 +33,21 @@ import Foundation
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,
let clientParameterModel = try ClientParameterRegistry.getClientParameterModel(clientParameters) else {
@ -73,7 +87,7 @@ import Foundation
parametersList[parameterModel.type] = ["error": defaultErrorString]
group.enter()
// Dispatch asynchronous injection.
clientParameterRegistry.injectParameter(parameterModel, before: timeout) { (receivedParameter) in
clientParameterRegistry.getParameterFromHandler(parameterModel, before: timeout) { (receivedParameter) in
// Queue the results for merge.
parametersWorkQueue.async {
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 {
return completionHandler(nil)
}