redone in objecitve c

This commit is contained in:
Suresh, Kamlesh 2021-01-21 13:00:29 -05:00
parent 5d92df5347
commit 45b84ae2e0
5 changed files with 56 additions and 101 deletions

View File

@ -25,7 +25,6 @@
016FF6F2259A4FCC00F5E4AA /* ClientParameterModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016FF6F1259A4FCC00F5E4AA /* ClientParameterModel.swift */; }; 016FF6F2259A4FCC00F5E4AA /* ClientParameterModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016FF6F1259A4FCC00F5E4AA /* ClientParameterModel.swift */; };
016FF6F6259B9AED00F5E4AA /* ClientParameterRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016FF6F5259B9AED00F5E4AA /* ClientParameterRegistry.swift */; }; 016FF6F6259B9AED00F5E4AA /* ClientParameterRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016FF6F5259B9AED00F5E4AA /* ClientParameterRegistry.swift */; };
016FF6FC259BA27E00F5E4AA /* ClientParameterProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016FF6FB259BA27E00F5E4AA /* ClientParameterProtocol.swift */; }; 016FF6FC259BA27E00F5E4AA /* ClientParameterProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016FF6FB259BA27E00F5E4AA /* ClientParameterProtocol.swift */; };
016FF706259D180000F5E4AA /* ActionHandler+ClientParameters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016FF705259D180000F5E4AA /* ActionHandler+ClientParameters.swift */; };
01934FE725A4FFC2003DCD67 /* ClientParameterActionProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01934FE625A4FFC2003DCD67 /* ClientParameterActionProtocol.swift */; }; 01934FE725A4FFC2003DCD67 /* ClientParameterActionProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01934FE625A4FFC2003DCD67 /* ClientParameterActionProtocol.swift */; };
01C851CF23CF7B260021F976 /* JSONMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01C851CE23CF7B260021F976 /* JSONMap.swift */; }; 01C851CF23CF7B260021F976 /* JSONMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01C851CE23CF7B260021F976 /* JSONMap.swift */; };
01C851D123CF97FE0021F976 /* ActionBackModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01C851D023CF97FE0021F976 /* ActionBackModel.swift */; }; 01C851D123CF97FE0021F976 /* ActionBackModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01C851D023CF97FE0021F976 /* ActionBackModel.swift */; };
@ -154,7 +153,6 @@
016FF6F1259A4FCC00F5E4AA /* ClientParameterModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterModel.swift; sourceTree = "<group>"; }; 016FF6F1259A4FCC00F5E4AA /* ClientParameterModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterModel.swift; sourceTree = "<group>"; };
016FF6F5259B9AED00F5E4AA /* ClientParameterRegistry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterRegistry.swift; sourceTree = "<group>"; }; 016FF6F5259B9AED00F5E4AA /* ClientParameterRegistry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterRegistry.swift; sourceTree = "<group>"; };
016FF6FB259BA27E00F5E4AA /* ClientParameterProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterProtocol.swift; sourceTree = "<group>"; }; 016FF6FB259BA27E00F5E4AA /* ClientParameterProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterProtocol.swift; sourceTree = "<group>"; };
016FF705259D180000F5E4AA /* ActionHandler+ClientParameters.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ActionHandler+ClientParameters.swift"; sourceTree = "<group>"; };
01934FE625A4FFC2003DCD67 /* ClientParameterActionProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterActionProtocol.swift; sourceTree = "<group>"; }; 01934FE625A4FFC2003DCD67 /* ClientParameterActionProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterActionProtocol.swift; sourceTree = "<group>"; };
01C851CE23CF7B260021F976 /* JSONMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONMap.swift; sourceTree = "<group>"; }; 01C851CE23CF7B260021F976 /* JSONMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONMap.swift; sourceTree = "<group>"; };
01C851D023CF97FE0021F976 /* ActionBackModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionBackModel.swift; sourceTree = "<group>"; }; 01C851D023CF97FE0021F976 /* ActionBackModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionBackModel.swift; sourceTree = "<group>"; };
@ -585,7 +583,6 @@
AFBB96B51FBA3CEC0008D868 /* MVMCoreActionDelegateProtocol.h */, AFBB96B51FBA3CEC0008D868 /* MVMCoreActionDelegateProtocol.h */,
AFBB96B61FBA3CEC0008D868 /* MVMCoreActionHandler.h */, AFBB96B61FBA3CEC0008D868 /* MVMCoreActionHandler.h */,
AFBB96B71FBA3CEC0008D868 /* MVMCoreActionHandler.m */, AFBB96B71FBA3CEC0008D868 /* MVMCoreActionHandler.m */,
016FF705259D180000F5E4AA /* ActionHandler+ClientParameters.swift */,
); );
path = ActionHandling; path = ActionHandling;
sourceTree = "<group>"; sourceTree = "<group>";
@ -810,7 +807,6 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
AFED77A71FCCA29400BAE689 /* MVMCoreViewControllerProgrammaticMappingObject.m in Sources */, AFED77A71FCCA29400BAE689 /* MVMCoreViewControllerProgrammaticMappingObject.m in Sources */,
016FF706259D180000F5E4AA /* ActionHandler+ClientParameters.swift in Sources */,
946EE1A7237B5B1C0036751F /* ModelRegistry.swift in Sources */, 946EE1A7237B5B1C0036751F /* ModelRegistry.swift in Sources */,
AFBB96641FBA3A570008D868 /* MVMCoreLoadHandler.m in Sources */, AFBB96641FBA3A570008D868 /* MVMCoreLoadHandler.m in Sources */,
AFFCFA671FCCC0D700FD0730 /* MVMCoreLoadingOverlayHandler.m in Sources */, AFFCFA671FCCC0D700FD0730 /* MVMCoreLoadingOverlayHandler.m in Sources */,

