More Migrations.
Delegate subclass
This commit is contained in:
parent
4f2fa7962a
commit
768aa578d2
@ -283,7 +283,7 @@
|
||||
AF1C336B28859C73006B1001 /* ActionTopAlertHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF1C336A28859C73006B1001 /* ActionTopAlertHandler.swift */; };
|
||||
AF1C336D28859EE1006B1001 /* ActionOpenPanelHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF1C336C28859EE1006B1001 /* ActionOpenPanelHandler.swift */; };
|
||||
AF1C336F2885A16A006B1001 /* ActionCollapseNotificationHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF1C336E2885A16A006B1001 /* ActionCollapseNotificationHandler.swift */; };
|
||||
AF1C33712885AE76006B1001 /* MVMCoreUIActionHandler+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF1C33702885AE76006B1001 /* MVMCoreUIActionHandler+Extension.swift */; };
|
||||
AF1C33712885AE76006B1001 /* MVMCoreUIActionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF1C33702885AE76006B1001 /* MVMCoreUIActionHandler.swift */; };
|
||||
AF1C33732885D481006B1001 /* MVMCoreUIActionOpenPageHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF1C33722885D481006B1001 /* MVMCoreUIActionOpenPageHandler.swift */; };
|
||||
AFE4A1D127DFB5EE00C458D0 /* VDSColorTokens.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFE4A1D027DFB5EE00C458D0 /* VDSColorTokens.xcframework */; };
|
||||
AFE4A1D627DFBB6F00C458D0 /* UINavigationController+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFE4A1D527DFBB6F00C458D0 /* UINavigationController+Extension.swift */; };
|
||||
@ -575,8 +575,6 @@
|
||||
D2ED2812254B0EB800A1C293 /* MVMCoreTopAlertObject.m in Sources */ = {isa = PBXBuildFile; fileRef = D2ED280B254B0EB800A1C293 /* MVMCoreTopAlertObject.m */; };
|
||||
D2ED2815254B0EE400A1C293 /* MVMCoreGlobalTopAlertDelegateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D2ED2814254B0EE400A1C293 /* MVMCoreGlobalTopAlertDelegateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D2ED2818254B115400A1C293 /* MVMCoreUIActionDelegateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D2ED2817254B112900A1C293 /* MVMCoreUIActionDelegateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D2ED281D254B119D00A1C293 /* MVMCoreUIActionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = D2ED281B254B119D00A1C293 /* MVMCoreUIActionHandler.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D2ED281E254B119D00A1C293 /* MVMCoreUIActionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = D2ED281C254B119D00A1C293 /* MVMCoreUIActionHandler.m */; };
|
||||
D2FA83D22513EA6900564112 /* NotificationXButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2FA83D12513EA6900564112 /* NotificationXButton.swift */; };
|
||||
D2FA83D42514F80C00564112 /* CollapsableNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2FA83D32514F80C00564112 /* CollapsableNotification.swift */; };
|
||||
D2FA83D62515021F00564112 /* CollapsableNotificationTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2FA83D52515021F00564112 /* CollapsableNotificationTopView.swift */; };
|
||||
@ -883,7 +881,7 @@
|
||||
AF1C336A28859C73006B1001 /* ActionTopAlertHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionTopAlertHandler.swift; sourceTree = "<group>"; };
|
||||
AF1C336C28859EE1006B1001 /* ActionOpenPanelHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionOpenPanelHandler.swift; sourceTree = "<group>"; };
|
||||
AF1C336E2885A16A006B1001 /* ActionCollapseNotificationHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionCollapseNotificationHandler.swift; sourceTree = "<group>"; };
|
||||
AF1C33702885AE76006B1001 /* MVMCoreUIActionHandler+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MVMCoreUIActionHandler+Extension.swift"; sourceTree = "<group>"; };
|
||||
AF1C33702885AE76006B1001 /* MVMCoreUIActionHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MVMCoreUIActionHandler.swift; sourceTree = "<group>"; };
|
||||
AF1C33722885D481006B1001 /* MVMCoreUIActionOpenPageHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MVMCoreUIActionOpenPageHandler.swift; sourceTree = "<group>"; };
|
||||
AFE4A1D027DFB5EE00C458D0 /* VDSColorTokens.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = VDSColorTokens.xcframework; path = ../SharedFrameworks/VDSColorTokens.xcframework; sourceTree = "<group>"; };
|
||||
AFE4A1D527DFBB6F00C458D0 /* UINavigationController+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UINavigationController+Extension.swift"; sourceTree = "<group>"; };
|
||||
@ -1176,8 +1174,6 @@
|
||||
D2ED280B254B0EB800A1C293 /* MVMCoreTopAlertObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MVMCoreTopAlertObject.m; sourceTree = "<group>"; };
|
||||
D2ED2814254B0EE400A1C293 /* MVMCoreGlobalTopAlertDelegateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVMCoreGlobalTopAlertDelegateProtocol.h; sourceTree = "<group>"; };
|
||||
D2ED2817254B112900A1C293 /* MVMCoreUIActionDelegateProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIActionDelegateProtocol.h; sourceTree = "<group>"; };
|
||||
D2ED281B254B119D00A1C293 /* MVMCoreUIActionHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIActionHandler.h; sourceTree = "<group>"; };
|
||||
D2ED281C254B119D00A1C293 /* MVMCoreUIActionHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MVMCoreUIActionHandler.m; sourceTree = "<group>"; };
|
||||
D2FA83D12513EA6900564112 /* NotificationXButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationXButton.swift; sourceTree = "<group>"; };
|
||||
D2FA83D32514F80C00564112 /* CollapsableNotification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollapsableNotification.swift; sourceTree = "<group>"; };
|
||||
D2FA83D52515021F00564112 /* CollapsableNotificationTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollapsableNotificationTopView.swift; sourceTree = "<group>"; };
|
||||
@ -2306,9 +2302,7 @@
|
||||
D2092352244F7D630044AD09 /* MVMCoreUIViewControllerMappingObject+Extension.swift */,
|
||||
D296E14622A597490051EBE7 /* MVMCoreUIViewConstrainingProtocol.h */,
|
||||
D2ED2817254B112900A1C293 /* MVMCoreUIActionDelegateProtocol.h */,
|
||||
D2ED281B254B119D00A1C293 /* MVMCoreUIActionHandler.h */,
|
||||
D2ED281C254B119D00A1C293 /* MVMCoreUIActionHandler.m */,
|
||||
AF1C33702885AE76006B1001 /* MVMCoreUIActionHandler+Extension.swift */,
|
||||
AF1C33702885AE76006B1001 /* MVMCoreUIActionHandler.swift */,
|
||||
D23A90672614B0B4007E14CE /* CoreUIModelMapping.swift */,
|
||||
);
|
||||
path = OtherHandlers;
|
||||
@ -2575,7 +2569,6 @@
|
||||
D29DF2C821E7BFC1003B2FB9 /* MFSizeObject.h in Headers */,
|
||||
D29DF2E121E9240B003B2FB9 /* MVMCoreUIPanelProtocol.h in Headers */,
|
||||
D29DF12921E6851E003B2FB9 /* MVMCoreUITopAlertMainView.h in Headers */,
|
||||
D2ED281D254B119D00A1C293 /* MVMCoreUIActionHandler.h in Headers */,
|
||||
D29DF12C21E6851E003B2FB9 /* MVMCoreUITopAlertShortView.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@ -2860,7 +2853,7 @@
|
||||
0A9D091D2433796500D2E6C0 /* BarsCarouselIndicatorModel.swift in Sources */,
|
||||
DBEFFA04225A829700230692 /* Label.swift in Sources */,
|
||||
D2D6CD4022E78C1A00D701B8 /* Scroller.swift in Sources */,
|
||||
AF1C33712885AE76006B1001 /* MVMCoreUIActionHandler+Extension.swift in Sources */,
|
||||
AF1C33712885AE76006B1001 /* MVMCoreUIActionHandler.swift in Sources */,
|
||||
0A7ECC5D243CE85300C828E8 /* DoughnutChartItemModel.swift in Sources */,
|
||||
0A7EF85F23D8ABC500B2AAD1 /* MdnEntryFieldModel.swift in Sources */,
|
||||
011D959B240451E3000E3791 /* RuleRequiredModel.swift in Sources */,
|
||||
@ -3015,7 +3008,6 @@
|
||||
BB2FB3BD247E7EF200DF73CD /* Tags.swift in Sources */,
|
||||
AA104ADC244734EA004D2810 /* HeadersH1LandingPageHeaderModel.swift in Sources */,
|
||||
BBAA4F03243D8E3B005AAD5F /* RadioBoxes.swift in Sources */,
|
||||
D2ED281E254B119D00A1C293 /* MVMCoreUIActionHandler.m in Sources */,
|
||||
323AC96A24C837F000F8E4C4 /* ListThreeColumnBillChangesModel.swift in Sources */,
|
||||
D2E1FAE12268E81D00AEFD8C /* MoleculeListTemplate.swift in Sources */,
|
||||
525019E72406853600EED91C /* ListFourColumnDataUsageDivider.swift in Sources */,
|
||||
|
||||
@ -100,6 +100,6 @@ import UIKit
|
||||
else { return }
|
||||
|
||||
let additionalDataWithSource = additionalData.dictionaryAdding(key: KeySourceModel, value: baseDropdownEntryFieldModel)
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: actionModel, additionalData: additionalDataWithSource, delegateObject: delegateObject)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: actionModel, additionalData: additionalDataWithSource, delegateObject: delegateObject)
|
||||
}
|
||||
}
|
||||
|
||||
@ -391,7 +391,7 @@ import MVMCore
|
||||
private func performCheckboxAction(with actionModel: ActionModelProtocol, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
||||
var additionalDataToUpdate = additionalData ?? [:]
|
||||
additionalDataToUpdate[KeySourceModel] = checkboxModel
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: actionModel, additionalData: additionalDataToUpdate, delegateObject: delegateObject)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: actionModel, additionalData: additionalDataToUpdate, delegateObject: delegateObject)
|
||||
}
|
||||
|
||||
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||
|
||||
@ -396,11 +396,11 @@ public typealias ActionBlockConfirmation = () -> (Bool)
|
||||
guard let self = self else { return }
|
||||
if self.isOn {
|
||||
if let action = model.action {
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: action, additionalData: additionalDataWithSource, delegateObject: delegateObject)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: action, additionalData: additionalDataWithSource, delegateObject: delegateObject)
|
||||
}
|
||||
} else {
|
||||
if let action = model.alternateAction ?? model.action {
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: action, additionalData: additionalDataWithSource, delegateObject: delegateObject)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: action, additionalData: additionalDataWithSource, delegateObject: delegateObject)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -387,7 +387,7 @@ public typealias ActionBlock = () -> ()
|
||||
}
|
||||
case let actionAtt as LabelAttributeActionModel:
|
||||
addTappableLinkAttribute(range: NSRange(location: range.location, length: range.length)) {
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: actionAtt.action, additionalData: additionalData, delegateObject: delegateObject)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: actionAtt.action, additionalData: additionalData, delegateObject: delegateObject)
|
||||
}
|
||||
addActionAttributes(range: range, string: attributedString)
|
||||
|
||||
|
||||
@ -256,7 +256,7 @@ extension Tabs: UICollectionViewDelegateFlowLayout {
|
||||
if let delegate = delegate {
|
||||
delegate.didSelectItem(indexPath, tabs: self)
|
||||
} else if let action = tabsModel.tabs[selectedIndex].action {
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: action, additionalData: [KeySourceModel: tabsModel], delegateObject:delegateObject)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: action, additionalData: [KeySourceModel: tabsModel], delegateObject:delegateObject)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,9 +46,9 @@
|
||||
model.selected = accordionButton.isSelected
|
||||
|
||||
if accordionButton.isSelected {
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: AddMoleculesActionModel(.automatic), additionalData: [KeySourceModel: model], delegateObject: delegateObject)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: AddMoleculesActionModel(.automatic), additionalData: [KeySourceModel: model], delegateObject: delegateObject)
|
||||
} else {
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: RemoveMoleculesActionModel(.automatic), additionalData: [KeySourceModel: model], delegateObject: delegateObject)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: RemoveMoleculesActionModel(.automatic), additionalData: [KeySourceModel: model], delegateObject: delegateObject)
|
||||
}
|
||||
|
||||
if (accordionListItemModel?.hideLineWhenExpanded ?? false) && (self.bottomSeparatorView?.shouldBeVisible() ?? false) {
|
||||
@ -56,7 +56,7 @@
|
||||
}
|
||||
|
||||
if let actionModel = accordionButton.isSelected ? accordionListItemModel?.expandAction : accordionListItemModel?.collapseAction {
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: actionModel, additionalData: [KeySourceModel: model], delegateObject: delegateObject)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: actionModel, additionalData: [KeySourceModel: model], delegateObject: delegateObject)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -57,7 +57,7 @@ extension TabsTableViewCell: TabsDelegate {
|
||||
public func shouldSelectItem(_ indexPath: IndexPath, tabs: Tabs) -> Bool {
|
||||
guard indexPath.row != tabs.selectedIndex else { return false }
|
||||
if let model = tabsListItemModel {
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: RemoveMoleculesActionModel(indexPath.row < tabs.selectedIndex ? .right : .left), additionalData: [KeySourceModel: model], delegateObject: delegateObject)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: RemoveMoleculesActionModel(indexPath.row < tabs.selectedIndex ? .right : .left), additionalData: [KeySourceModel: model], delegateObject: delegateObject)
|
||||
}
|
||||
previousTabIndex = tabs.selectedIndex
|
||||
return true
|
||||
@ -68,9 +68,9 @@ extension TabsTableViewCell: TabsDelegate {
|
||||
guard let model = tabsListItemModel,
|
||||
index < model.molecules.count else { return }
|
||||
if let action = model.tabs.tabs[index].action {
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: action, additionalData: [KeySourceModel: model.tabs], delegateObject:delegateObject)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: action, additionalData: [KeySourceModel: model.tabs], delegateObject:delegateObject)
|
||||
}
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: AddMoleculesActionModel(index < previousTabIndex ? .left : .right), additionalData: [KeySourceModel: model], delegateObject: delegateObject)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: AddMoleculesActionModel(index < previousTabIndex ? .left : .right), additionalData: [KeySourceModel: model], delegateObject: delegateObject)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@ open class ModalMoleculeListTemplate: MoleculeListTemplate {
|
||||
guard let self = self else { return }
|
||||
let closeAction = (self.templateModel as? ModalListPageTemplateModel)?.closeAction ??
|
||||
ActionBackModel()
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: closeAction, additionalData: nil, delegateObject: self.delegateObjectIVar)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: closeAction, additionalData: nil, delegateObject: self.delegateObjectIVar)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@ open class ModalMoleculeStackTemplate: MoleculeStackTemplate {
|
||||
guard let self = self else { return }
|
||||
let closeAction = (self.templateModel as? ModalStackPageTemplateModel)?.closeAction ??
|
||||
ActionBackModel()
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: closeAction, additionalData: nil, delegateObject: self.delegateObjectIVar)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: closeAction, additionalData: nil, delegateObject: self.delegateObjectIVar)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ open class ModalSectionListTemplate: SectionListTemplate {
|
||||
guard let self = self else { return }
|
||||
let closeAction = (self.templateModel as? ModalSectionListTemplateModel)?.closeAction ??
|
||||
ActionBackModel()
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: closeAction, additionalData: nil, delegateObject: self.delegateObjectIVar)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: closeAction, additionalData: nil, delegateObject: self.delegateObjectIVar)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
import UIKit
|
||||
import MVMCore
|
||||
|
||||
@objc open class ViewController: UIViewController, MVMCoreViewControllerProtocol, MVMCoreViewManagerViewControllerProtocol, MoleculeDelegateProtocol, FormHolderProtocol, MVMCoreActionDelegateProtocol, MVMCoreLoadDelegateProtocol, UITextFieldDelegate, UITextViewDelegate, ObservingTextFieldDelegate, MVMCoreUIDetailViewProtocol, PageProtocol, PageBehaviorHandlerProtocol {
|
||||
@objc open class ViewController: UIViewController, MVMCoreViewControllerProtocol, MVMCoreViewManagerViewControllerProtocol, MoleculeDelegateProtocol, FormHolderProtocol, MVMCoreActionDelegateProtocol, ActionDelegateProtocol, MVMCoreLoadDelegateProtocol, UITextFieldDelegate, UITextViewDelegate, ObservingTextFieldDelegate, MVMCoreUIDetailViewProtocol, PageProtocol, PageBehaviorHandlerProtocol {
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Properties
|
||||
@ -418,7 +418,7 @@ import MVMCore
|
||||
}
|
||||
|
||||
/// Override this method to avoid adding form params.
|
||||
open func addFormParams(requestParameters: MVMCoreRequestParameters, actionInformation: [AnyHashable: Any]?, additionalData: [AnyHashable: Any]?) {
|
||||
open func addFormParams(requestParameters: MVMCoreRequestParameters, model: ActionOpenPageModel, additionalData: [AnyHashable: Any]?) {
|
||||
formValidator?.addFormParams(requestParameters: requestParameters, model: additionalData?[KeySourceModel] as? MoleculeModelProtocol & FormItemProtocol)
|
||||
}
|
||||
|
||||
@ -439,13 +439,10 @@ import MVMCore
|
||||
//--------------------------------------------------
|
||||
// MARK: - MVMCoreActionDelegateProtocol
|
||||
//--------------------------------------------------
|
||||
open func getRequestParameters(for model: ActionOpenPageModel, delegateObject: DelegateObject? = nil, additionData: [AnyHashable : Any]? = nil) throws -> MVMCoreRequestParameters {
|
||||
open func getRequestParameters(for model: ActionOpenPageModel, delegateObject: DelegateObject? = nil, additionalData: [AnyHashable : Any]? = nil) throws -> (MVMCoreRequestParameters,[AnyHashable : Any]?) {
|
||||
let json = try MVMCoreActionHandler.convertActionToJSON(model)
|
||||
return MVMCoreRequestParameters(actionMap: json)!
|
||||
}
|
||||
|
||||
open func handleOpenPage(for requestParameters: MVMCoreRequestParameters, actionInformation: [AnyHashable: Any]?, additionalData: [AnyHashable: Any]?) {
|
||||
addFormParams(requestParameters: requestParameters, actionInformation: actionInformation, additionalData: additionalData)
|
||||
let requestParameters = MVMCoreRequestParameters(actionMap: json)!
|
||||
addFormParams(requestParameters: requestParameters, model: model, additionalData: additionalData)
|
||||
requestParameters.parentPageType = loadObject?.pageJSON?.optionalStringForKey("parentPageType")
|
||||
var pageForwardedData = additionalData ?? [:]
|
||||
|
||||
@ -453,26 +450,21 @@ import MVMCore
|
||||
let dataMap = behavior.compileLocalPageDataForTransfer(delegateObjectIVar)
|
||||
pageForwardedData.merge(dataMap) { current, _ in current }
|
||||
}
|
||||
|
||||
//MVMCoreActionHandler.defaultHandleOpenPage(for: requestParameters, actionInformation: actionInformation, additionalData: pageForwardedData, delegateObject: delegateObject())
|
||||
return (requestParameters,pageForwardedData)
|
||||
}
|
||||
|
||||
open func logAction(withActionInformation actionInformation: [AnyHashable: Any]?, additionalData: [AnyHashable: Any]?) {
|
||||
MVMCoreUILoggingHandler.shared()?.defaultLogAction(forController: self, actionInformation: actionInformation, additionalData: additionalData)
|
||||
}
|
||||
|
||||
open func handleUnknownActionType(_ actionType: String?, actionInformation: [AnyHashable: Any]?, additionalData: [AnyHashable: Any]?) {
|
||||
public func handlesUnknownAction(for model: ActionModelProtocol, delegateObject: DelegateObject?, additionalData: [AnyHashable : Any]?) async throws -> Bool {
|
||||
var handled = false
|
||||
|
||||
executeBehaviors { (behavior: PageCustomActionHandlerBehavior) in
|
||||
if !handled {
|
||||
handled = behavior.handleAction(type: actionType, information: actionInformation, additionalData: additionalData)
|
||||
handled = behavior.handleAction(with: model, additionalData: additionalData)
|
||||
}
|
||||
}
|
||||
|
||||
if !handled {
|
||||
//MVMCoreUIActionHandler.defaultHandleUnknownActionType(actionType, actionInformation: actionInformation, additionalData: additionalData, delegateObject: delegateObjectIVar)
|
||||
}
|
||||
return handled
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
|
||||
@ -85,24 +85,24 @@ public class AddRemoveMoleculesBehavior: PageCustomActionHandlerBehavior, PageMo
|
||||
}
|
||||
}
|
||||
|
||||
public func handleAction(type actionType: String?, information: [AnyHashable : Any]?, additionalData: [AnyHashable : Any]?) -> Bool {
|
||||
if actionType == AddMoleculesActionModel.identifier {
|
||||
guard let list = delegate?.moleculeListDelegate,
|
||||
let model = additionalData?[KeySourceModel] as? (ListItemModelProtocol & MoleculeModelProtocol & AddMolecules),
|
||||
let moleculesToAdd = model.getRecursiveMoleculesToAdd(),
|
||||
let indexPath = list.getAdjustedIndexPath(for: model, position: moleculesToAdd.1),
|
||||
let animation = information?["animation"] as? Int else { return true }
|
||||
public func handleAction(with model: ActionModelProtocol, additionalData: [AnyHashable : Any]?) -> Bool {
|
||||
if model.actionType == AddMoleculesActionModel.identifier {
|
||||
guard let model = model as? AddMoleculesActionModel,
|
||||
let list = delegate?.moleculeListDelegate,
|
||||
let sourceModel = additionalData?[KeySourceModel] as? (ListItemModelProtocol & MoleculeModelProtocol & AddMolecules),
|
||||
let moleculesToAdd = sourceModel.getRecursiveMoleculesToAdd(),
|
||||
let indexPath = list.getAdjustedIndexPath(for: sourceModel, position: moleculesToAdd.1) else { return true }
|
||||
DispatchQueue.main.async {
|
||||
list.addMolecules(moleculesToAdd.0, indexPath: indexPath, animation: UITableView.RowAnimation(rawValue: animation))
|
||||
list.addMolecules(moleculesToAdd.0, indexPath: indexPath, animation: model.animation)
|
||||
}
|
||||
return true
|
||||
} else if actionType == RemoveMoleculesActionModel.identifier {
|
||||
guard let list = delegate?.moleculeListDelegate,
|
||||
let model = additionalData?[KeySourceModel] as? (ListItemModelProtocol & MoleculeModelProtocol & RemoveMolecules),
|
||||
let moleculesToRemove = model.getRecursiveMoleculesToRemove(),
|
||||
let animation = information?["animation"] as? Int else { return true }
|
||||
} else if model.actionType == RemoveMoleculesActionModel.identifier {
|
||||
guard let model = model as? RemoveMoleculesActionModel,
|
||||
let list = delegate?.moleculeListDelegate,
|
||||
let sourceModel = additionalData?[KeySourceModel] as? (ListItemModelProtocol & MoleculeModelProtocol & RemoveMolecules),
|
||||
let moleculesToRemove = sourceModel.getRecursiveMoleculesToRemove() else { return true }
|
||||
DispatchQueue.main.async {
|
||||
list.removeMolecules(moleculesToRemove, animation: UITableView.RowAnimation(rawValue: animation))
|
||||
list.removeMolecules(moleculesToRemove, animation: model.animation)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
@ -67,11 +67,10 @@ public protocol PageLocalDataShareBehavior: PageBehaviorProtocol {
|
||||
public protocol PageCustomActionHandlerBehavior: PageBehaviorProtocol {
|
||||
|
||||
/// - Parameters:
|
||||
/// - actionType: The action type of the passed action model.
|
||||
/// - information: information of the passed action model.
|
||||
/// - model: The action model.
|
||||
/// - additionalData: Additional information of the
|
||||
/// - Returns: Boolean determines if the action has been handled.
|
||||
func handleAction(type actionType: String?, information: [AnyHashable : Any]?, additionalData: [AnyHashable : Any]?) -> Bool
|
||||
func handleAction(with model: ActionModelProtocol, additionalData: [AnyHashable : Any]?) -> Bool
|
||||
}
|
||||
|
||||
public extension MVMCoreUIDelegateObject {
|
||||
|
||||
@ -164,26 +164,25 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
|
||||
}
|
||||
|
||||
/// Allows modification of requestParameters object for openPage request
|
||||
open func getRequestParametersForNewTabLoad(requestParameters: MVMCoreRequestParameters, actionInformation: [AnyHashable : Any]?, additionalData: [AnyHashable : Any]?) -> MVMCoreRequestParameters {
|
||||
open func getRequestParametersForNewTabLoad(requestParameters: MVMCoreRequestParameters, model: ActionOpenPageModel, additionalData: [AnyHashable : Any]?) -> MVMCoreRequestParameters {
|
||||
requestParameters.navigationController = subNavigationController
|
||||
requestParameters.loadStyle = .replaceCurrent
|
||||
requestParameters.tabWasPressed = true
|
||||
return requestParameters
|
||||
}
|
||||
|
||||
open override func handleOpenPage(for requestParameters: MVMCoreRequestParameters, actionInformation: [AnyHashable : Any]?, additionalData: [AnyHashable : Any]?) {
|
||||
var requestParameters = requestParameters
|
||||
open override func getRequestParameters(for model: ActionOpenPageModel, delegateObject: DelegateObject? = nil, additionalData: [AnyHashable : Any]? = nil) throws -> (MVMCoreRequestParameters, [AnyHashable : Any]?) {
|
||||
let value = try super.getRequestParameters(for: model, delegateObject: delegateObject, additionalData: additionalData)
|
||||
var requestParameters = value.0
|
||||
let additionalData = value.1
|
||||
guard let additionalData = additionalData,
|
||||
additionalData.boolForKey("tabBarPressed") else {
|
||||
// Pass to delegate
|
||||
if (viewController as? MVMCoreActionDelegateProtocol)?.handleOpenPage?(for: requestParameters, actionInformation: actionInformation, additionalData: additionalData) == nil {
|
||||
super.handleOpenPage(for: requestParameters, actionInformation: actionInformation, additionalData: additionalData)
|
||||
}
|
||||
return
|
||||
}
|
||||
return try (viewController as? ActionDelegateProtocol)?.getRequestParameters(for: model, delegateObject: delegateObject, additionalData: additionalData) ?? value
|
||||
}
|
||||
// Allow opportunity to modify parameters.
|
||||
requestParameters = getRequestParametersForNewTabLoad(requestParameters: requestParameters, actionInformation: actionInformation, additionalData: additionalData)
|
||||
super.handleOpenPage(for: requestParameters, actionInformation: actionInformation, additionalData: additionalData)
|
||||
requestParameters = getRequestParametersForNewTabLoad(requestParameters: requestParameters, model: model, additionalData: additionalData)
|
||||
return (requestParameters, additionalData)
|
||||
}
|
||||
|
||||
// MARK: - MVMCorePresentationDelegateProtocol
|
||||
@ -278,7 +277,7 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
|
||||
} else if let tabsModel = tabs.tabsModel,
|
||||
let action = tabsModel.tabs[indexPath.row].action {
|
||||
// Perform the tab action
|
||||
MVMCoreActionHandler.shared()?.asyncHandleAction(with: action, additionalData: getAdditionalDataForNewTabLoad(indexPath: indexPath), delegateObject: delegateObjectIVar)
|
||||
_ = MVMCoreActionHandler.shared()?.asyncHandleAction(with: action, additionalData: getAdditionalDataForNewTabLoad(indexPath: indexPath), delegateObject: delegateObjectIVar)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
@ -1,20 +0,0 @@
|
||||
////
|
||||
//// MVMCoreUIActionHandler.h
|
||||
//// MVMCoreUI
|
||||
////
|
||||
//// Created by Scott Pfeil on 10/28/20.
|
||||
//// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
////
|
||||
//
|
||||
//@import MVMCore.MVMCoreActionHandler;
|
||||
//
|
||||
//NS_ASSUME_NONNULL_BEGIN
|
||||
//
|
||||
//@interface MVMCoreUIActionHandler : MVMCoreActionHandler
|
||||
//
|
||||
///// Legacy in app safari webview load
|
||||
//- (void)openURLInSafariWebView:(nonnull NSURL *)url;
|
||||
//
|
||||
//@end
|
||||
//
|
||||
//NS_ASSUME_NONNULL_END
|
||||
@ -1,49 +0,0 @@
|
||||
////
|
||||
//// MVMCoreUIActionHandler.m
|
||||
//// MVMCoreUI
|
||||
////
|
||||
//// Created by Scott Pfeil on 10/28/20.
|
||||
//// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
////
|
||||
//
|
||||
//#import "MVMCoreUIActionHandler.h"
|
||||
//#import "MVMCoreUIConstants.h"
|
||||
//#import "MVMCoreAlertObject.h"
|
||||
//#import <MVMCoreUI/MVMCoreUIActionDelegateProtocol.h>
|
||||
//#import <MVMCoreUI/MVMCoreUI-Swift.h>
|
||||
//@import MVMCore.MVMCoreActionHandler;
|
||||
//@import MVMCore.NSDictionary_MFConvenience;
|
||||
//@import MVMCore.MVMCoreJSONConstants;
|
||||
//@import MVMCore.MVMCoreCache;
|
||||
//@import SafariServices;
|
||||
//
|
||||
//@implementation MVMCoreUIActionHandler
|
||||
//
|
||||
//- (void)openPageAction:(NSDictionary *)actionInformation additionalData:(NSDictionary *)additionalData delegateObject:(DelegateObject *)delegateObject {
|
||||
// // Cleanup the source model data to prevent it from being accidentally auto-forwarded in openPage network requests by blind additionalData insertions. (https://onejira.verizon.com/browse/CXTDT-135642, https://onejira.verizon.com/browse/CXTDT-136001).
|
||||
// if (additionalData[KeySourceModel]) {
|
||||
// NSMutableDictionary *cleanedData = [additionalData mutableCopy];
|
||||
// [cleanedData removeObjectForKey:KeySourceModel];
|
||||
// additionalData = cleanedData;
|
||||
// }
|
||||
// //[super openPageAction:actionInformation additionalData:additionalData delegateObject:delegateObject];
|
||||
//}
|
||||
//
|
||||
//- (void)defaultHandleActionError:(nonnull MVMCoreErrorObject *)error additionalData:(nullable NSDictionary *)additionalData {
|
||||
// [super defaultHandleActionError:error additionalData:additionalData];
|
||||
// if (!error.silentError) {
|
||||
//
|
||||
// // Show alert
|
||||
// [MVMCoreDispatchUtility performBlockOnMainThread:^{
|
||||
// MVMCoreAlertObject *alertObject = [[MVMCoreAlertObject alloc] initPopupAlertWithError:error isGreedy:NO];
|
||||
// [[MVMCoreAlertHandler sharedAlertHandler] showAlertWithAlertObject:alertObject];
|
||||
// }];
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//- (void)openURLInSafariWebView:(nonnull NSURL *)url {
|
||||
// SFSafariViewController *safariViewController = [[SFSafariViewController alloc] initWithURL:url];
|
||||
// [[MVMCoreNavigationHandler sharedNavigationHandler] presentViewController:safariViewController animated:YES];
|
||||
//}
|
||||
//
|
||||
//@end
|
||||
@ -1,5 +1,5 @@
|
||||
//
|
||||
// MVMCoreUIActionHandler+Extension.swift
|
||||
// MVMCoreUIActionHandler.swift
|
||||
// MVMCoreUI
|
||||
//
|
||||
// Created by Scott Pfeil on 7/18/22.
|
||||
Loading…
Reference in New Issue
Block a user