Compare commits
1 Commits
develop
...
feature/vd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26c2243d0d |
@ -123,5 +123,113 @@ extension AppDelegate: MVMCoreGlobalTopAlertDelegateProtocol {
|
|||||||
extension AppDelegate {
|
extension AppDelegate {
|
||||||
func register(){
|
func register(){
|
||||||
ModelRegistry.register(handler: TestToggle.self, for: TestToggleModel.self)
|
ModelRegistry.register(handler: TestToggle.self, for: TestToggleModel.self)
|
||||||
|
ModelRegistry.register(handler: DynamicHeadlineBodyToggle.self, for: DynamicHeadlineBodyToggleModel.self)
|
||||||
|
ModelRegistry.register(handler: BiometricLabelToggle.self, for: BiometricLabelToggleModel.self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class DynamicHeadlineBodyToggleModel: MoleculeModelProtocol {
|
||||||
|
public static var identifier: String = "dynamicHeadlineBodyToggle"
|
||||||
|
open var backgroundColor: Color?
|
||||||
|
public var moleculeName: String?
|
||||||
|
open var headlineBody: HeadlineBodyModel
|
||||||
|
open var toggle: ToggleModel?
|
||||||
|
public var switchOnText: LabelModel?
|
||||||
|
public var switchOffText: LabelModel?
|
||||||
|
}
|
||||||
|
@objcMembers public class DynamicHeadlineBodyToggle: HeadlineBodyToggle {
|
||||||
|
|
||||||
|
//MARK:Declaration
|
||||||
|
var delegate: MVMCoreUIDelegateObject?
|
||||||
|
|
||||||
|
//override the toggles.valueChangedCancellable
|
||||||
|
public override func setupView() {
|
||||||
|
super.setupView()
|
||||||
|
toggle.valueChangedSubscription = toggle.publisher(for: .valueChanged)
|
||||||
|
.sink { [weak self] changed in
|
||||||
|
guard let self = self,
|
||||||
|
let model = self.model as? DynamicHeadlineBodyToggleModel else { return }
|
||||||
|
self.updateDynamicHeadLine(model)
|
||||||
|
self.toggle.executeDefaultAction()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
|
guard let dynamicHeadlineBodyToggleModel = model as? DynamicHeadlineBodyToggleModel else { return }
|
||||||
|
delegate = delegateObject
|
||||||
|
self.model = model
|
||||||
|
toggle.setOptional(with: dynamicHeadlineBodyToggleModel.toggle, delegateObject, additionalData)
|
||||||
|
updateDynamicHeadLine(dynamicHeadlineBodyToggleModel)
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateDynamicHeadLine(_ model: DynamicHeadlineBodyToggleModel) {
|
||||||
|
|
||||||
|
let headLineBodyModel: HeadlineBodyModel? = model.headlineBody
|
||||||
|
// check if toogle model present
|
||||||
|
// otherwise toggle should be hidden for member
|
||||||
|
if let _ = model.toggle {
|
||||||
|
if toggle.isOn, let switchOnText = model.switchOnText {
|
||||||
|
headLineBodyModel?.headline = switchOnText
|
||||||
|
} else if let switchOffText = model.switchOffText {
|
||||||
|
headLineBodyModel?.headline = switchOffText
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
toggle.isHidden = true
|
||||||
|
}
|
||||||
|
headlineBody.setOptional(with: headLineBodyModel, delegate, nil)
|
||||||
|
layoutIfNeeded()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class BiometricLabelToggleModel: MoleculeModelProtocol {
|
||||||
|
public static var identifier: String = "biometricLabelToggle"
|
||||||
|
public var backgroundColor: Color?
|
||||||
|
public var touchId: LabelToggleModel
|
||||||
|
public var faceId: LabelToggleModel
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc public protocol BiometricLabelToggleDelegate: NSObjectProtocol {
|
||||||
|
@objc func processBiometricID(_ toggle: MVMCoreUI.Toggle?)
|
||||||
|
@objc func setupBiometricID(_ toggle: MVMCoreUI.Toggle?)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objcMembers public class BiometricLabelToggle: LabelToggle {
|
||||||
|
var biometricDelegate: BiometricLabelToggleDelegate?
|
||||||
|
|
||||||
|
// MARK: - MVMCoreViewProtocol
|
||||||
|
public override func setupView() {
|
||||||
|
super.setupView()
|
||||||
|
// alignment fix
|
||||||
|
label.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
|
||||||
|
trailingAnchor.constraint(equalTo: toggle.trailingAnchor).isActive = true
|
||||||
|
|
||||||
|
//overwrite the default logic for value changed
|
||||||
|
toggle.valueChangedSubscription = toggle
|
||||||
|
.publisher(for: .valueChanged)
|
||||||
|
.sink { [weak self] changed in
|
||||||
|
self?.biometricDelegate?.processBiometricID(changed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK:- MoleculeViewProtocol
|
||||||
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
|
guard let model = model as? BiometricLabelToggleModel else { return }
|
||||||
|
biometricDelegate = delegateObject?.actionDelegate as? BiometricLabelToggleDelegate
|
||||||
|
// check device/server supports face id
|
||||||
|
if false {
|
||||||
|
// Load the face id label json
|
||||||
|
super.set(with: model.faceId, delegateObject, additionalData)
|
||||||
|
} else {
|
||||||
|
// if device/server supports touch Id
|
||||||
|
super.set(with: model.touchId, delegateObject, additionalData)
|
||||||
|
}
|
||||||
|
biometricDelegate?.setupBiometricID(toggle)
|
||||||
|
}
|
||||||
|
|
||||||
|
public class override func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
|
guard let model = model as? BiometricLabelToggleModel else { return nil }
|
||||||
|
return LabelToggle.estimatedHeight(with: model.faceId, delegateObject)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,25 +7,156 @@
|
|||||||
"suppressPostLaunchRequests": false,
|
"suppressPostLaunchRequests": false,
|
||||||
"tabBarHidden": true,
|
"tabBarHidden": true,
|
||||||
"header": {
|
"header": {
|
||||||
"moleculeName": "header",
|
"moleculeName": "header",
|
||||||
"molecule": {
|
"molecule": {
|
||||||
"moleculeName": "headlineBody",
|
"moleculeName": "headlineBody",
|
||||||
"headline": {
|
"headline": {
|
||||||
"moleculeName": "label",
|
"moleculeName": "label",
|
||||||
"text": "Zenkey"
|
"text": "Zenkey"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
},
|
||||||
"stack": {
|
"stack": {
|
||||||
"moleculeName": "stack",
|
"moleculeName": "stack",
|
||||||
"molecules": [
|
"molecules": [
|
||||||
{
|
{
|
||||||
"moleculeName": "stackItem",
|
"moleculeName": "stackItem",
|
||||||
"molecule": {
|
"molecule": {
|
||||||
"moleculeName": "toggle",
|
"moleculeName": "toggle",
|
||||||
"fieldKey": "isActive"
|
"fieldKey": "isActive"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moleculeName": "stackItem",
|
||||||
|
"molecule": {
|
||||||
|
"moleculeName": "labelToggle",
|
||||||
|
"label": {
|
||||||
|
"moleculeName": "label",
|
||||||
|
"text": "Enable touch id."
|
||||||
|
},
|
||||||
|
"toggle": {
|
||||||
|
"moleculeName": "toggle"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moleculeName": "stackItem",
|
||||||
|
"molecule": {
|
||||||
|
"moleculeName": "headlineBodyToggle",
|
||||||
|
"headlineBody": {
|
||||||
|
"moleculeName": "headlineBody",
|
||||||
|
"headline": {
|
||||||
|
"moleculeName": "label",
|
||||||
|
"text": "Business and Marketing Insights"
|
||||||
|
},
|
||||||
|
"body": {
|
||||||
|
"moleculeName": "label",
|
||||||
|
"text": "Allow use of information."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"toggle": {
|
||||||
|
"moleculeName": "toggle"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moleculeName": "stackItem",
|
||||||
|
"molecule": {
|
||||||
|
"moleculeName": "headlineBodyLinkToggle",
|
||||||
|
"headlineBodyLink": {
|
||||||
|
"moleculeName": "headlineBodyLink",
|
||||||
|
"headlineBody": {
|
||||||
|
"moleculeName": "headlineBody",
|
||||||
|
"headline": {
|
||||||
|
"moleculeName": "label",
|
||||||
|
"text": "Relevant Mobile Advertising"
|
||||||
|
},
|
||||||
|
"body": {
|
||||||
|
"moleculeName": "label",
|
||||||
|
"text": "Allow use of information."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"link": {
|
||||||
|
"moleculeName": "link",
|
||||||
|
"title": "Tell me more",
|
||||||
|
"action": {
|
||||||
|
"actionType": "openPage",
|
||||||
|
"pageType": "forgotPasswordPage"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"toggle": {
|
||||||
|
"moleculeName": "toggle"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moleculeName": "stackItem",
|
||||||
|
"molecule": {
|
||||||
|
"moleculeName": "dynamicHeadlineBodyToggle",
|
||||||
|
"toggle": {
|
||||||
|
"moleculeName": "toggle",
|
||||||
|
"fieldKey": "switchImei1",
|
||||||
|
"state": true
|
||||||
|
},
|
||||||
|
"headlineBody": {
|
||||||
|
"moleculeName": "headlineBody",
|
||||||
|
"headline": {
|
||||||
|
"moleculeName": "label",
|
||||||
|
"text": "Safety Mode is On",
|
||||||
|
"fontStyle": "H3"
|
||||||
|
},
|
||||||
|
"body": {
|
||||||
|
"moleculeName": "label",
|
||||||
|
"text": "Safety Mode protects you from overage fees and still lets you use data at reduced speeds, after you've done over monthly data limit.",
|
||||||
|
"fontStyle": "B2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"switchOnText": {
|
||||||
|
"moleculeName": "label",
|
||||||
|
"text": "Safety Mode is On",
|
||||||
|
"fontStyle": "H3"
|
||||||
|
},
|
||||||
|
"switchOffText": {
|
||||||
|
"moleculeName": "label",
|
||||||
|
"text": "Safety Mode is Off",
|
||||||
|
"fontStyle": "H3"
|
||||||
|
},
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moleculeName": "stackItem",
|
||||||
|
"molecule": {
|
||||||
|
"moleculeName": "biometricLabelToggle",
|
||||||
|
"faceId": {
|
||||||
|
"label": {
|
||||||
|
"moleculeName": "label",
|
||||||
|
"text": "Enable face ID"
|
||||||
|
},
|
||||||
|
"toggle": {
|
||||||
|
"moleculeName": "toggle",
|
||||||
|
"actionMap": {
|
||||||
|
"actionType": "openPage",
|
||||||
|
"pageType": "turnOnFaceId"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"touchId": {
|
||||||
|
"label": {
|
||||||
|
"moleculeName": "label",
|
||||||
|
"text": "Enable Touch ID"
|
||||||
|
},
|
||||||
|
"toggle": {
|
||||||
|
"moleculeName": "toggle",
|
||||||
|
"actionMap": {
|
||||||
|
"actionType": "openPage",
|
||||||
|
"pageType": "turnOnTouchId"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
@ -50,11 +181,8 @@
|
|||||||
"formRules": [
|
"formRules": [
|
||||||
{
|
{
|
||||||
"groupName": "default",
|
"groupName": "default",
|
||||||
"rules": [
|
"rules": []
|
||||||
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user