View File

@ -1,56 +0,0 @@
//
// ActionHandler+ClientParameters.swift
// MVMCore
//
// Created by Suresh, Kamlesh on 12/30/20.
// Copyright © 2020 myverizon. All rights reserved.
//
import Foundation
public extension MVMCoreActionHandler {
/// 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(KeyClientParameters) else {
completionHandler(actionMap)
return
}
let isBackgroudRequest = actionMapWithClientParameters.boolForKey("background")
if !isBackgroudRequest {
MVMCoreLoadingOverlayHandler.sharedLoadingOverlay()?.startLoading()
}
let stopLoadingOverlay = {() in
if !isBackgroudRequest {
MVMCoreLoadingOverlayHandler.sharedLoadingOverlay()?.stopLoading(true)
}
}
do {
try MVMCoreObject.sharedInstance()?.clientParameterRegistry?.getParameters(with: clientParameters) { (clientParams) in
guard let clientParams = clientParams else {
stopLoadingOverlay()
completionHandler(actionMapWithClientParameters)
return
}
var extraParams: [String : Any] = actionMapWithClientParameters.dictionaryForKey(KeyExtraParameters)
extraParams.merge(clientParams) { (_, new) in new }
var actionMapM = actionMapWithClientParameters
actionMapM[KeyExtraParameters] = extraParams
stopLoadingOverlay()
completionHandler(actionMapM)
}
} catch {
stopLoadingOverlay()
completionHandler(actionMapWithClientParameters)
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "Error clientParamters: \(error)")
}
}
}

View File

@ -26,6 +26,7 @@
#import "MVMCorePresentationDelegateProtocol.h" #import "MVMCorePresentationDelegateProtocol.h"
#import <SafariServices/SafariServices.h> #import <SafariServices/SafariServices.h>
#import <MVMCore/MVMCore-Swift.h> #import <MVMCore/MVMCore-Swift.h>
#import "MVMCoreLoadingOverlayHandler.h"
NSString * const KeyActionType = @"actionType"; NSString * const KeyActionType = @"actionType";
NSString * const KeyActionTypeLinkAway = @"openURL"; NSString * const KeyActionTypeLinkAway = @"openURL";
@ -128,16 +129,7 @@ NSString * const KeyActionTypeOpen = @"openPage";
}]; }];
}; };
/* [self setClientParameter:actionInformation completionHandler:performAction];
BAU dictionary comparsion breaks if client parameters sets the dictionary.
For now we will set client parameters only when its sent in the action map.
We can move the code to Objective-C if required.
*/
if ([actionInformation dict:KeyClientParameters]) {
[self setClientParameterWith:actionInformation completionHandler:performAction];
} else {
performAction(actionInformation);
}
} }
- (void)shareAction:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject { - (void)shareAction:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject {
@ -302,16 +294,7 @@ NSString * const KeyActionTypeOpen = @"openPage";
[weakSelf prepareLinkAwayWithURL:otherURL appURL:appURL actionInformation:actionMap additionalData:additionalData delegateObject:delegateObject]; [weakSelf prepareLinkAwayWithURL:otherURL appURL:appURL actionInformation:actionMap additionalData:additionalData delegateObject:delegateObject];
}; };
/* [self setClientParameter:actionInformation completionHandler:performAction];
BAU dictionary comparsion breaks if client parameters sets the dictionary.
For now we will set client parameters only when its sent in the action map.
We can move the code to Objective-C if required.
*/
if ([actionInformation dict:KeyClientParameters]) {
[self setClientParameterWith:actionInformation completionHandler:performAction];
} else {
performAction(actionInformation);
}
} }
- (void)prepareLinkAwayWithURL:(nullable NSURL *)url appURL:(nullable NSURL *)appURL actionInformation:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject { - (void)prepareLinkAwayWithURL:(nullable NSURL *)url appURL:(nullable NSURL *)appURL actionInformation:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject {
@ -461,16 +444,7 @@ NSString * const KeyActionTypeOpen = @"openPage";
}]; }];
}; };
/* [self setClientParameter:actionInformation completionHandler:performAction];
BAU dictionary comparsion breaks if client parameters sets the dictionary.
For now we will set client parameters only when its sent in the action map.
We can move the code to Objective-C if required.
*/
if ([actionInformation dict:KeyClientParameters]) {
[self setClientParameterWith:actionInformation completionHandler:performAction];
} else {
performAction(actionInformation);
}
} }
- (void)restartAction:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegate:(nullable NSObject <MVMCoreLoadDelegateProtocol, MVMCorePresentationDelegateProtocol,MVMCoreActionDelegateProtocol>*)delegate { - (void)restartAction:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegate:(nullable NSObject <MVMCoreLoadDelegateProtocol, MVMCorePresentationDelegateProtocol,MVMCoreActionDelegateProtocol>*)delegate {
@ -589,15 +563,56 @@ NSString * const KeyActionTypeOpen = @"openPage";
[weakSelf prepareLinkAwayWithURL:otherURL appURL:appURL actionInformation:actionMap additionalData:additionalData delegate:delegate]; [weakSelf prepareLinkAwayWithURL:otherURL appURL:appURL actionInformation:actionMap additionalData:additionalData delegate:delegate];
}; };
/* [self setClientParameter:actionInformation completionHandler:performAction];
BAU dictionary comparsion breaks if client parameters sets the dictionary. }
For now we will set client parameters only when its sent in the action map.
We can move the code to Objective-C if required. /// Iterates through the clientParameters list. Gets values from the individual handlers and attaches the parameters to extraParameters.
*/ - (void)setClientParameter:(nullable NSDictionary *)actionInformation completionHandler:(nonnull void (^)(NSDictionary * _Nullable jsonDictionary))completionHandler {
if ([actionInformation dict:KeyClientParameters]) {
[self setClientParameterWith:actionInformation completionHandler:performAction]; NSDictionary *clientParametersMap = [actionInformation dict:KeyClientParameters];
} else { if (!clientParametersMap) {
performAction(actionInformation); completionHandler(actionInformation);
return;
}
BOOL isBackgroudRequest = [actionInformation boolForKey:@"background"];
if (!isBackgroudRequest) {
[[MVMCoreLoadingOverlayHandler sharedLoadingOverlay] startLoading];
}
void (^stopLoadingOverlay)(void) = ^(void) {
if (!isBackgroudRequest) {
[[MVMCoreLoadingOverlayHandler sharedLoadingOverlay] stopLoading:true];
}
};
NSError *error = nil;
[MVMCoreLoggingHandler logDebugMessageWithDelegate:@"Fetching client parameters"];
[[[MVMCoreObject sharedInstance] clientParameterRegistry] getParametersWith:clientParametersMap
error:&error
completionHandler:^(NSDictionary<NSString *,id> * _Nullable clientParameters) {
[MVMCoreLoggingHandler logDebugMessageWithDelegate:@"Finshed fetching client parameters"];
if (clientParameters) {
NSMutableDictionary *actionWithClientParameters = [actionInformation mutableCopy];
NSMutableDictionary *extraParameters = [clientParameters mutableCopy];
[extraParameters addEntriesFromDictionary:[actionWithClientParameters dictionaryForKey:KeyExtraParameters]];
actionWithClientParameters[KeyExtraParameters] = extraParameters;
stopLoadingOverlay();
completionHandler(actionWithClientParameters);
} else {
[MVMCoreLoggingHandler logDebugMessageWithDelegate:@"No client paramnters"];
stopLoadingOverlay();
completionHandler(actionInformation);
}
}];
if (error) {
stopLoadingOverlay();
completionHandler(actionInformation);
[MVMCoreLoggingHandler logDebugMessageWithDelegate:@"Error clientparameters"];
[MVMCoreLoggingHandler logDebugMessageWithDelegate:error.debugDescription];
} }
} }

View File

@ -47,7 +47,7 @@ import Foundation
/// ] /// ]
///} ///}
/// completionHandler can return flat dictinary or a map. It depends on the paramters handler /// 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 { open func getParameters(with clientParameters: [String: Any], completionHandler:@escaping ([String: Any]?) -> ()) throws {
guard let clientParameterModel = try ClientParameterRegistry.getClientParameterModel(clientParameters) else { guard let clientParameterModel = try ClientParameterRegistry.getClientParameterModel(clientParameters) else {
completionHandler(nil) completionHandler(nil)

View File

@ -9,7 +9,7 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import "MVMCoreRequestParameters.h" #import "MVMCoreRequestParameters.h"
#define ENABLE_HARD_CODED_RESPONSE 0 && DEBUG #define ENABLE_HARD_CODED_RESPONSE 1 && DEBUG
#if ENABLE_HARD_CODED_RESPONSE #if ENABLE_HARD_CODED_RESPONSE