added for project testing
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
23284fbe9a
commit
f1bed66dc9
@ -47,6 +47,19 @@
|
||||
EA5B696F2866BC1000B17D2E /* MVMCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = EA5B696C2866BC1000B17D2E /* MVMCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
EA5B69702866BC1000B17D2E /* MVMCoreUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA5B696D2866BC1000B17D2E /* MVMCoreUI.framework */; };
|
||||
EA5B69712866BC1000B17D2E /* MVMCoreUI.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = EA5B696D2866BC1000B17D2E /* MVMCoreUI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
EA62997B2C9B7BCA008980E3 /* ClientParameterBiometricTypeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6299712C9B7BCA008980E3 /* ClientParameterBiometricTypeModel.swift */; };
|
||||
EA62997C2C9B7BCA008980E3 /* ActionRegisterFidoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6299722C9B7BCA008980E3 /* ActionRegisterFidoModel.swift */; };
|
||||
EA62997D2C9B7BCA008980E3 /* ClientParameterBiometricStatusHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6299732C9B7BCA008980E3 /* ClientParameterBiometricStatusHandler.swift */; };
|
||||
EA62997E2C9B7BCA008980E3 /* ActionRegisterFidoHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6299742C9B7BCA008980E3 /* ActionRegisterFidoHandler.swift */; };
|
||||
EA62997F2C9B7BCA008980E3 /* ActionBiometricStateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6299752C9B7BCA008980E3 /* ActionBiometricStateModel.swift */; };
|
||||
EA6299802C9B7BCA008980E3 /* ActionBiometricStateHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6299762C9B7BCA008980E3 /* ActionBiometricStateHandler.swift */; };
|
||||
EA6299812C9B7BCA008980E3 /* ClientParameterBiometricStatusModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6299772C9B7BCA008980E3 /* ClientParameterBiometricStatusModel.swift */; };
|
||||
EA6299822C9B7BCA008980E3 /* ClientParameterBiometricType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6299782C9B7BCA008980E3 /* ClientParameterBiometricType.swift */; };
|
||||
EA6299832C9B7BCA008980E3 /* ClientParameterBiometricsEnabledHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6299792C9B7BCA008980E3 /* ClientParameterBiometricsEnabledHandler.swift */; };
|
||||
EA6299842C9B7BCA008980E3 /* ClientParameterBiometricsEnabledModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA62997A2C9B7BCA008980E3 /* ClientParameterBiometricsEnabledModel.swift */; };
|
||||
EA6299882C9B7C54008980E3 /* RegisterPushNotificationActionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6299852C9B7C53008980E3 /* RegisterPushNotificationActionHandler.swift */; };
|
||||
EA6299892C9B7C54008980E3 /* ActionRegisterPushNotificationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6299862C9B7C53008980E3 /* ActionRegisterPushNotificationModel.swift */; };
|
||||
EA62998A2C9B7C54008980E3 /* BiometricSetupBehavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6299872C9B7C54008980E3 /* BiometricSetupBehavior.swift */; };
|
||||
EAC58C022BEAB7AB00BA39FA /* VDSCoreTokens.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAC58C012BEAB7AB00BA39FA /* VDSCoreTokens.xcframework */; };
|
||||
EAC58C032BEAB7AB00BA39FA /* VDSCoreTokens.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = EAC58C012BEAB7AB00BA39FA /* VDSCoreTokens.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
@ -92,6 +105,19 @@
|
||||
EA3361FA2891D54A0071C351 /* VDSTypographyTokens.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = VDSTypographyTokens.xcframework; path = ../SharedFrameworks/VDSTypographyTokens.xcframework; sourceTree = "<group>"; };
|
||||
EA5B696C2866BC1000B17D2E /* MVMCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MVMCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
EA5B696D2866BC1000B17D2E /* MVMCoreUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MVMCoreUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
EA6299712C9B7BCA008980E3 /* ClientParameterBiometricTypeModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClientParameterBiometricTypeModel.swift; sourceTree = "<group>"; };
|
||||
EA6299722C9B7BCA008980E3 /* ActionRegisterFidoModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionRegisterFidoModel.swift; sourceTree = "<group>"; };
|
||||
EA6299732C9B7BCA008980E3 /* ClientParameterBiometricStatusHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClientParameterBiometricStatusHandler.swift; sourceTree = "<group>"; };
|
||||
EA6299742C9B7BCA008980E3 /* ActionRegisterFidoHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionRegisterFidoHandler.swift; sourceTree = "<group>"; };
|
||||
EA6299752C9B7BCA008980E3 /* ActionBiometricStateModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionBiometricStateModel.swift; sourceTree = "<group>"; };
|
||||
EA6299762C9B7BCA008980E3 /* ActionBiometricStateHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionBiometricStateHandler.swift; sourceTree = "<group>"; };
|
||||
EA6299772C9B7BCA008980E3 /* ClientParameterBiometricStatusModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClientParameterBiometricStatusModel.swift; sourceTree = "<group>"; };
|
||||
EA6299782C9B7BCA008980E3 /* ClientParameterBiometricType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClientParameterBiometricType.swift; sourceTree = "<group>"; };
|
||||
EA6299792C9B7BCA008980E3 /* ClientParameterBiometricsEnabledHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClientParameterBiometricsEnabledHandler.swift; sourceTree = "<group>"; };
|
||||
EA62997A2C9B7BCA008980E3 /* ClientParameterBiometricsEnabledModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClientParameterBiometricsEnabledModel.swift; sourceTree = "<group>"; };
|
||||
EA6299852C9B7C53008980E3 /* RegisterPushNotificationActionHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegisterPushNotificationActionHandler.swift; sourceTree = "<group>"; };
|
||||
EA6299862C9B7C53008980E3 /* ActionRegisterPushNotificationModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionRegisterPushNotificationModel.swift; sourceTree = "<group>"; };
|
||||
EA6299872C9B7C54008980E3 /* BiometricSetupBehavior.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BiometricSetupBehavior.swift; sourceTree = "<group>"; };
|
||||
EA7E676927582F2200ABF773 /* MVMCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MVMCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
EA7E676A27582F2200ABF773 /* MVMCoreUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MVMCoreUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
EAA658142875FA5E00484A7D /* VDSFormControlsTokens.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = VDSFormControlsTokens.xcframework; path = ../SharedFrameworks/VDSFormControlsTokens.xcframework; sourceTree = "<group>"; };
|
||||
@ -118,6 +144,19 @@
|
||||
D288D69B26CAE26900A5C365 /* MF */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EA6299862C9B7C53008980E3 /* ActionRegisterPushNotificationModel.swift */,
|
||||
EA6299872C9B7C54008980E3 /* BiometricSetupBehavior.swift */,
|
||||
EA6299852C9B7C53008980E3 /* RegisterPushNotificationActionHandler.swift */,
|
||||
EA6299762C9B7BCA008980E3 /* ActionBiometricStateHandler.swift */,
|
||||
EA6299752C9B7BCA008980E3 /* ActionBiometricStateModel.swift */,
|
||||
EA6299742C9B7BCA008980E3 /* ActionRegisterFidoHandler.swift */,
|
||||
EA6299722C9B7BCA008980E3 /* ActionRegisterFidoModel.swift */,
|
||||
EA6299792C9B7BCA008980E3 /* ClientParameterBiometricsEnabledHandler.swift */,
|
||||
EA62997A2C9B7BCA008980E3 /* ClientParameterBiometricsEnabledModel.swift */,
|
||||
EA6299732C9B7BCA008980E3 /* ClientParameterBiometricStatusHandler.swift */,
|
||||
EA6299772C9B7BCA008980E3 /* ClientParameterBiometricStatusModel.swift */,
|
||||
EA6299782C9B7BCA008980E3 /* ClientParameterBiometricType.swift */,
|
||||
EA6299712C9B7BCA008980E3 /* ClientParameterBiometricTypeModel.swift */,
|
||||
D29C557725BF1F340082E7D6 /* JSONCreatorActionHandler.swift */,
|
||||
);
|
||||
path = MF;
|
||||
@ -301,10 +340,23 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
EA6299812C9B7BCA008980E3 /* ClientParameterBiometricStatusModel.swift in Sources */,
|
||||
EA62997C2C9B7BCA008980E3 /* ActionRegisterFidoModel.swift in Sources */,
|
||||
EA62997D2C9B7BCA008980E3 /* ClientParameterBiometricStatusHandler.swift in Sources */,
|
||||
EA62997B2C9B7BCA008980E3 /* ClientParameterBiometricTypeModel.swift in Sources */,
|
||||
EA6299832C9B7BCA008980E3 /* ClientParameterBiometricsEnabledHandler.swift in Sources */,
|
||||
D2B1E3F722F4A68F0065F95C /* DetailViewController.swift in Sources */,
|
||||
EA6299822C9B7BCA008980E3 /* ClientParameterBiometricType.swift in Sources */,
|
||||
D2B1E3F522F4A68F0065F95C /* MasterViewController.swift in Sources */,
|
||||
EA6299802C9B7BCA008980E3 /* ActionBiometricStateHandler.swift in Sources */,
|
||||
EA6299842C9B7BCA008980E3 /* ClientParameterBiometricsEnabledModel.swift in Sources */,
|
||||
EA62997E2C9B7BCA008980E3 /* ActionRegisterFidoHandler.swift in Sources */,
|
||||
D2B1E3F322F4A68F0065F95C /* AppDelegate.swift in Sources */,
|
||||
EA62998A2C9B7C54008980E3 /* BiometricSetupBehavior.swift in Sources */,
|
||||
EA6299882C9B7C54008980E3 /* RegisterPushNotificationActionHandler.swift in Sources */,
|
||||
EA62997F2C9B7BCA008980E3 /* ActionBiometricStateModel.swift in Sources */,
|
||||
D29C557825BF1F340082E7D6 /* JSONCreatorActionHandler.swift in Sources */,
|
||||
EA6299892C9B7C54008980E3 /* ActionRegisterPushNotificationModel.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
156
JSONCreator_iOS/JSONCreator/JSON/Samples/A_IssuesSample.json
Normal file
156
JSONCreator_iOS/JSONCreator/JSON/Samples/A_IssuesSample.json
Normal file
@ -0,0 +1,156 @@
|
||||
|
||||
{
|
||||
"Page": {
|
||||
"header": {
|
||||
"headlineBody": {
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "About Face ID"
|
||||
},
|
||||
"body": {
|
||||
"moleculeName": "label",
|
||||
"text": "Setting up Face ID only takes a couple of minutes."
|
||||
}
|
||||
},
|
||||
"moleculeName": "headerH2"
|
||||
},
|
||||
"pageType": "learnMoreFaceID",
|
||||
"hideFabOverlay": true,
|
||||
"tabBarHidden": true,
|
||||
"stack": {
|
||||
"moleculeName": "stack",
|
||||
"molecules": [
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"fontStyle": "RegularBodyLarge",
|
||||
"moleculeName": "label",
|
||||
"attributes": [
|
||||
{
|
||||
"length": 6,
|
||||
"style": "BoldBodyLarge",
|
||||
"type": "font",
|
||||
"location": 0
|
||||
}
|
||||
],
|
||||
"text": "Step 1 Follow the prompt to set up Face ID in the iOS settings."
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"fontStyle": "RegularBodyLarge",
|
||||
"moleculeName": "label",
|
||||
"attributes": [
|
||||
{
|
||||
"length": 6,
|
||||
"style": "BoldBodyLarge",
|
||||
"type": "font",
|
||||
"location": 0
|
||||
}
|
||||
],
|
||||
"text": "Step 2 Select Set Up Face ID and follow the instructions to scan your face."
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"fontStyle": "RegularBodyLarge",
|
||||
"moleculeName": "label",
|
||||
"attributes": [
|
||||
{
|
||||
"length": 6,
|
||||
"style": "BoldBodyLarge",
|
||||
"type": "font",
|
||||
"location": 0
|
||||
}
|
||||
],
|
||||
"text": "Step 3 When finished, return to the Verizon app."
|
||||
}
|
||||
},
|
||||
{
|
||||
"spacing": 48,
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"fontStyle": "BoldBodyLarge",
|
||||
"moleculeName": "label",
|
||||
"accessibilityTraits": [
|
||||
"header"
|
||||
],
|
||||
"text": "How does Face ID work?"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "Face ID is a technology that maps the unique geometry of your face and uses it to authenticate you on apps and services. It adapts to changes, such as makeup and facial hair, and works with hats, scarves, glasses, etc.",
|
||||
"fontStyle": "RegularBodyLarge"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "Once your Face ID is stored, you can use it to access your Verizon account.",
|
||||
"fontStyle": "RegularBodyLarge"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"fontStyle": "RegularBodyLarge",
|
||||
"moleculeName": "label",
|
||||
"attributes": [
|
||||
{
|
||||
"length": 7,
|
||||
"type": "action",
|
||||
"location": 78,
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"browserUrl": "https://support.apple.com/en-us/HT208109"
|
||||
}
|
||||
},
|
||||
{
|
||||
"length": 14,
|
||||
"type": "action",
|
||||
"location": 87,
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"browserUrl": "https://www.apple.com/privacy/control/#:~:text=Touch%20ID%20and%20Face%20ID&text=Your%20fingerprint%20or%20face%20data,extraordinary%20measures%20to%20protect%20it"
|
||||
}
|
||||
},
|
||||
{
|
||||
"length": 15,
|
||||
"type": "action",
|
||||
"location": 106,
|
||||
"action": {
|
||||
"actionType": "openURL",
|
||||
"browserUrl": "https://support.apple.com/en-us/HT208108"
|
||||
}
|
||||
}
|
||||
],
|
||||
"text": "To learn more about using Face ID on your device, please visit Apple's pages: Support, Privacy Policy and Security Guides."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"hideWishList": true,
|
||||
"hideShopCart": true,
|
||||
"template": "stack",
|
||||
"navigationBar": {
|
||||
"moleculeName": "navigationBar",
|
||||
"backButton": {
|
||||
"image": "nav_close",
|
||||
"moleculeName": "navigationImageButton",
|
||||
"action": {
|
||||
"analyticsData": {
|
||||
"vzwi.mvmapp.LinkName": "close"
|
||||
},
|
||||
"actionType": "back"
|
||||
}
|
||||
},
|
||||
"title": "Face ID"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -131,7 +131,8 @@
|
||||
"fields": [
|
||||
"emailID",
|
||||
"firstName",
|
||||
"lastName"
|
||||
"lastName",
|
||||
"zipcode"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@ -1,91 +1,260 @@
|
||||
{
|
||||
"ResponseInfo" : {
|
||||
"type" : "Success",
|
||||
"code" : "00000"
|
||||
"ResponseInfo": {
|
||||
"type": "Success",
|
||||
"code": "00000"
|
||||
},
|
||||
"Page" : {
|
||||
"template" : "list",
|
||||
"pageType" : "x",
|
||||
"formRules": [{
|
||||
"groupName": "default",
|
||||
"rules": [{
|
||||
"type": "anyValueChanged",
|
||||
"fields": [
|
||||
"c1"
|
||||
]
|
||||
}]
|
||||
}],
|
||||
"header" : {
|
||||
"moleculeName" : "header",
|
||||
"molecule" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "x"
|
||||
"Page": {
|
||||
"template": "list",
|
||||
"pageType": "x",
|
||||
"formRules": [
|
||||
{
|
||||
"groupName": "default",
|
||||
"rules": [
|
||||
{
|
||||
"type": "anyValueChanged",
|
||||
"fields": [
|
||||
"c1"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"header": {
|
||||
"moleculeName": "header",
|
||||
"molecule": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Title"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "y"
|
||||
"body": {
|
||||
"moleculeName": "label",
|
||||
"text": "body"
|
||||
}
|
||||
}
|
||||
},
|
||||
"molecules" : [{
|
||||
"moleculeName":"listItem",
|
||||
"molecule":{
|
||||
"moleculeName" : "carousel",
|
||||
"accessibilityText":"carousel",
|
||||
"fieldKey": "c1",
|
||||
"selectedIndex": 2,
|
||||
"loop":true,
|
||||
"pagingMolecule": {
|
||||
"moleculeName":"numericCarouselIndicator"
|
||||
},
|
||||
"molecules" : [
|
||||
{
|
||||
"moleculeName" : "carouselItem",
|
||||
"backgroundColor":"red",
|
||||
"molecule" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName" : "carouselItem",
|
||||
"backgroundColor":"blue",
|
||||
"molecule" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName" : "carouselItem",
|
||||
"backgroundColor":"green",
|
||||
"molecule" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "3"
|
||||
}
|
||||
"molecules": [
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "carousel",
|
||||
"accessibilityText": "carousel",
|
||||
"fieldKey": "c1",
|
||||
"selectedIndex": 2,
|
||||
"loop": true,
|
||||
"pagingMolecule": {
|
||||
"moleculeName": "numericCarouselIndicator"
|
||||
},
|
||||
"molecules": [
|
||||
{
|
||||
"moleculeName": "carouselItem",
|
||||
"molecule": {
|
||||
"moleculeName": "tilelet",
|
||||
"color": "#000000",
|
||||
"showDropShadow": true,
|
||||
"title": {
|
||||
"moleculeName": "label",
|
||||
"text": "Title Goes Here - 1",
|
||||
"textColor": "#ffffff"
|
||||
},
|
||||
"subTitle": {
|
||||
"text": "Subtitle goes here",
|
||||
"textColor": "#ffffff"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "carouselItem",
|
||||
"molecule": {
|
||||
"moleculeName": "tilelet",
|
||||
"color": "#000000",
|
||||
"showDropShadow": true,
|
||||
"title": {
|
||||
"moleculeName": "label",
|
||||
"text": "Title Goes Here - 2",
|
||||
"textColor": "#ffffff"
|
||||
},
|
||||
"subTitle": {
|
||||
"text": "Subtitle goes here",
|
||||
"textColor": "#ffffff"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "carouselItem",
|
||||
"molecule": {
|
||||
"moleculeName": "tilelet",
|
||||
"color": "#000000",
|
||||
"showDropShadow": true,
|
||||
"title": {
|
||||
"moleculeName": "label",
|
||||
"text": "Title Goes Here - 3",
|
||||
"textColor": "#ffffff"
|
||||
},
|
||||
"subTitle": {
|
||||
"text": "Subtitle goes here",
|
||||
"textColor": "#ffffff"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "carouselItem",
|
||||
"molecule": {
|
||||
"moleculeName": "tilelet",
|
||||
"color": "#000000",
|
||||
"showDropShadow": true,
|
||||
"title": {
|
||||
"moleculeName": "label",
|
||||
"text": "Title Goes Here - 4",
|
||||
"textColor": "#ffffff"
|
||||
},
|
||||
"subTitle": {
|
||||
"text": "Subtitle goes here",
|
||||
"textColor": "#ffffff"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "carouselItem",
|
||||
"molecule": {
|
||||
"moleculeName": "tilelet",
|
||||
"color": "#000000",
|
||||
"showDropShadow": true,
|
||||
"title": {
|
||||
"moleculeName": "label",
|
||||
"text": "Title Goes Here - 5",
|
||||
"textColor": "#ffffff"
|
||||
},
|
||||
"subTitle": {
|
||||
"text": "Subtitle goes here",
|
||||
"textColor": "#ffffff"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"height": 150
|
||||
}
|
||||
],
|
||||
"height" : 300
|
||||
}}],
|
||||
"footer" : {
|
||||
"moleculeName" : "footer",
|
||||
"molecule" : {
|
||||
"moleculeName" : "twoButtonView",
|
||||
"primaryButton" : {
|
||||
"moleculeName" : "button",
|
||||
"title" : "x",
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "carousel",
|
||||
"accessibilityText": "carousel",
|
||||
"fieldKey": "c1",
|
||||
"selectedIndex": 2,
|
||||
"loop": true,
|
||||
"pagingMolecule": {
|
||||
"moleculeName": "barsCarouselIndicator"
|
||||
},
|
||||
"molecules": [
|
||||
{
|
||||
"moleculeName": "carouselItem",
|
||||
"molecule": {
|
||||
"moleculeName": "tilelet",
|
||||
"color": "#000000",
|
||||
"showDropShadow": true,
|
||||
"title": {
|
||||
"moleculeName": "label",
|
||||
"text": "Title Goes Here - 1",
|
||||
"textColor": "#ffffff"
|
||||
},
|
||||
"subTitle": {
|
||||
"text": "Subtitle goes here",
|
||||
"textColor": "#ffffff"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "carouselItem",
|
||||
"molecule": {
|
||||
"moleculeName": "tilelet",
|
||||
"color": "#000000",
|
||||
"showDropShadow": true,
|
||||
"title": {
|
||||
"moleculeName": "label",
|
||||
"text": "Title Goes Here - 2",
|
||||
"textColor": "#ffffff"
|
||||
},
|
||||
"subTitle": {
|
||||
"text": "Subtitle goes here",
|
||||
"textColor": "#ffffff"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "carouselItem",
|
||||
"molecule": {
|
||||
"moleculeName": "tilelet",
|
||||
"color": "#000000",
|
||||
"showDropShadow": true,
|
||||
"title": {
|
||||
"moleculeName": "label",
|
||||
"text": "Title Goes Here - 3",
|
||||
"textColor": "#ffffff"
|
||||
},
|
||||
"subTitle": {
|
||||
"text": "Subtitle goes here",
|
||||
"textColor": "#ffffff"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "carouselItem",
|
||||
"molecule": {
|
||||
"moleculeName": "tilelet",
|
||||
"color": "#000000",
|
||||
"showDropShadow": true,
|
||||
"title": {
|
||||
"moleculeName": "label",
|
||||
"text": "Title Goes Here - 4",
|
||||
"textColor": "#ffffff"
|
||||
},
|
||||
"subTitle": {
|
||||
"text": "Subtitle goes here",
|
||||
"textColor": "#ffffff"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "carouselItem",
|
||||
"molecule": {
|
||||
"moleculeName": "tilelet",
|
||||
"color": "#000000",
|
||||
"showDropShadow": true,
|
||||
"title": {
|
||||
"moleculeName": "label",
|
||||
"text": "Title Goes Here - 5",
|
||||
"textColor": "#ffffff"
|
||||
},
|
||||
"subTitle": {
|
||||
"text": "Subtitle goes here",
|
||||
"textColor": "#ffffff"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"height": 150
|
||||
}
|
||||
}
|
||||
],
|
||||
"footer": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName": "twoButtonView",
|
||||
"primaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "Button 1",
|
||||
"groupName": "default",
|
||||
"action" : {
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "verifyZip"
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "verifyZip"
|
||||
}
|
||||
},
|
||||
"secondaryButton" : {
|
||||
"moleculeName" : "button",
|
||||
"title" : "x",
|
||||
"action" : {
|
||||
"actionType" : "back"
|
||||
"secondaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "Button 2",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,235 +1,265 @@
|
||||
{
|
||||
"ResponseInfo": {},
|
||||
"Page": {
|
||||
"pageType": "contactUs",
|
||||
"screenHeading": "Select an international plan",
|
||||
"template": "list",
|
||||
"molecules": [{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\ndafsdssfafs"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\n\nadsfa\nadfs"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafafttttt"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "bgVideoImageContainer",
|
||||
"video": {
|
||||
"moleculeName": "video",
|
||||
"showControls": false,
|
||||
"autoPlay": true,
|
||||
"alwaysReset":true,
|
||||
"video": "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_adv_example_hevc/master.m3u8"
|
||||
},
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://mobile.vzw.com/hybridClient/is/image/VerizonWireless/mva-pib-activation"
|
||||
},
|
||||
"molecule": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName":"twoButtonView",
|
||||
"primaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"6",
|
||||
"fillColor": "white",
|
||||
"textColor": "black",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "rtlVisitUs"
|
||||
}
|
||||
},
|
||||
"secondaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"y",
|
||||
"borderColor": "white",
|
||||
"textColor": "white",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
}
|
||||
|
||||
"ResponseInfo":{
|
||||
"type":"Success",
|
||||
"code":"00000"
|
||||
},
|
||||
"Page":{
|
||||
"pageType":"onboardingBiometric",
|
||||
"template":"threeLayerFillMiddle",
|
||||
"hideFabOverlay":true,
|
||||
"tabBarHidden":true,
|
||||
"navigationBar":{
|
||||
"moleculeName":"navigationBar",
|
||||
"hidden":true
|
||||
},
|
||||
"behaviors":[
|
||||
{
|
||||
"behaviorName":"biometricSetup"
|
||||
}
|
||||
],
|
||||
"formRules":[
|
||||
{
|
||||
"groupName":"default",
|
||||
"rules":[
|
||||
{
|
||||
"type":"allRequired",
|
||||
"fields":[
|
||||
"t&c"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"middle":{
|
||||
"moleculeName":"stack",
|
||||
"useHorizontalMargins":true,
|
||||
"verticalAlignment":"trailing",
|
||||
"molecules":[
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"image",
|
||||
"image":"face_id_logo",
|
||||
"height":68
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"center",
|
||||
"spacing":48,
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"Turn on Face ID",
|
||||
"fontStyle":"RegularTitleLarge",
|
||||
"textAlignment":"center"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"Use facial recognition instead of your password for quick and secure sign in.",
|
||||
"textAlignment":"center"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"Your biometric information will only be stored on your device. Verizon will not store or have access to this information.",
|
||||
"textAlignment":"center"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"label",
|
||||
"text":"Face ID can be turned on or off at any time from your app settings.",
|
||||
"textAlignment":"center"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"center",
|
||||
"molecule":{
|
||||
"moleculeName":"link",
|
||||
"title":"Learn more about Face ID",
|
||||
"action":{
|
||||
"actionType":"openPage",
|
||||
"pageType":"learnMoreFaceID"
|
||||
}
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\n\nadsfa\nadfs"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafafttttt"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "bgVideoImageContainer",
|
||||
"video": {
|
||||
"moleculeName": "video",
|
||||
"showControls": false,
|
||||
"autoPlay": true,
|
||||
"alwaysReset":true,
|
||||
"video": "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_adv_example_hevc/master.m3u8"
|
||||
},
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://mobile.vzw.com/hybridClient/is/image/VerizonWireless/mva-pib-activation"
|
||||
},
|
||||
"molecule": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName":"twoButtonView",
|
||||
"primaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"9",
|
||||
"fillColor": "white",
|
||||
"textColor": "black",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "rtlVisitUs"
|
||||
}
|
||||
},
|
||||
"secondaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"y",
|
||||
"borderColor": "white",
|
||||
"textColor": "white",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\n\nadsfa\nadfs"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafafttttt"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "bgVideoImageContainer",
|
||||
"video": {
|
||||
"moleculeName": "video",
|
||||
"showControls": false,
|
||||
"autoPlay": true,
|
||||
"alwaysReset":true,
|
||||
"video": "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_adv_example_hevc/master.m3u8"
|
||||
},
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://mobile.vzw.com/hybridClient/is/image/VerizonWireless/mva-pib-activation"
|
||||
},
|
||||
"molecule": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName":"twoButtonView",
|
||||
"primaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"12",
|
||||
"fillColor": "white",
|
||||
"textColor": "black",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "rtlVisitUs"
|
||||
}
|
||||
},
|
||||
"secondaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"y",
|
||||
"borderColor": "white",
|
||||
"textColor": "white",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}],
|
||||
"middle": {
|
||||
"moleculeName": "bgVideoImageContainer",
|
||||
"verticalAlignment": "trailing",
|
||||
"video": {
|
||||
"moleculeName": "video",
|
||||
"showControls": false,
|
||||
"autoPlay": true,
|
||||
"video": "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_adv_example_hevc/master.m3u8"
|
||||
},
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://mobile.vzw.com/hybridClient/is/image/VerizonWireless/mva-pib-activation"
|
||||
},
|
||||
"molecule": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName":"twoButtonView",
|
||||
"primaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"x",
|
||||
"fillColor": "white",
|
||||
"textColor": "black",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "rtlVisitUs"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"stackItem",
|
||||
"horizontalAlignment":"center",
|
||||
"spacing":32,
|
||||
"molecule":{
|
||||
"moleculeName":"checkboxLabel",
|
||||
"label":{
|
||||
"moleculeName":"label",
|
||||
"text":"I accept the Terms and Conditions that will force the screen to ameke a asd wer",
|
||||
"fontStyle":"RegularBodySmall",
|
||||
"attributes":[
|
||||
{
|
||||
"length":20,
|
||||
"location":13,
|
||||
"type":"action",
|
||||
"action":{
|
||||
"analyticsData":{
|
||||
"vzdl.page.id":"turnOnFaceIdConfirmationPage",
|
||||
"vzdl.page.name":"enable biometric faceid",
|
||||
"vzdl.page.displayChannel":"mva",
|
||||
"vzdl.target.engagement.intent":"biometric",
|
||||
"vzdl.page.linkName":"tnc",
|
||||
"vzdl.page.sourceChannel":"mva"
|
||||
},
|
||||
"presentationStyle":"push",
|
||||
"pageType":"biometricTnC",
|
||||
"actionType":"openPage"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"secondaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"y",
|
||||
"borderColor": "white",
|
||||
"textColor": "white",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
"subTitle":{
|
||||
"moleculeName":"label",
|
||||
"text":"I accept the Terms and Conditions that will force the screen to ameke a asd wer"
|
||||
},
|
||||
"checkbox":{
|
||||
"moleculeName":"checkbox",
|
||||
"groupName":"default",
|
||||
"required":true,
|
||||
"fieldKey":"t&c"
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"footer":{
|
||||
"moleculeName":"footer",
|
||||
"molecule":{
|
||||
"moleculeName":"buttonGroup",
|
||||
"rowQuantityPhone":1,
|
||||
"rowQuantityTablet":1,
|
||||
"childWidthPercentage":100,
|
||||
"buttons":[
|
||||
{
|
||||
"moleculeName":"button",
|
||||
"title":"Turn on",
|
||||
"style":"secondary",
|
||||
"groupName":"default",
|
||||
"action":{
|
||||
"actionType":"biometricState",
|
||||
"biometricsDeniedAction":{
|
||||
"requestURL":"https:\/\/mobile-exp-qa1-west-2.vzw.com\/mobile\/nsa\/psecure\/gw\/launchapp\/continueFaceId",
|
||||
"extraParameters":{
|
||||
"referrer":"SOE"
|
||||
},
|
||||
"actionType":"openPage",
|
||||
"presentationStyle":"replace",
|
||||
"pageType":"continueFaceId"
|
||||
},
|
||||
"biometricsDisabledAction":{
|
||||
"alert":{
|
||||
"title":"Face ID must be enabled in iOS",
|
||||
"message":"Please navigate to iOS Settings > Face ID & Passcode > Set up Face ID",
|
||||
"alertActions":[
|
||||
{
|
||||
"style":"cancel",
|
||||
"action":{
|
||||
"analyticsData":{
|
||||
"vzdl.page.id":"turnOnFaceIdConfirmationPage_V2",
|
||||
"vzdl.page.sourceChannel":"mva",
|
||||
"vzdl.page.displayChannel":"mva",
|
||||
"vzdl.page.name":"enable biometric faceid V2",
|
||||
"vzdl.page.linkName":"done popup",
|
||||
"vzdl.page.pageTypeLinkname":"turnOnFaceIdConfirmationPage_V2|done popup"
|
||||
},
|
||||
"actionType":"cancel"
|
||||
},
|
||||
"title":"OK"
|
||||
}
|
||||
]
|
||||
},
|
||||
"actionType":"alert"
|
||||
},
|
||||
"biometricsEnabledAction":{
|
||||
"actionType":"registerFIDO",
|
||||
"fidoGuid":"4496d0b1-8ec2-4f58-b32a-8828f898f544",
|
||||
"userIdentifier":"2243219982",
|
||||
"fidoRegistrationError":"Failed to setup biometric, please try again later.",
|
||||
"accessToken":"rX9mo77dAGpcatTM8V7Me9dHLpmiLSLT1r5Ogucqbmt56FqbF8ziQzQ7DpSEHZqcwd4TpCknfzITgEbnUA5le4OVMvrrGCXUFn6f",
|
||||
"onSuccess":{
|
||||
"actions":[
|
||||
{
|
||||
"topNotification":{
|
||||
"analyticsData":{
|
||||
"vzdl.page.sourceChannel":"mva",
|
||||
"vzdl.page.pageTypeLinkname":"turnOnFaceIdConfirmationPage_V2|notification:Face ID enabled",
|
||||
"vzdl.page.linkName":"notification:Face ID enabled",
|
||||
"vzdl.page.displayChannel":"mva",
|
||||
"vzdl.events.shownInAppMsg":"1",
|
||||
"vzdl.page.id":"turnOnFaceIdConfirmationPage_V2",
|
||||
"vzdl.page.name":"enable biometric faceid V2"
|
||||
},
|
||||
"type":"biometricConfirmation",
|
||||
"molecule":{
|
||||
"body":{
|
||||
"moleculeName":"label",
|
||||
"text":"You can use Face ID next time your sign in to this app."
|
||||
},
|
||||
"closeButton":{
|
||||
"moleculeName":"notificationXButton"
|
||||
},
|
||||
"moleculeName":"notification",
|
||||
"style":"success",
|
||||
"headline":{
|
||||
"moleculeName":"label",
|
||||
"text":"Face ID enabled"
|
||||
}
|
||||
}
|
||||
},
|
||||
"actionType":"topNotification"
|
||||
},
|
||||
{
|
||||
"requestURL":"https:\/\/mobile-exp-qa1-west-2.vzw.com\/mobile\/nsa\/psecure\/gw\/launchapp\/continueFaceId",
|
||||
"analyticsData":{
|
||||
"vzdl.page.id":"turnOnFaceIdConfirmationPage_V2",
|
||||
"vzdl.page.sourceChannel":"mva",
|
||||
"vzdl.page.displayChannel":"mva",
|
||||
"vzdl.page.name":"enable biometric faceid V2",
|
||||
"vzdl.page.linkName":"turn on",
|
||||
"vzdl.page.pageTypeLinkname":"turnOnFaceIdConfirmationPage_V2|turn on"
|
||||
},
|
||||
"extraParameters":{
|
||||
"referrer":"SOE"
|
||||
},
|
||||
"actionType":"openPage",
|
||||
"presentationStyle":"replace",
|
||||
"pageType":"continueFaceId"
|
||||
}
|
||||
],
|
||||
"actionType":"actions"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName":"link",
|
||||
"title":"Skip",
|
||||
"style":"secondary",
|
||||
"groupName":"nonForm",
|
||||
"action":{
|
||||
"actionType":"openPage",
|
||||
"pageType":"biometricSkip"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,232 +1,720 @@
|
||||
{
|
||||
"ResponseInfo": {},
|
||||
"Page": {
|
||||
"pageType": "contactUs",
|
||||
"screenHeading": "Select an international plan",
|
||||
"template": "list",
|
||||
"molecules": [{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\ndafsdssfafs"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\n\nadsfa\nadfs"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafafttttt"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "bgVideoImageContainer",
|
||||
"video": {
|
||||
"moleculeName": "video",
|
||||
"showControls": false,
|
||||
"autoPlay": true,
|
||||
"video": "https://mobile.vzw.com/hybridClient/is/content/VerizonWireless/AKQA%20Assets/AKQA%20Assets%20(12_17%20onward)/PIB_Flow_opening.mp4"
|
||||
},
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://mobile.vzw.com/hybridClient/is/image/VerizonWireless/mva-pib-activation"
|
||||
},
|
||||
"molecule": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName":"twoButtonView",
|
||||
"primaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"6",
|
||||
"fillColor": "white",
|
||||
"textColor": "black",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "rtlVisitUs"
|
||||
}
|
||||
},
|
||||
"secondaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"y",
|
||||
"borderColor": "white",
|
||||
"textColor": "white",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\n\nadsfa\nadfs"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafafttttt"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "bgVideoImageContainer",
|
||||
"video": {
|
||||
"moleculeName": "video",
|
||||
"showControls": false,
|
||||
"autoPlay": true,
|
||||
"video": "https://ss7.vzw.com/is/content/VerizonWireless/5g-home/gemini/4_speedtest/430_speedtest_on.mp4"
|
||||
},
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://mobile.vzw.com/hybridClient/is/image/VerizonWireless/mva-pib-activation"
|
||||
},
|
||||
"molecule": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName":"twoButtonView",
|
||||
"primaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"9",
|
||||
"fillColor": "white",
|
||||
"textColor": "black",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "rtlVisitUs"
|
||||
}
|
||||
},
|
||||
"secondaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"y",
|
||||
"borderColor": "white",
|
||||
"textColor": "white",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafaf\n\nadsfa\nadfs"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "label",
|
||||
"text": "afa\ndasfdsa\nadfadfda\nasadfsafa\nafsafsa\nafsadfas\nadffafafttttt"
|
||||
}
|
||||
},{
|
||||
"moleculeName":"listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "bgVideoImageContainer",
|
||||
"video": {
|
||||
"moleculeName": "video",
|
||||
"showControls": false,
|
||||
"autoPlay": true,
|
||||
"video": "https://ss7.vzw.com/is/content/VerizonWireless/5g-home/gemini/3_mount/360_swivel.mp4"
|
||||
},
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://mobile.vzw.com/hybridClient/is/image/VerizonWireless/mva-pib-activation"
|
||||
},
|
||||
"molecule": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName":"twoButtonView",
|
||||
"primaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"12",
|
||||
"fillColor": "white",
|
||||
"textColor": "black",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "rtlVisitUs"
|
||||
}
|
||||
},
|
||||
"secondaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"y",
|
||||
"borderColor": "white",
|
||||
"textColor": "white",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}],
|
||||
"middle": {
|
||||
"moleculeName": "bgVideoImageContainer",
|
||||
"verticalAlignment": "trailing",
|
||||
"video": {
|
||||
"moleculeName": "video",
|
||||
"showControls": false,
|
||||
"autoPlay": true,
|
||||
"video": "https://mobile.vzw.com/hybridClient/is/content/VerizonWireless/AKQA%20Assets/AKQA%20Assets%20(12_17%20onward)/PIB_Flow_opening.mp4"
|
||||
},
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://mobile.vzw.com/hybridClient/is/image/VerizonWireless/mva-pib-activation"
|
||||
},
|
||||
"molecule": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName":"twoButtonView",
|
||||
"primaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"x",
|
||||
"fillColor": "white",
|
||||
"textColor": "black",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "rtlVisitUs"
|
||||
}
|
||||
},
|
||||
"secondaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"y",
|
||||
"borderColor": "white",
|
||||
"textColor": "white",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
"ResponseInfo" : {
|
||||
"appSessionExtended" : true,
|
||||
"timeStamp" : "575",
|
||||
"mdn" : "7324270455",
|
||||
"message" : "0",
|
||||
"correlationId" : "4f030dfd-90c0-416a-bae3-1ac7be8dd79d",
|
||||
"server" : "144-70-50-10.vpc.verizon.com-mf_postpayss01",
|
||||
"topAlertTime" : 0,
|
||||
"locale" : "EN",
|
||||
"type" : "Success",
|
||||
"requestId" : "4f030dfd-90c0-416a-bae3-1ac7be8dd79d",
|
||||
"code" : "00000",
|
||||
"buildNumber" : "1120",
|
||||
"userMessage" : "0"
|
||||
},
|
||||
"Page" : {
|
||||
"header" : {
|
||||
"moleculeName" : "header",
|
||||
"molecule" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Set privacy preferences.",
|
||||
"accessibilityText" : "Set privacy preferences, heading level 1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pageType" : "privacyPreferences",
|
||||
"molecules" : [
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"molecule" : {
|
||||
"moleculeName" : "stack",
|
||||
"axis" : "vertical",
|
||||
"molecules" : [
|
||||
{
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Customer Proprietary Network Info",
|
||||
"accessibilityTraits" : [
|
||||
"header"
|
||||
]
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Allow Sharing"
|
||||
}
|
||||
},
|
||||
"moleculeName" : "headlineBodyToggle",
|
||||
"toggle" : {
|
||||
"accessibilityText" : "Customer Proprietary Network Info",
|
||||
"id" : "cust_1001",
|
||||
"state" : false,
|
||||
"moleculeName" : "toggle",
|
||||
"enabled" : true,
|
||||
"action" : {
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "updatePrivacyPreferences",
|
||||
"extraParameters" : {
|
||||
"id" : "cust_1001",
|
||||
"cpniIndicator" : "Y",
|
||||
"selectedMdn" : "7324270455"
|
||||
},
|
||||
"presentationStyle" : "push",
|
||||
"openInWebview" : true,
|
||||
"tryToReplaceFirst" : false,
|
||||
"openOauthWebView" : false,
|
||||
"showNativeNavigation" : false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"accessibilityText" : "Tell me more about Customer Proprietary Network Info",
|
||||
"title" : "Tell me more",
|
||||
"moleculeName" : "link",
|
||||
"action" : {
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "cpniInformation"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"molecule" : {
|
||||
"moleculeName" : "stack",
|
||||
"axis" : "vertical",
|
||||
"molecules" : [
|
||||
{
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Business and Marketing Insights",
|
||||
"accessibilityTraits" : [
|
||||
"header"
|
||||
]
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Allow use of information"
|
||||
}
|
||||
},
|
||||
"moleculeName" : "headlineBodyToggle",
|
||||
"toggle" : {
|
||||
"accessibilityText" : "Business and Marketing Insights",
|
||||
"id" : "cust_1002",
|
||||
"state" : false,
|
||||
"moleculeName" : "toggle",
|
||||
"enabled" : true,
|
||||
"action" : {
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "updatePrivacyPreferences",
|
||||
"extraParameters" : {
|
||||
"id" : "cust_1002",
|
||||
"bmrIndicator" : "Y",
|
||||
"selectedMdn" : "7324270455"
|
||||
},
|
||||
"presentationStyle" : "push",
|
||||
"openInWebview" : true,
|
||||
"tryToReplaceFirst" : false,
|
||||
"openOauthWebView" : false,
|
||||
"showNativeNavigation" : false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"accessibilityText" : "Tell me more about Business and Marketing Insights",
|
||||
"title" : "Tell me more",
|
||||
"moleculeName" : "link",
|
||||
"action" : {
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "bmrInformation"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"molecule" : {
|
||||
"moleculeName" : "stack",
|
||||
"axis" : "vertical",
|
||||
"molecules" : [
|
||||
{
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Custom Experience",
|
||||
"accessibilityTraits" : [
|
||||
"header"
|
||||
]
|
||||
}
|
||||
},
|
||||
"moleculeName" : "headlineBodyToggle",
|
||||
"toggle" : {
|
||||
"accessibilityText" : "Custom Experience",
|
||||
"id" : "cust_1003",
|
||||
"state" : false,
|
||||
"moleculeName" : "toggle",
|
||||
"enabled" : true,
|
||||
"action" : {
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "updatePrivacyPreferences",
|
||||
"extraParameters" : {
|
||||
"id" : "cust_1003",
|
||||
"oeIndicator" : "Y",
|
||||
"selectedMdn" : "7324270455"
|
||||
},
|
||||
"presentationStyle" : "push",
|
||||
"openInWebview" : true,
|
||||
"tryToReplaceFirst" : false,
|
||||
"openOauthWebView" : false,
|
||||
"showNativeNavigation" : false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"spacing" : 0,
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"accessibilityText" : "Tell me more about Custom Experience",
|
||||
"title" : "Tell me more",
|
||||
"moleculeName" : "link",
|
||||
"action" : {
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "oeInformation"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"molecule" : {
|
||||
"moleculeName" : "stack",
|
||||
"axis" : "vertical",
|
||||
"molecules" : [
|
||||
{
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Custom Experience Plus",
|
||||
"accessibilityTraits" : [
|
||||
"header"
|
||||
]
|
||||
}
|
||||
},
|
||||
"moleculeName" : "headlineBodyToggle",
|
||||
"toggle" : {
|
||||
"accessibilityText" : "Custom Experience Plus",
|
||||
"id" : "cust_1004",
|
||||
"state" : false,
|
||||
"moleculeName" : "toggle",
|
||||
"enabled" : true,
|
||||
"action" : {
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "participationAgreement",
|
||||
"presentationStyle" : "push",
|
||||
"openInWebview" : true,
|
||||
"tryToReplaceFirst" : false,
|
||||
"openOauthWebView" : false,
|
||||
"showNativeNavigation" : false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"spacing" : 0,
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"accessibilityText" : "Tell me more about Custom Experience Plus",
|
||||
"title" : "Tell me more",
|
||||
"moleculeName" : "link",
|
||||
"action" : {
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "oepInformation"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Custom Experience Settings",
|
||||
"fontStyle" : "B1"
|
||||
}
|
||||
},
|
||||
"moleculeName" : "list1CFWBdy",
|
||||
"action" : {
|
||||
"disabled" : false,
|
||||
"extraParameters" : {
|
||||
"selectedMdn" : "7324270455"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "vzwSelects"
|
||||
}
|
||||
},
|
||||
{
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Identity Verification Settings",
|
||||
"fontStyle" : "B1"
|
||||
}
|
||||
},
|
||||
"moleculeName" : "list1CFWBdy",
|
||||
"action" : {
|
||||
"disabled" : false,
|
||||
"extraParameters" : {
|
||||
"selectedMdn" : "7324270455"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"pageType" : "cdiFraudSettings"
|
||||
}
|
||||
},
|
||||
{
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Privacy policy",
|
||||
"fontStyle" : "B1"
|
||||
}
|
||||
},
|
||||
"moleculeName" : "list1CFWBdy",
|
||||
"action" : {
|
||||
"disabled" : false,
|
||||
"browserUrl" : "https:\/\/www.verizon.com\/about\/privacy\/privacy-policy-summary",
|
||||
"actionType" : "openURL",
|
||||
"pageType" : "privacyPolicy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"molecule" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Not seeing your updates?",
|
||||
"accessibilityText" : "Not seeing your updates?, heading level 2"
|
||||
},
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Changes may take up to 15 minutes to appear."
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"suppressPostLaunchRequests" : false,
|
||||
"tabBarHidden" : false,
|
||||
"cache" : true,
|
||||
"hideFabOverlay" : true,
|
||||
"pageStatNames" : [
|
||||
"\/vision\/customer\/profile",
|
||||
"\/mf\/intl\/plan\/current\/features",
|
||||
"\/mf\/dns\/flags\/inquiry",
|
||||
"unknown",
|
||||
"\/mf\/acctount\/settings\/privacy"
|
||||
],
|
||||
"template" : "list",
|
||||
"navigationBar" : {
|
||||
"moleculeName" : "navigationBar",
|
||||
"title" : "Privacy preferences"
|
||||
}
|
||||
},
|
||||
"PageMap" : {
|
||||
"participationAgreement" : {
|
||||
"footer" : {
|
||||
"moleculeName" : "footer",
|
||||
"molecule" : {
|
||||
"moleculeName" : "twoButtonView",
|
||||
"primaryButton" : {
|
||||
"moleculeName" : "button",
|
||||
"action" : {
|
||||
"extraParameters" : {
|
||||
"oepIndicator" : "Y",
|
||||
"selectedMdn" : "7324270455"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"title" : "Accept",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "updatePrivacyPreferences"
|
||||
},
|
||||
"title" : "Accept"
|
||||
},
|
||||
"secondaryButton" : {
|
||||
"moleculeName" : "button",
|
||||
"action" : {
|
||||
"extraParameters" : {
|
||||
"selectedMdn" : "7324270455"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"title" : "Not now",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "privacyPreferences"
|
||||
},
|
||||
"title" : "Not now"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pageType" : "participationAgreement",
|
||||
"molecules" : [
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"molecule" : {
|
||||
"moleculeName" : "label",
|
||||
"attributes" : [
|
||||
{
|
||||
"length" : 13,
|
||||
"type" : "action",
|
||||
"location" : 1013,
|
||||
"action" : {
|
||||
"browserUrl" : "https:\/\/www.verizon.com\/support\/verizon-custom-experience-programs-faqs\/",
|
||||
"actionType" : "openURL",
|
||||
"openInWebview" : true,
|
||||
"disabled" : false
|
||||
}
|
||||
}
|
||||
],
|
||||
"text" : "Verizon Custom Experience Plus helps us personalize our communication with you, give you more relevant product and service recommendations, and develop plans, services and offers and are more appealing to you.\n\nThe program uses information about websites you visit and apps you use on your mobile device, device location and Customer Proprietary Network Information (CPNI), including phone numbers you call or that call you, to help us understand your interests, like “sports lover” or “gamer.”\n\nWe protect your information, as required by federal law, and use it only for Verizon purposes; we do not sell information we use in the programs to others for them to use for their own advertising.\n\nYou must opt in to participate and you can change your choice at any time.\n\nIf you participate in Custom Experience Plus, you will also be included in the Custom Experience and Business and Marketing Insights programs.\n\nYour choice here won't affect any other Verizon services.\n\nAdditional details are available in our Program FAQs."
|
||||
}
|
||||
}
|
||||
],
|
||||
"suppressPostLaunchRequests" : false,
|
||||
"tabBarHidden" : false,
|
||||
"cache" : true,
|
||||
"header" : {
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Do you want to enroll in Verizon Custom Experience Plus?"
|
||||
}
|
||||
},
|
||||
"moleculeName" : "headerH2"
|
||||
},
|
||||
"template" : "list",
|
||||
"navigationBar" : {
|
||||
"moleculeName" : "navigationBar",
|
||||
"title" : "Custom Experience Plus"
|
||||
}
|
||||
},
|
||||
"oeInformation" : {
|
||||
"footer" : {
|
||||
"moleculeName" : "footer",
|
||||
"molecule" : {
|
||||
"moleculeName" : "button",
|
||||
"action" : {
|
||||
"actionType" : "back",
|
||||
"pageType" : "back"
|
||||
},
|
||||
"title" : "Got it"
|
||||
}
|
||||
},
|
||||
"pageType" : "oeInformation",
|
||||
"molecules" : [
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"molecule" : {
|
||||
"moleculeName" : "label",
|
||||
"attributes" : [
|
||||
{
|
||||
"length" : 12,
|
||||
"type" : "action",
|
||||
"location" : 646,
|
||||
"action" : {
|
||||
"browserUrl" : "https:\/\/www.verizon.com\/support\/verizon-custom-experience-programs-faqs\/",
|
||||
"actionType" : "openURL",
|
||||
"openInWebview" : true,
|
||||
"disabled" : false
|
||||
}
|
||||
}
|
||||
],
|
||||
"text" : "Verizon Custom Experience helps us personalize our communications with you, give you more relevant product and service recommendations, and develop plans, services and offers that are more appealing to you.\n\nThe program uses information about websites you visit and apps you use on your mobile device to help us better understand your interests, like “sports lover” or “outdoor enthusiast.”\n\nWe protect your information and use it only for Verizon purposes; we do not sell information we use in the program to others for them to use for their own advertising.\n\nYou can opt out of this program at any time. Additional details are available in our Program FAQs."
|
||||
}
|
||||
}
|
||||
],
|
||||
"suppressPostLaunchRequests" : false,
|
||||
"tabBarHidden" : true,
|
||||
"cache" : true,
|
||||
"screenHeading" : "Custom Experience",
|
||||
"header" : {
|
||||
"moleculeName" : "header",
|
||||
"molecule" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Here are the details"
|
||||
}
|
||||
}
|
||||
},
|
||||
"template" : "list",
|
||||
"navigationBar" : {
|
||||
"moleculeName" : "navigationBar",
|
||||
"backButton" : {
|
||||
"accessibilityText" : "Close",
|
||||
"moleculeName" : "navigationImageButton",
|
||||
"image" : "nav_close",
|
||||
"action" : {
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "close"
|
||||
},
|
||||
"title" : "Close",
|
||||
"actionType" : "back",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "back"
|
||||
}
|
||||
},
|
||||
"title" : "Custom Experience"
|
||||
}
|
||||
},
|
||||
"oepInformation" : {
|
||||
"footer" : {
|
||||
"moleculeName" : "footer",
|
||||
"molecule" : {
|
||||
"moleculeName" : "button",
|
||||
"action" : {
|
||||
"actionType" : "back",
|
||||
"pageType" : "back"
|
||||
},
|
||||
"title" : "Got it"
|
||||
}
|
||||
},
|
||||
"pageType" : "oepInformation",
|
||||
"molecules" : [
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"molecule" : {
|
||||
"moleculeName" : "label",
|
||||
"attributes" : [
|
||||
{
|
||||
"length" : 12,
|
||||
"type" : "action",
|
||||
"location" : 1013,
|
||||
"action" : {
|
||||
"browserUrl" : "https:\/\/www.verizon.com\/support\/verizon-custom-experience-programs-faqs\/",
|
||||
"actionType" : "openURL",
|
||||
"openInWebview" : true,
|
||||
"disabled" : false
|
||||
}
|
||||
}
|
||||
],
|
||||
"text" : "Verizon Custom Experience Plus helps us personalize our communications with you, give you more relevant product and service recommendations, and develop plans, services and offers and are more appealing to you.\n\nThe program uses information about websites you visit and apps you use on your mobile device, device location and Customer Proprietary Network Information (CPNI), including phone numbers you call or that call you, to help us understand your interests, like “sports lover” or “gamer.”\n\nWe protect your information, as required by federal law, and use it only for Verizon purposes; we do not sell information we use in the program to others for them to use for their own advertising.\n\nYou must opt in to participate and you can change your choice at any time.\n\nIf you participate in Custom Experience Plus, you will also be included in the Custom Experience and Business and Marketing Insights programs.\n\nYour choice here won’t affect any other Verizon services. Additional details are available in our Program FAQs."
|
||||
}
|
||||
}
|
||||
],
|
||||
"suppressPostLaunchRequests" : false,
|
||||
"tabBarHidden" : true,
|
||||
"cache" : true,
|
||||
"screenHeading" : "Custom Experience Plus",
|
||||
"header" : {
|
||||
"moleculeName" : "header",
|
||||
"molecule" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Here are the details"
|
||||
}
|
||||
}
|
||||
},
|
||||
"template" : "list",
|
||||
"navigationBar" : {
|
||||
"moleculeName" : "navigationBar",
|
||||
"backButton" : {
|
||||
"accessibilityText" : "Close",
|
||||
"moleculeName" : "navigationImageButton",
|
||||
"image" : "nav_close",
|
||||
"action" : {
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "close"
|
||||
},
|
||||
"title" : "Close",
|
||||
"actionType" : "back",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "back"
|
||||
}
|
||||
},
|
||||
"title" : "Custom Experience Plus"
|
||||
}
|
||||
},
|
||||
"cpniInformation" : {
|
||||
"template" : "list",
|
||||
"footer" : {
|
||||
"moleculeName" : "footer",
|
||||
"molecule" : {
|
||||
"moleculeName" : "button",
|
||||
"action" : {
|
||||
"actionType" : "back",
|
||||
"pageType" : "back"
|
||||
},
|
||||
"title" : "Done"
|
||||
}
|
||||
},
|
||||
"molecules" : [
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"molecule" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "CPNI is information made available to us solely by virtue of our relationship with you that relates to the type, quantity, destination, technical configuration, location, and amount of use of the telecommunications and interconnected VoIP services you purchase from us, as well as related billing information. The protection of your information is important to us, and you have a right, and we have a duty, under federal law, to protect the confidentiality of your CPNI.\n\nWe may use and share your CPNI among our affiliates and agents to offer you services that are different from the services you currently purchase from us. Verizon offers a full range of services, such as television, telematics, high-speed Internet, video, and local and long distance services. Visit Verizon.com for more information on our services and companies.\n\nIf you don't want your CPNI used for the marketing purposes described above, please notify us by phone any time at 1-800-333-9956 or by modifying the elections below.\n\nUnless you notify us in one of these ways, we may use your CPNI as described above beginning 30 days after the first time we notify you of this CPNI policy. Your choice will remain valid until you notify us that you wish to change your selection. Your decision about use of your CPNI will not affect the provision of any services you currently have with us.\n\nNote: This CPNI notice does not apply to residents of the state of Arizona."
|
||||
}
|
||||
}
|
||||
],
|
||||
"screenHeading" : "CPN Information",
|
||||
"hideFabOverlay" : true,
|
||||
"cache" : true,
|
||||
"header" : {
|
||||
"moleculeName" : "header",
|
||||
"molecule" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Customer Proprietary Network Information"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pageType" : "cpniInformation",
|
||||
"suppressPostLaunchRequests" : false,
|
||||
"navigationBar" : {
|
||||
"moleculeName" : "navigationBar",
|
||||
"backButton" : {
|
||||
"accessibilityText" : "Close",
|
||||
"moleculeName" : "navigationImageButton",
|
||||
"image" : "nav_close",
|
||||
"action" : {
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "close"
|
||||
},
|
||||
"title" : "Close",
|
||||
"actionType" : "back",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "back"
|
||||
}
|
||||
},
|
||||
"title" : "CPN info"
|
||||
},
|
||||
"tabBarHidden" : true
|
||||
},
|
||||
"bmrInformation" : {
|
||||
"template" : "list",
|
||||
"footer" : {
|
||||
"moleculeName" : "footer",
|
||||
"molecule" : {
|
||||
"moleculeName" : "button",
|
||||
"action" : {
|
||||
"actionType" : "back",
|
||||
"pageType" : "back"
|
||||
},
|
||||
"title" : "Done"
|
||||
}
|
||||
},
|
||||
"molecules" : [
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"molecule" : {
|
||||
"moleculeName" : "label",
|
||||
"attributes" : [
|
||||
{
|
||||
"length" : 26,
|
||||
"type" : "action",
|
||||
"location" : 1058,
|
||||
"action" : {
|
||||
"browserUrl" : "https:\/\/www.verizon.com\/support\/business-marketing-reports-faqs\/",
|
||||
|
||||
"actionType" : "openURL",
|
||||
"openInWebview" : true,
|
||||
"disabled" : false
|
||||
}
|
||||
}
|
||||
],
|
||||
"text" : "Business and marketing insights help us and others better understand consumer actions in aggregate. For example, we may create insights about the number of customers in different age groups who visit a website, use an app, or go to a retail store or stadium. We also may develop insights to help estimate traffic patterns about people who move from one area to another during the morning rush hour. The information we use and the insights we create do not identify you individually.\n\nWe use information about how you use your mobile device (such as web browsing, device location, and app\/feature use, certain information about your Verizon products and services (such as device type and amount of use) and demographic and interest information we get from you or from other companies (such as gender, age range and interests). We also use location and point of interest information we obtain from others. We may also use information provided by business and marketing insights clients who want to better understand their own customers or businesses.\n\nSee our Frequently Asked Questions for more information.\n\nYou have a choice about whether your Verizon information is used in the Business and Marketing Insights program. Please note, if you opt in to the Verizon Custom Experience Plus program, you will also be a part of the Business and Marketing Insights program independent of your choice here."
|
||||
}
|
||||
}
|
||||
],
|
||||
"screenHeading" : "Business and Marketing Insights",
|
||||
"hideFabOverlay" : true,
|
||||
"cache" : true,
|
||||
"header" : {
|
||||
"moleculeName" : "header",
|
||||
"molecule" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Business and Marketing Insights"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pageType" : "bmrInformation",
|
||||
"suppressPostLaunchRequests" : false,
|
||||
"navigationBar" : {
|
||||
"moleculeName" : "navigationBar",
|
||||
"backButton" : {
|
||||
"accessibilityText" : "Close",
|
||||
"moleculeName" : "navigationImageButton",
|
||||
"image" : "nav_close",
|
||||
"action" : {
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "close"
|
||||
},
|
||||
"title" : "Close",
|
||||
"actionType" : "back",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "back"
|
||||
}
|
||||
},
|
||||
"title" : "Business and Marketing In..."
|
||||
},
|
||||
"tabBarHidden" : true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,48 +1,338 @@
|
||||
{
|
||||
"ResponseInfo": {},
|
||||
"Page": {
|
||||
"pageType": "planSelectionPageType",
|
||||
"screenHeading": "Select an international plan",
|
||||
"template": "threeLayerFillMiddle",
|
||||
"middle": {
|
||||
"moleculeName": "bgVideoImageContainer",
|
||||
"verticalAlignment": "trailing",
|
||||
"video": {
|
||||
"moleculeName": "video",
|
||||
"showControls": false,
|
||||
"autoPlay": true,
|
||||
"video": "https://mobile.vzw.com/hybridClient/is/content/VerizonWireless/AKQA%20Assets/AKQA%20Assets%20(12_17%20onward)/PIB_Flow_opening.mp4"
|
||||
},
|
||||
"image": {
|
||||
"moleculeName": "image",
|
||||
"image": "https://mobile.vzw.com/hybridClient/is/image/VerizonWireless/mva-pib-activation"
|
||||
},
|
||||
"molecule": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName":"twoButtonView",
|
||||
"primaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"x",
|
||||
"fillColor": "white",
|
||||
"textColor": "black",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "videotest"
|
||||
}
|
||||
},
|
||||
"secondaryButton":{
|
||||
"moleculeName": "button",
|
||||
"title":"y",
|
||||
"borderColor": "white",
|
||||
"textColor": "white",
|
||||
"action": {
|
||||
"actionType": "back"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
"ResponseInfo" : {
|
||||
"locale" : "EN",
|
||||
"server" : "mf_prepayss01",
|
||||
"userMessage" : "0",
|
||||
"code" : "00000",
|
||||
"hideNotificationLogo" : false,
|
||||
"message" : "0",
|
||||
"buildNumber" : "2054",
|
||||
"type" : "Success",
|
||||
"requestId" : "a659c62f-9962-4788-a6ee-de8d4b92a2b8",
|
||||
"topAlertTime" : 0,
|
||||
"disableType" : "SurvivalMode"
|
||||
},
|
||||
"SystemParams" : {
|
||||
"fidoMap" : {
|
||||
"accessToken" : "c2u-Od2Qzjxv1hKLmrMGOwiGkjE",
|
||||
"fidoGuid" : "95c233fc-1607-414d-a69e-65c1757389c3"
|
||||
},
|
||||
"deviceToken" : "NYt1rMeITp1oGdlvWgudOAwLIC6bVzN97JN7WPi\/RZk2GW971L0\/ulhTgmYQam09x8mQPhGJdM+psAPN24eLtzMGCJiWv0GHbRxF5fmbGwC6Z5rxjg7LRWOlT3rvyf7F"
|
||||
},
|
||||
"Page" : {
|
||||
"analyticsData" : {
|
||||
"vzdl.page.flow" : "device landing screen",
|
||||
"vzwi.mvmapp.pageName" : "\/mf\/myDevice",
|
||||
"vzwi.mvmapp.pageType" : "myDevicesPR",
|
||||
"vzdl.page.subFlow" : "device landing screen"
|
||||
},
|
||||
"pageType" : "myDevicesPR",
|
||||
"molecules" : [
|
||||
{
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "864-399-5483",
|
||||
"fontStyle" : "RegularBodyMedium"
|
||||
},
|
||||
"moleculeName" : "listDvcBtnM",
|
||||
"button" : {
|
||||
"size" : "small",
|
||||
"title" : "Administra",
|
||||
"moleculeName" : "button",
|
||||
"enabled" : true,
|
||||
"action" : {
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "Administrar"
|
||||
},
|
||||
"extraParameters" : {
|
||||
"customerIntent" : "EUP",
|
||||
"selectedMDN" : "8643995483"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"appContext" : "mfPrepaySS",
|
||||
"pageType" : "manageDevicePR"
|
||||
}
|
||||
}
|
||||
},
|
||||
"image" : {
|
||||
"height" : 120,
|
||||
"moleculeName" : "image",
|
||||
"image" : "https:\/\/mobile.vzw.com\/hybridClient\/is\/image\/VerizonWireless\/samsung-galaxy-s10-black?$device-med$",
|
||||
"imageFormat" : "png",
|
||||
"accessibilityText" : "Samsung Galaxy S10 128 GB en negro prisma"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Tu teléfono",
|
||||
"fontStyle" : "BoldTitleLarge"
|
||||
}
|
||||
},
|
||||
{
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "NumberShare con \n864-395-9569",
|
||||
"fontStyle" : "RegularBodyMedium"
|
||||
},
|
||||
"moleculeName" : "listDvcBtnM",
|
||||
"button" : {
|
||||
"size" : "small",
|
||||
"title" : "Administra",
|
||||
"moleculeName" : "button",
|
||||
"enabled" : true,
|
||||
"action" : {
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "Administrar"
|
||||
},
|
||||
"extraParameters" : {
|
||||
"customerIntent" : "EUP",
|
||||
"selectedMDN" : "6082155795"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"appContext" : "mfPrepaySS",
|
||||
"pageType" : "manageDevicePR"
|
||||
}
|
||||
},
|
||||
"image" : {
|
||||
"height" : 120,
|
||||
"moleculeName" : "image",
|
||||
"image" : "https:\/\/mobile.vzw.com\/hybridClient\/is\/image\/VerizonWireless\/apple-watch-series-5-space-black-stainless-steel-44mm-sport-band-black-vertical-pure-mww72lla-a?$device-med$",
|
||||
"imageFormat" : "png",
|
||||
"accessibilityText" : "Apple Watch Series 5, con caja de acero inoxidable negro espacial de 44 mm y correa deportiva negra"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Chill's Smartwatch",
|
||||
"fontStyle" : "BoldTitleLarge"
|
||||
}
|
||||
},
|
||||
{
|
||||
"body" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "864-395-9569",
|
||||
"fontStyle" : "RegularBodyMedium"
|
||||
},
|
||||
"moleculeName" : "listDvcBtnM",
|
||||
"button" : {
|
||||
"size" : "small",
|
||||
"title" : "Administra",
|
||||
"moleculeName" : "button",
|
||||
"enabled" : true,
|
||||
"action" : {
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "Administrar"
|
||||
},
|
||||
"extraParameters" : {
|
||||
"customerIntent" : "EUP",
|
||||
"selectedMDN" : "8643959569"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"appContext" : "mfPrepaySS",
|
||||
"pageType" : "manageDevicePR"
|
||||
}
|
||||
},
|
||||
"image" : {
|
||||
"height" : 120,
|
||||
"moleculeName" : "image",
|
||||
"image" : "https:\/\/mobile.vzw.com\/hybridClient\/is\/image\/VerizonWireless\/iphone-11-pro-max-space-gray?$device-med$",
|
||||
"imageFormat" : "png",
|
||||
"accessibilityText" : "Apple iPhone 11 Pro Max 64 GB en gris espacial"
|
||||
},
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Prepaid's Phone",
|
||||
"fontStyle" : "BoldTitleLarge"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"molecule" :
|
||||
{
|
||||
"moleculeName" : "stack",
|
||||
"molecules" : [
|
||||
{
|
||||
"spacing" : 10,
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Controla \n tus dispositivos.",
|
||||
"fontStyle" : "RegularTitleXLarge"
|
||||
},
|
||||
"body" : {
|
||||
"fontStyle" : "RegularBodyLarge",
|
||||
"textColor" : "#6F7171",
|
||||
"moleculeName" : "label",
|
||||
"text" : "Administra y obtén más información sobre cada dispositivo de tu cuenta."
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"spacing" : 35,
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"secondaryButton" : {
|
||||
"moleculeName" : "button",
|
||||
"action" : {
|
||||
"appContext" : "mfPrepaySS",
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "Agrega un dispositivo"
|
||||
},
|
||||
"extraParameters" : {
|
||||
"mtnToUpgrade" : "8643995483",
|
||||
"navigationState" : "smartphones",
|
||||
"customerIntent" : "AAL"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "prepayFamilyDiscountPR"
|
||||
},
|
||||
"style" : "primary",
|
||||
"enabled" : true,
|
||||
"fillColor" : "#000000",
|
||||
"title" : "Agrega un dispositivo",
|
||||
"textColor" : "#FFFFFF"
|
||||
},
|
||||
"moleculeName" : "twoButtonView",
|
||||
"primaryButton" : {
|
||||
"moleculeName" : "button",
|
||||
"action" : {
|
||||
"appContext" : "mfPrepaySS",
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "Actualiza el dispositivo"
|
||||
},
|
||||
"extraParameters" : {
|
||||
"mdn" : "8643995483",
|
||||
"flowFrom" : "PrepayFlow",
|
||||
"customerIntent" : "EUP",
|
||||
"navigationState" : "smartphones"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "gridwallPRS"
|
||||
},
|
||||
"style" : "secondary",
|
||||
"enabled" : true,
|
||||
"fillColor" : "#FFFFFF",
|
||||
"title" : "Actualiza el dispositivo",
|
||||
"borderColor" : "#000000",
|
||||
"textColor" : "#000000"
|
||||
},
|
||||
"horizontalAlignment" : "leading"
|
||||
},
|
||||
"horizontalAlignment" : "leading"
|
||||
},
|
||||
{
|
||||
"useVerticalMargins" : true,
|
||||
"topPadding" : 20,
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "primary"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"screenHeading" : "Dispositivos",
|
||||
"cache" : false,
|
||||
"header" : {
|
||||
"moleculeName" : "stack",
|
||||
"molecules" : [
|
||||
{
|
||||
"spacing" : 10,
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Controla \n tus dispositivos.",
|
||||
"fontStyle" : "RegularTitleXLarge"
|
||||
},
|
||||
"body" : {
|
||||
"fontStyle" : "RegularBodyLarge",
|
||||
"textColor" : "#6F7171",
|
||||
"moleculeName" : "label",
|
||||
"text" : "Administra y obtén más información sobre cada dispositivo de tu cuenta."
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"spacing" : 35,
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"secondaryButton" : {
|
||||
"moleculeName" : "button",
|
||||
"action" : {
|
||||
"appContext" : "mfPrepaySS",
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "Agrega un dispositivo"
|
||||
},
|
||||
"extraParameters" : {
|
||||
"mtnToUpgrade" : "8643995483",
|
||||
"navigationState" : "smartphones",
|
||||
"customerIntent" : "AAL"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "prepayFamilyDiscountPR"
|
||||
},
|
||||
"style" : "primary",
|
||||
"enabled" : true,
|
||||
"fillColor" : "#000000",
|
||||
"title" : "Agrega un dispositivo",
|
||||
"textColor" : "#FFFFFF"
|
||||
},
|
||||
"moleculeName" : "twoButtonView",
|
||||
"primaryButton" : {
|
||||
"moleculeName" : "button",
|
||||
"action" : {
|
||||
"appContext" : "mfPrepaySS",
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "Actualiza el dispositivo"
|
||||
},
|
||||
"extraParameters" : {
|
||||
"mdn" : "8643995483",
|
||||
"flowFrom" : "PrepayFlow",
|
||||
"customerIntent" : "EUP",
|
||||
"navigationState" : "smartphones"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "gridwallPRS"
|
||||
},
|
||||
"style" : "secondary",
|
||||
"enabled" : true,
|
||||
"fillColor" : "#FFFFFF",
|
||||
"title" : "Actualiza el dispositivo",
|
||||
"borderColor" : "#000000",
|
||||
"textColor" : "#000000"
|
||||
},
|
||||
"horizontalAlignment" : "leading"
|
||||
},
|
||||
"horizontalAlignment" : "leading"
|
||||
},
|
||||
{
|
||||
"useVerticalMargins" : true,
|
||||
"topPadding" : 20,
|
||||
"moleculeName" : "stackItem",
|
||||
"molecule" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "primary"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"template" : "list",
|
||||
"navigationBar" : {
|
||||
"moleculeName" : "navigationBar",
|
||||
"title" : "Dispositivos"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -21,33 +21,27 @@
|
||||
"molecules": [
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"horizontalAlignment": "leading",
|
||||
"molecule":
|
||||
|
||||
{
|
||||
"moleculeName": "tilelet",
|
||||
"color": "white",
|
||||
"color": "#000000",
|
||||
"showDropShadow": true,
|
||||
"title": {
|
||||
"moleculeName": "label",
|
||||
"text": "Activate your perks.",
|
||||
"fontStyle": "BoldTitleSmall",
|
||||
"textColor": "#F50A23"
|
||||
"textColor": "#ffffff"
|
||||
},
|
||||
"subTitle": {
|
||||
"text": "You have ${activePerks} out of ${totalPerks} perks active.",
|
||||
"textColor": "#000000"
|
||||
"textColor": "#ffffff"
|
||||
},
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"analyticsData": {
|
||||
"vzdl.page.id": "onboardingHub"
|
||||
},
|
||||
"pageType": "tasks",
|
||||
"presentationStyle": "push",
|
||||
"requestURL": "${mva_edgecast_domain}/mobile/nsa/nos/gw/launchapp/l2/webview",
|
||||
"extraParameters": {
|
||||
"browserUrl": "https://${domain}/digital/nsa/secure/ui/products/producthub/home"
|
||||
}
|
||||
"presentationStyle": "push"
|
||||
},
|
||||
"directionalIcon": {
|
||||
"size": "medium"
|
||||
|
||||
@ -1,60 +0,0 @@
|
||||
{
|
||||
"Page": {
|
||||
"template": "stack",
|
||||
"pageType": "moleculeStack",
|
||||
"screenHeading": "Manage Profile",
|
||||
"hideFabOverlay": true,
|
||||
"suppressPostLaunchRequests": false,
|
||||
"tabBarHidden": true,
|
||||
"header": {
|
||||
"moleculeName": "header",
|
||||
"molecule": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Zenkey"
|
||||
}
|
||||
}
|
||||
},
|
||||
"stack": {
|
||||
"moleculeName": "stack",
|
||||
"molecules": [
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "toggle",
|
||||
"fieldKey": "isActive"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"footer": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName": "twoButtonView",
|
||||
"primaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "Edit",
|
||||
"groupName": "default",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "updateProfile",
|
||||
"extraParameters": {
|
||||
"from": "none"
|
||||
},
|
||||
"presentationStyle": "push"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"formRules": [
|
||||
{
|
||||
"groupName": "default",
|
||||
"rules": [
|
||||
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
272
JSONCreator_iOS/JSONCreator/JSON/Samples/VDSCheckbox.json
Normal file
272
JSONCreator_iOS/JSONCreator/JSON/Samples/VDSCheckbox.json
Normal file
@ -0,0 +1,272 @@
|
||||
{
|
||||
"ResponseInfo" : {
|
||||
"correlationId" : "ABC5060F-95C9-4F3B-954D-D74F30CD08A3",
|
||||
"userMessage" : "0",
|
||||
"timeStamp" : "01-08-2024 08:36:43",
|
||||
"message" : "0",
|
||||
"type" : "Success",
|
||||
"topAlertTime" : 0,
|
||||
"errorCode" : "00000"
|
||||
},
|
||||
"Page" : {
|
||||
"template" : "list",
|
||||
"footer" : {
|
||||
"moleculeName" : "footer",
|
||||
"molecule" : {
|
||||
"size" : "standard",
|
||||
"groupName" : "default",
|
||||
"moleculeName" : "button",
|
||||
"title" : "Apply",
|
||||
"action" : {
|
||||
"requestURL" : "https:\/\/www.verizon.com\/digital\/nsa\/nos\/gw\/retail\/rtlStoreFinder",
|
||||
"extraParameters" : {
|
||||
"fromFilter" : "Y",
|
||||
"searchedZipCode" : " ",
|
||||
"sourcePage" : "rtlStoreFinder",
|
||||
"fromPage" : "rtlStoreJourneyNSA",
|
||||
"accuracyPermission" : "full",
|
||||
"favStore" : " ",
|
||||
"latitude" : "33.138233420702115",
|
||||
"longitude" : "-96.85333736784496",
|
||||
"makeFavourite" : "N"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "rtlStoreFinder"
|
||||
}
|
||||
},
|
||||
"horizontalAlignment" : "fill"
|
||||
},
|
||||
"molecules" : [
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"molecule" : {
|
||||
"moleculeName" : "checkboxLabel",
|
||||
"willSelect" : true,
|
||||
"deselectAllTitleAccessibilityText" : "deselect all to uncheck the boxes below",
|
||||
"checkboxAlignment" : "center",
|
||||
"selectAllTitle" : "Select all",
|
||||
"label" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Select all",
|
||||
"fontStyle" : "RegularBodyLarge"
|
||||
},
|
||||
"selectAllTitleAccessibilityText" : "select all to check the boxes below",
|
||||
"checkbox" : {
|
||||
"moleculeName" : "checkbox",
|
||||
"fieldKey": "agreement"
|
||||
},
|
||||
"deSelectAllTitle" : "Deselect all"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"molecule" : {
|
||||
"fontStyle" : "BoldTitleMedium",
|
||||
"accessibilityText" : "Languages, heading level 2",
|
||||
"moleculeName" : "label",
|
||||
"accessibilityTraits" : [
|
||||
"header"
|
||||
],
|
||||
"text" : "Languages"
|
||||
}
|
||||
},
|
||||
{
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "English",
|
||||
"fontStyle" : "RegularBodyLarge"
|
||||
}
|
||||
},
|
||||
"topPadding" : 0,
|
||||
"moleculeName" : "listLVCBBdy",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"checkbox" : {
|
||||
"moleculeName" : "checkbox",
|
||||
"fieldKey" : "ENGLISH",
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Spanish",
|
||||
"fontStyle" : "RegularBodyLarge"
|
||||
}
|
||||
},
|
||||
"topPadding" : 0,
|
||||
"moleculeName" : "listLVCBBdy",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"checkbox" : {
|
||||
"moleculeName" : "checkbox",
|
||||
"fieldKey" : "SPANISH",
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName" : "listItem",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"molecule" : {
|
||||
"fontStyle" : "BoldTitleMedium",
|
||||
"accessibilityText" : "Services, heading level 2",
|
||||
"moleculeName" : "label",
|
||||
"accessibilityTraits" : [
|
||||
"header"
|
||||
],
|
||||
"text" : "Services"
|
||||
}
|
||||
},
|
||||
{
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Appointments",
|
||||
"fontStyle" : "RegularBodyLarge"
|
||||
}
|
||||
},
|
||||
"topPadding" : 0,
|
||||
"moleculeName" : "listLVCBBdy",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"checkbox" : {
|
||||
"moleculeName" : "checkbox",
|
||||
"fieldKey" : "APPOINTMENTS",
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Locker available",
|
||||
"fontStyle" : "RegularBodyLarge"
|
||||
}
|
||||
},
|
||||
"topPadding" : 0,
|
||||
"moleculeName" : "listLVCBBdy",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"checkbox" : {
|
||||
"moleculeName" : "checkbox",
|
||||
"fieldKey" : "LOCKER_AVAILABLE",
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "Curbside pickup",
|
||||
"fontStyle" : "RegularBodyLarge"
|
||||
}
|
||||
},
|
||||
"topPadding" : 0,
|
||||
"moleculeName" : "listLVCBBdy",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"checkbox" : {
|
||||
"moleculeName" : "checkbox",
|
||||
"fieldKey" : "CURBSIDE_PICKUP",
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"headlineBody" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"moleculeName" : "label",
|
||||
"text" : "In-store Pickup",
|
||||
"fontStyle" : "RegularBodyLarge"
|
||||
}
|
||||
},
|
||||
"topPadding" : 0,
|
||||
"moleculeName" : "listLVCBBdy",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"checkbox" : {
|
||||
"moleculeName" : "checkbox",
|
||||
"fieldKey" : "INSTORE_PICKUP",
|
||||
|
||||
}
|
||||
}
|
||||
],
|
||||
"screenHeading" : "Filters",
|
||||
"cache" : false,
|
||||
"header" : {
|
||||
"moleculeName" : "header",
|
||||
"line" : {
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"molecule" : {
|
||||
"moleculeName" : "headlineBody",
|
||||
"headline" : {
|
||||
"fontStyle" : "RegularTitleXLarge",
|
||||
"accessibilityText" : "Find exactly what you are looking for, heading level 1",
|
||||
"moleculeName" : "label",
|
||||
"accessibilityTraits" : [
|
||||
"header"
|
||||
],
|
||||
"text" : "Find exactly what you are looking for."
|
||||
}
|
||||
}
|
||||
},
|
||||
"pageType" : "storeLocatorFiltersNSA",
|
||||
"suppressPostLaunchRequests" : false,
|
||||
"formRules" : [
|
||||
{
|
||||
"groupName" : "default",
|
||||
"rules" : [
|
||||
{
|
||||
"type" : "anyRequired",
|
||||
"fields" : [
|
||||
"ENGLISH",
|
||||
"SPANISH",
|
||||
"APPOINTMENTS",
|
||||
"LOCKER_AVAILABLE",
|
||||
"CURBSIDE_PICKUP",
|
||||
"INSTORE_PICKUP"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"navigationBar" : {
|
||||
"moleculeName" : "navigationBar",
|
||||
"title" : "Filters"
|
||||
},
|
||||
"tabBarHidden" : true
|
||||
}
|
||||
}
|
||||
517
JSONCreator_iOS/JSONCreator/JSON/Samples/VDSSample-List.json
Normal file
517
JSONCreator_iOS/JSONCreator/JSON/Samples/VDSSample-List.json
Normal file
@ -0,0 +1,517 @@
|
||||
{
|
||||
"Page": {
|
||||
"template": "list",
|
||||
"pageType": "wifiSample1",
|
||||
"screenHeading": "Network Management",
|
||||
"hideFabOverlay": true,
|
||||
"suppressPostLaunchRequests": false,
|
||||
"tabBarHidden": true,
|
||||
"line": {
|
||||
"moleculeName": "line",
|
||||
"type": "none"
|
||||
},
|
||||
"header": {
|
||||
"moleculeName": "breadcrumbs",
|
||||
"breadcrumbs": [
|
||||
{
|
||||
"moleculeName": "breadcrumb",
|
||||
"text": "Breadcrumb 1",
|
||||
"action":{
|
||||
"actionType":"openPage",
|
||||
"presentationStyle":"push",
|
||||
"pageType":"plans"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "breadcrumb",
|
||||
"text": "Breadcrumb 2",
|
||||
"action":{
|
||||
"actionType":"openPage",
|
||||
"presentationStyle":"push",
|
||||
"pageType":"plans"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "breadcrumb",
|
||||
"text": "Breadcrumb 3",
|
||||
"action":{
|
||||
"actionType":"openPage",
|
||||
"presentationStyle":"push",
|
||||
"pageType":"plans"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "breadcrumb",
|
||||
"text": "Breadcrumb 4",
|
||||
"action":{
|
||||
"actionType":"openPage",
|
||||
"presentationStyle":"push",
|
||||
"pageType":"plans"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"molecules": [
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "pagination",
|
||||
"totalPages": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "datePicker",
|
||||
"fieldKey": "datePicker",
|
||||
"title": "Pick a date",
|
||||
"feedback": "This is when the event occurred",
|
||||
"tooltip": {
|
||||
"moluculeName": "tooltip",
|
||||
"title": "Here's the title",
|
||||
"content": "Here's the content"
|
||||
},
|
||||
"calendar": {
|
||||
"moleculeName": "calendar",
|
||||
"indicators": [
|
||||
{
|
||||
"label": "foo",
|
||||
"date": "Aug 24, 2024"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "radioBoxes",
|
||||
"fieldKey": "box",
|
||||
"boxes": [
|
||||
{
|
||||
"moleculeName" : "radioBox",
|
||||
"text" : "1",
|
||||
"fieldValue" : "radioBox-1"
|
||||
},
|
||||
{
|
||||
"moleculeName" : "radioBox",
|
||||
"text" : "2",
|
||||
"fieldValue" : "radioBox-2"
|
||||
},
|
||||
{
|
||||
"text" : "3",
|
||||
"moleculeName" : "radioBox",
|
||||
"selected" : true,
|
||||
"fieldValue" : "radioBox-3"
|
||||
},
|
||||
{
|
||||
"text" : "4",
|
||||
"enabled" : false,
|
||||
"moleculeName" : "radioBox",
|
||||
"fieldValue" : "radioBox-4"
|
||||
},
|
||||
{
|
||||
"moleculeName" : "radioBox",
|
||||
"text" : "5",
|
||||
"fieldValue" : "radioBox-5"
|
||||
},
|
||||
{
|
||||
"text" : "6",
|
||||
"moleculeName" : "radioBox",
|
||||
"strikethrough" : true,
|
||||
"fieldValue" : "radioBox-6"
|
||||
},
|
||||
{
|
||||
"text" : "7",
|
||||
"enabled" : false,
|
||||
"moleculeName" : "radioBox",
|
||||
"strikethrough" : true,
|
||||
"fieldValue" : "radioBox-7"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "radioButtons",
|
||||
"fieldKey": "radioButtons",
|
||||
"radioButtons": [
|
||||
{
|
||||
"moleculeName": "radioButtonLabel",
|
||||
"radioButton": {
|
||||
"moleculeName": "radioButton",
|
||||
"fieldValue": "ACTIVE_VERIZON_DEVICE-1"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "radioButtonLabel",
|
||||
"radioButton": {
|
||||
"moleculeName": "radioButton",
|
||||
"fieldValue": "ACTIVE_VERIZON_DEVICE-2"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "radioButtonLabel",
|
||||
"radioButton": {
|
||||
"moleculeName": "radioButton",
|
||||
"fieldValue": "ACTIVE_VERIZON_DEVICE-3"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the label"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the subtitle"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "checkboxes",
|
||||
"checkboxes": [
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-1"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-2"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-3"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the label"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the subtitle"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"topPadding": 0,
|
||||
"bottomPadding": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "toggle",
|
||||
"fieldKey": "isActive"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"topPadding": 0,
|
||||
"bottomPadding": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "textView",
|
||||
"height": 150,
|
||||
"fieldKey": "textView",
|
||||
"title": "Describe yourself",
|
||||
"feedback": "This is for other help",
|
||||
"tooltip": {
|
||||
"moluculeName": "tooltip",
|
||||
"title": "Here's the title",
|
||||
"content": "Here's the content"
|
||||
},
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"topPadding": 0,
|
||||
"bottomPadding": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "dropDown",
|
||||
"placeholder": "Select",
|
||||
"title": "Relating to",
|
||||
"fieldKey": "subReason",
|
||||
"type": "text",
|
||||
"options": [
|
||||
"Plan Questions",
|
||||
"Change Plan",
|
||||
"International Use"
|
||||
],
|
||||
"selectedIndex": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"topPadding": 0,
|
||||
"bottomPadding": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "textField",
|
||||
"fieldKey": "textField",
|
||||
"title": "Describe yourself",
|
||||
"feedback": "This is for other help",
|
||||
"tooltip": {
|
||||
"moluculeName": "tooltip",
|
||||
"title": "Here's the title",
|
||||
"content": "Here's the content"
|
||||
},
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"topPadding": 10,
|
||||
"bottomPadding": 10,
|
||||
"molecule": {
|
||||
"moleculeName": "mdnEntryField",
|
||||
"fieldKey": "mdnEntryField",
|
||||
"title": "Pick a contact",
|
||||
"feedback": "Manually enter a phone number or pick from the contacts",
|
||||
"tooltip": {
|
||||
"moluculeName": "tooltip",
|
||||
"title": "MDN Entry Field",
|
||||
"content": "You can either manually enter a phone number or pick from the contact picker popup from your address book."
|
||||
},
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"topPadding": 0,
|
||||
"bottomPadding": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "dropDown",
|
||||
"options": [
|
||||
"All1",
|
||||
"Apple1",
|
||||
"Samsung1"
|
||||
],
|
||||
"fieldKey": "dropDown",
|
||||
"title": "Describe yourself",
|
||||
"feedback": "This is for other help",
|
||||
"tooltip": {
|
||||
"moluculeName": "tooltip",
|
||||
"title": "Here's the title",
|
||||
"content": "Here's the content"
|
||||
},
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "checkboxes",
|
||||
"checkboxes": [
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-2-1"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "2-Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-2-2"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "2-Here is the sample"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-2-3"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "2-Here is the label"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the subtitle"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "checkboxes",
|
||||
"checkboxes": [
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-3-1"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "3-Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-3-2"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "3-Here is the sample"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-3-3"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "3-Here is the label"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the subtitle"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "listItem",
|
||||
"molecule": {
|
||||
"moleculeName": "checkboxes",
|
||||
"checkboxes": [
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-4-1"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "4-Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-4-2"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "4-Here is the sample"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "4-Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-4-3"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the label"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the subtitle"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
],
|
||||
"footer": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"moleculeName": "twoButtonView",
|
||||
"primaryButton": {
|
||||
"moleculeName": "button",
|
||||
"title": "Edit",
|
||||
"groupName": "default",
|
||||
"action": {
|
||||
"actionType": "openPage",
|
||||
"pageType": "updateProfile",
|
||||
"extraParameters": {
|
||||
"from": "none"
|
||||
},
|
||||
"presentationStyle": "push"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"formRules": [
|
||||
{
|
||||
"groupName": "default",
|
||||
"rules": [
|
||||
{
|
||||
"type": "allRequired",
|
||||
"ruleId": "requiredRule",
|
||||
"fields": [
|
||||
"dropdown",
|
||||
"datepicker"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
381
JSONCreator_iOS/JSONCreator/JSON/Samples/VDSSample-Stack.json
Normal file
381
JSONCreator_iOS/JSONCreator/JSON/Samples/VDSSample-Stack.json
Normal file
@ -0,0 +1,381 @@
|
||||
{
|
||||
"Page": {
|
||||
"template": "stack",
|
||||
"pageType": "moleculeStack",
|
||||
"screenHeading": "Manage Profile",
|
||||
"hideFabOverlay": true,
|
||||
"suppressPostLaunchRequests": false,
|
||||
"tabBarHidden": true,
|
||||
"header": {
|
||||
"moleculeName": "header",
|
||||
"molecule": {
|
||||
"moleculeName": "headlineBody",
|
||||
"headline": {
|
||||
"moleculeName": "label",
|
||||
"text": "Zenkey"
|
||||
}
|
||||
}
|
||||
},
|
||||
"stack": {
|
||||
"moleculeName": "stack",
|
||||
"molecules": [
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "datePicker",
|
||||
"fieldKey": "datePicker",
|
||||
"title": "Pick a date",
|
||||
"feedback": "This is when the event occurred",
|
||||
"tooltip": {
|
||||
"moluculeName": "tooltip",
|
||||
"title": "Here's the title",
|
||||
"content": "Here's the content"
|
||||
},
|
||||
"calendar": {
|
||||
"moleculeName": "calendar",
|
||||
"indicators": [
|
||||
{
|
||||
"label": "foo",
|
||||
"date": "Aug 24, 2024"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "calendar",
|
||||
"indicators": [
|
||||
{
|
||||
"label": "foo 1",
|
||||
"date": "Aug 24, 2024"
|
||||
},
|
||||
{
|
||||
"label": "foo 2",
|
||||
"date": "Aug 28, 2024"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "radioBoxes",
|
||||
"fieldKey": "box",
|
||||
"boxes": [
|
||||
{
|
||||
"moleculeName" : "radioBox",
|
||||
"text" : "1",
|
||||
"fieldValue" : "radioBox-1"
|
||||
},
|
||||
{
|
||||
"moleculeName" : "radioBox",
|
||||
"text" : "2",
|
||||
"fieldValue" : "radioBox-2"
|
||||
},
|
||||
{
|
||||
"text" : "3",
|
||||
"moleculeName" : "radioBox",
|
||||
"selected" : true,
|
||||
"fieldValue" : "radioBox-3"
|
||||
},
|
||||
{
|
||||
"text" : "4",
|
||||
"enabled" : false,
|
||||
"moleculeName" : "radioBox",
|
||||
"fieldValue" : "radioBox-4"
|
||||
},
|
||||
{
|
||||
"moleculeName" : "radioBox",
|
||||
"text" : "5",
|
||||
"fieldValue" : "radioBox-5"
|
||||
},
|
||||
{
|
||||
"text" : "6",
|
||||
"moleculeName" : "radioBox",
|
||||
"strikethrough" : true,
|
||||
"fieldValue" : "radioBox-6"
|
||||
},
|
||||
{
|
||||
"text" : "7",
|
||||
"enabled" : false,
|
||||
"moleculeName" : "radioBox",
|
||||
"strikethrough" : true,
|
||||
"fieldValue" : "radioBox-7"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "radioButtons",
|
||||
"fieldKey": "radioButtons",
|
||||
"radioButtons": [
|
||||
{
|
||||
"moleculeName": "radioButtonLabel",
|
||||
"radioButton": {
|
||||
"moleculeName": "radioButton",
|
||||
"fieldValue": "ACTIVE_VERIZON_DEVICE-1"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "radioButtonLabel",
|
||||
"radioButton": {
|
||||
"moleculeName": "radioButton",
|
||||
"fieldValue": "ACTIVE_VERIZON_DEVICE-2"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "radioButtonLabel",
|
||||
"radioButton": {
|
||||
"moleculeName": "radioButton",
|
||||
"fieldValue": "ACTIVE_VERIZON_DEVICE-3"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the label"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the subtitle"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"molecule": {
|
||||
"moleculeName": "checkboxes",
|
||||
"checkboxes": [
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-1"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-2"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the sample"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "checkboxLabel",
|
||||
"checkbox": {
|
||||
"moleculeName": "checkbox",
|
||||
"fieldKey": "agreement-3"
|
||||
},
|
||||
"label": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the label"
|
||||
},
|
||||
"subTitle": {
|
||||
"moleculeName": "label",
|
||||
"text": "Here is the subtitle"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"topPadding": 0,
|
||||
"bottomPadding": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "toggle",
|
||||
"fieldKey": "isActive"
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"topPadding": 0,
|
||||
"bottomPadding": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "textView",
|
||||
"height": 150,
|
||||
"fieldKey": "textView",
|
||||
"title": "Describe yourself",
|
||||
"feedback": "This is for other help",
|
||||
"tooltip": {
|
||||
"moluculeName": "tooltip",
|
||||
"title": "Here's the title",
|
||||
"content": "Here's the content"
|
||||
},
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"topPadding": 0,
|
||||
"bottomPadding": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "dropDown",
|
||||
"placeholder": "Select",
|
||||
"title": "Relating to",
|
||||
"fieldKey": "subReason",
|
||||
"type": "text",
|
||||
"options": [
|
||||
"Plan Questions",
|
||||
"Change Plan",
|
||||
"International Use"
|
||||
],
|
||||
"selectedIndex": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"topPadding": 0,
|
||||
"bottomPadding": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "textField",
|
||||
"fieldKey": "textField",
|
||||
"title": "Describe yourself",
|
||||
"feedback": "This is for other help",
|
||||
"tooltip": {
|
||||
"moluculeName": "tooltip",
|
||||
"title": "Here's the title",
|
||||
"content": "Here's the content"
|
||||
},
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"topPadding": 0,
|
||||
"bottomPadding": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "mdnEntryField",
|
||||
"fieldKey": "mdnEntryField",
|
||||
"title": "Describe yourself",
|
||||
"feedback": "This is for other help",
|
||||
"tooltip": {
|
||||
"moluculeName": "tooltip",
|
||||
"title": "Here's the title",
|
||||
"content": "Here's the content"
|
||||
},
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"moleculeName": "stackItem",
|
||||
"topPadding": 0,
|
||||
"bottomPadding": 0,
|
||||
"molecule": {
|
||||
"moleculeName": "dropDown",
|
||||
"options": [
|
||||
"All1",
|
||||
"Apple1",
|
||||
"Samsung1"
|
||||
],
|
||||
"fieldKey": "dropDown",
|
||||
"title": "Describe yourself",
|
||||
"feedback": "This is for other help",
|
||||
"tooltip": {
|
||||
"moluculeName": "tooltip",
|
||||
"title": "Here's the title",
|
||||
"content": "Here's the content"
|
||||
},
|
||||
"required": true
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"footer": {
|
||||
"moleculeName": "footer",
|
||||
"molecule": {
|
||||
"secondaryButton" : {
|
||||
"moleculeName" : "button",
|
||||
"action" : {
|
||||
"appContext" : "mfPrepaySS",
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "Agrega un dispositivo"
|
||||
},
|
||||
"extraParameters" : {
|
||||
"mtnToUpgrade" : "8643995483",
|
||||
"navigationState" : "smartphones",
|
||||
"customerIntent" : "AAL"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "prepayFamilyDiscountPR"
|
||||
},
|
||||
"style" : "primary",
|
||||
"enabled" : true,
|
||||
"fillColor" : "#000000",
|
||||
"title" : "Agrega un dispositivo",
|
||||
"textColor" : "#FFFFFF"
|
||||
},
|
||||
"moleculeName" : "twoButtonView",
|
||||
"primaryButton" : {
|
||||
"moleculeName" : "button",
|
||||
"action" : {
|
||||
"appContext" : "mfPrepaySS",
|
||||
"analyticsData" : {
|
||||
"vzdl.page.linkName" : "Actualiza el dispositivo"
|
||||
},
|
||||
"extraParameters" : {
|
||||
"mdn" : "8643995483",
|
||||
"flowFrom" : "PrepayFlow",
|
||||
"customerIntent" : "EUP",
|
||||
"navigationState" : "smartphones"
|
||||
},
|
||||
"actionType" : "openPage",
|
||||
"presentationStyle" : "push",
|
||||
"pageType" : "gridwallPRS"
|
||||
},
|
||||
"style" : "secondary",
|
||||
"enabled" : true,
|
||||
"fillColor" : "#FFFFFF",
|
||||
"title" : "Actualiza el dispositivo",
|
||||
"borderColor" : "#000000",
|
||||
"textColor" : "#000000"
|
||||
},
|
||||
"horizontalAlignment" : "leading"
|
||||
}
|
||||
},
|
||||
"formRules": [
|
||||
{
|
||||
"groupName": "default",
|
||||
"rules": [
|
||||
{
|
||||
"type": "allRequired",
|
||||
"ruleId": "requiredRule",
|
||||
"fields": [
|
||||
"dropdown",
|
||||
"datepicker"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -66,7 +66,7 @@
|
||||
"type" : "none"
|
||||
},
|
||||
"moleculeName" : "dropDownListItem",
|
||||
"bottomPadding" : 0,
|
||||
"bottomPadding" : 0.000000000001,
|
||||
"molecules" : [
|
||||
[
|
||||
{
|
||||
@ -74,9 +74,9 @@
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"topPadding" : 0,
|
||||
"topPadding" : 0.000000000001,
|
||||
"moleculeName" : "listItem",
|
||||
"bottomPadding" : 0,
|
||||
"bottomPadding" : 0.000000000001,
|
||||
"molecule" : {
|
||||
"moleculeName" : "dropDown",
|
||||
"placeholder" : "Select",
|
||||
@ -98,9 +98,9 @@
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"topPadding" : 0,
|
||||
"topPadding" : 0.000000000001,
|
||||
"moleculeName" : "listItem",
|
||||
"bottomPadding" : 0,
|
||||
"bottomPadding" : 0.000000000001,
|
||||
"molecule" : {
|
||||
"moleculeName" : "dropDown",
|
||||
"placeholder" : "Select",
|
||||
@ -120,9 +120,9 @@
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"topPadding" : 0,
|
||||
"topPadding" : 0.000000000001,
|
||||
"moleculeName" : "listItem",
|
||||
"bottomPadding" : 0,
|
||||
"bottomPadding" : 0.000000000001,
|
||||
"molecule" : {
|
||||
"moleculeName" : "dropDown",
|
||||
"placeholder" : "Select",
|
||||
@ -147,9 +147,9 @@
|
||||
"moleculeName" : "line",
|
||||
"type" : "none"
|
||||
},
|
||||
"topPadding" : 0,
|
||||
"topPadding" : 0.000000000001,
|
||||
"moleculeName" : "listItem",
|
||||
"bottomPadding" : 0,
|
||||
"bottomPadding" : 0.000000000001,
|
||||
"molecule" : {
|
||||
"moleculeName" : "dropDown",
|
||||
"placeholder" : "Select",
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
//
|
||||
// ActionSetupBiometricsHandler.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Scott Pfeil on 4/5/23.
|
||||
// Copyright © 2023 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import MVMCore
|
||||
import LocalAuthentication
|
||||
|
||||
open class ActionBiometricStateHandler: MVMCoreActionHandlerProtocol {
|
||||
|
||||
enum Error: MVMError, CustomStringConvertible {
|
||||
case unknown
|
||||
|
||||
public var description: String {
|
||||
switch self {
|
||||
case .unknown:
|
||||
return "Cannot evaluate biometric policy for an unknown reason."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
required public init() {}
|
||||
|
||||
public func execute(with model: MVMCore.ActionModelProtocol, delegateObject: MVMCore.DelegateObject?, additionalData: [AnyHashable : Any]?) async throws {
|
||||
guard let model = model as? ActionBiometricStateModel else { return }
|
||||
|
||||
var error: NSError?
|
||||
let context = LAContext()
|
||||
guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else {
|
||||
guard let error = error else {
|
||||
throw Self.Error.unknown
|
||||
}
|
||||
if error.code == LAError.biometryNotEnrolled.rawValue,
|
||||
let action = model.biometricsDisabledAction {
|
||||
try await delegateObject?.actionDelegate?.action(with: action, additionalData: additionalData, delegateObject: delegateObject)
|
||||
} else if error.code == LAError.biometryNotAvailable.rawValue,
|
||||
let action = model.biometricsDeniedAction {
|
||||
try await delegateObject?.actionDelegate?.action(with: action, additionalData: additionalData, delegateObject: delegateObject)
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
return
|
||||
}
|
||||
try await delegateObject?.actionDelegate?.action(with: model.biometricsEnabledAction, additionalData: additionalData, delegateObject: delegateObject)
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
//
|
||||
// ActionSetupBiometricsModel.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Scott Pfeil on 4/5/23.
|
||||
// Copyright © 2023 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import MVMCore
|
||||
import MVMCoreUI
|
||||
|
||||
public struct ActionBiometricStateModel: ActionModelProtocol {
|
||||
//--------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//--------------------------------------------------
|
||||
|
||||
public static var identifier: String = "biometricState"
|
||||
public var actionType: String = ActionBiometricStateModel.identifier
|
||||
public var biometricsEnabledAction: ActionModelProtocol
|
||||
public var biometricsDisabledAction: ActionModelProtocol?
|
||||
public var biometricsDeniedAction: ActionModelProtocol?
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Codable
|
||||
//--------------------------------------------------
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case actionType
|
||||
case biometricsEnabledAction
|
||||
case biometricsDisabledAction
|
||||
case biometricsDeniedAction
|
||||
case extraParameters
|
||||
case analyticsData
|
||||
}
|
||||
|
||||
public init(from decoder: Decoder) throws {
|
||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||
biometricsEnabledAction = try typeContainer.decodeModel(codingKey: .biometricsEnabledAction)
|
||||
biometricsDisabledAction = try typeContainer.decodeModelIfPresent(codingKey: .biometricsDisabledAction)
|
||||
biometricsDeniedAction = try typeContainer.decodeModelIfPresent(codingKey: .biometricsDeniedAction)
|
||||
extraParameters = try typeContainer.decodeIfPresent(JSONValueDictionary.self, forKey: .extraParameters)
|
||||
analyticsData = try typeContainer.decodeIfPresent(JSONValueDictionary.self, forKey: .analyticsData)
|
||||
}
|
||||
|
||||
public func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||
try container.encode(actionType, forKey: .actionType)
|
||||
try container.encodeModel(biometricsEnabledAction, forKey: .biometricsEnabledAction)
|
||||
try container.encodeModelIfPresent(biometricsDisabledAction, forKey: .biometricsDisabledAction)
|
||||
try container.encodeModelIfPresent(biometricsDeniedAction, forKey: .biometricsDeniedAction)
|
||||
try container.encodeIfPresent(extraParameters, forKey: .extraParameters)
|
||||
try container.encodeIfPresent(analyticsData, forKey: .analyticsData)
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,39 @@
|
||||
//
|
||||
// ActionRegisterFidoHandler.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Scott Pfeil on 6/12/23.
|
||||
// Copyright © 2023 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import MVMCore
|
||||
import LocalAuthentication
|
||||
|
||||
open class ActionRegisterFidoHandler: MVMCoreActionHandlerProtocol {
|
||||
|
||||
required public init() {}
|
||||
|
||||
public func execute(with model: MVMCore.ActionModelProtocol, delegateObject: MVMCore.DelegateObject?, additionalData: [AnyHashable : Any]?) async throws {
|
||||
guard let model = model as? ActionRegisterFidoModel else { return }
|
||||
do {
|
||||
try await withCheckedThrowingContinuation({ continuation in
|
||||
//MFFidoHelper.registerBiometric(model.fidoGuid, accessToken: model.accessToken, userIdentifier: model.userIdentifier) {
|
||||
continuation.resume()
|
||||
// } errorHandler: { error in
|
||||
// continuation.resume(throwing: error)
|
||||
// }
|
||||
})
|
||||
try await delegateObject?.actionDelegate?.action(with: model.onSuccess, additionalData: additionalData, delegateObject: delegateObject)
|
||||
} catch {
|
||||
let error = error as NSError
|
||||
// guard error.code != FidoErrorCode.Canceled.rawValue,
|
||||
// error.code != FidoErrorCode.SystemCanceled.rawValue,
|
||||
// error.code != FidoErrorCode.UserNotResponsive.rawValue else {
|
||||
// // Dont show error on this error codes
|
||||
// return
|
||||
// }
|
||||
throw error
|
||||
}
|
||||
}
|
||||
}
|
||||
65
JSONCreator_iOS/JSONCreator/MF/ActionRegisterFidoModel.swift
Normal file
65
JSONCreator_iOS/JSONCreator/MF/ActionRegisterFidoModel.swift
Normal file
@ -0,0 +1,65 @@
|
||||
//
|
||||
// ActionRegisterFidoModel.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Scott Pfeil on 6/12/23.
|
||||
// Copyright © 2023 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import MVMCore
|
||||
|
||||
public struct ActionRegisterFidoModel: ActionModelProtocol {
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//--------------------------------------------------
|
||||
|
||||
public static var identifier: String = "registerFIDO"
|
||||
public var actionType: String = ActionRegisterFidoModel.identifier
|
||||
public var accessToken: String
|
||||
public var fidoGuid: String
|
||||
public var userIdentifier: String
|
||||
public var fidoRegistrationError: String
|
||||
public var onSuccess: ActionModelProtocol
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Codable
|
||||
//--------------------------------------------------
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case actionType
|
||||
case accessToken
|
||||
case fidoGuid
|
||||
case userIdentifier
|
||||
case fidoRegistrationError
|
||||
case onSuccess
|
||||
case extraParameters
|
||||
case analyticsData
|
||||
}
|
||||
|
||||
public init(from decoder: Decoder) throws {
|
||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||
accessToken = try typeContainer.decode(String.self, forKey: .accessToken)
|
||||
fidoGuid = try typeContainer.decode(String.self, forKey: .fidoGuid)
|
||||
userIdentifier = try typeContainer.decode(String.self, forKey: .userIdentifier)
|
||||
fidoRegistrationError = try typeContainer.decode(String.self, forKey: .fidoRegistrationError)
|
||||
onSuccess = try typeContainer.decodeModel(codingKey: .onSuccess)
|
||||
extraParameters = try typeContainer.decodeIfPresent(JSONValueDictionary.self, forKey: .extraParameters)
|
||||
analyticsData = try typeContainer.decodeIfPresent(JSONValueDictionary.self, forKey: .analyticsData)
|
||||
}
|
||||
|
||||
public func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||
try container.encode(actionType, forKey: .actionType)
|
||||
try container.encode(accessToken, forKey: .accessToken)
|
||||
try container.encode(fidoGuid, forKey: .fidoGuid)
|
||||
try container.encode(userIdentifier, forKey: .userIdentifier)
|
||||
try container.encode(fidoRegistrationError, forKey: .fidoRegistrationError)
|
||||
try container.encodeModel(onSuccess, forKey: .onSuccess)
|
||||
try container.encodeIfPresent(extraParameters, forKey: .extraParameters)
|
||||
try container.encodeIfPresent(analyticsData, forKey: .analyticsData)
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
//
|
||||
// ActionRegisterPushNotificationModel.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Ryan on 3/17/20.
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import MVMCore
|
||||
|
||||
public struct ActionRegisterPushNotificationModel: ActionModelProtocol {
|
||||
public static var identifier: String = "registerPushNotification"
|
||||
public var actionType: String? = ActionRegisterPushNotificationModel.identifier
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
public var completionAction: ActionModelProtocol?
|
||||
|
||||
public enum CodingKeys: String, CodingKey {
|
||||
case actionType
|
||||
case extraParameters
|
||||
case analyticsData
|
||||
case completionAction
|
||||
}
|
||||
|
||||
public init(from decoder: Decoder) throws {
|
||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||
extraParameters = try typeContainer.decodeIfPresent(JSONValueDictionary.self, forKey: .extraParameters)
|
||||
analyticsData = try typeContainer.decodeIfPresent(JSONValueDictionary.self, forKey: .analyticsData)
|
||||
completionAction = try typeContainer.decodeModelIfPresent(codingKey: .completionAction)
|
||||
}
|
||||
|
||||
public func encode(to encoder: Encoder) throws {
|
||||
var encoderContainer = encoder.container(keyedBy: CodingKeys.self)
|
||||
try encoderContainer.encodeIfPresent(actionType, forKey: .actionType)
|
||||
try encoderContainer.encodeIfPresent(extraParameters, forKey: .extraParameters)
|
||||
try encoderContainer.encodeIfPresent(analyticsData, forKey: .analyticsData)
|
||||
try encoderContainer.encodeModelIfPresent(completionAction, forKey: .completionAction)
|
||||
}
|
||||
}
|
||||
113
JSONCreator_iOS/JSONCreator/MF/BiometricSetupBehavior.swift
Normal file
113
JSONCreator_iOS/JSONCreator/MF/BiometricSetupBehavior.swift
Normal file
@ -0,0 +1,113 @@
|
||||
//
|
||||
// BiometricSetupBehavior.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Scott Pfeil on 4/12/23.
|
||||
// Copyright © 2023 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import MVMCore
|
||||
import MVMCoreUI
|
||||
import LocalAuthentication
|
||||
import Combine
|
||||
|
||||
public class BiometricSetupBehaviorModel: PageBehaviorModelProtocol {
|
||||
public class var identifier: String { "biometricSetup" }
|
||||
public var shouldAllowMultipleInstances: Bool { false }
|
||||
public init() { }
|
||||
}
|
||||
|
||||
/** A behavior for managing biometric setup.
|
||||
If the user has biometrics disabled, an alert is shown. If the user then enables biometrics, the alert is cancelled and biometric enabled action is attempted.
|
||||
*/
|
||||
public class BiometricSetupBehavior: PageCustomActionHandlerBehavior {
|
||||
|
||||
var delegateObject: MVMCoreUIDelegateObject?
|
||||
|
||||
var biometricStateModel: ActionBiometricStateModel?
|
||||
|
||||
/// For listening to foreground notification.
|
||||
var cancellable: Cancellable?
|
||||
|
||||
public required init(model: MVMCoreUI.PageBehaviorModelProtocol, delegateObject: MVMCoreUI.MVMCoreUIDelegateObject?) {
|
||||
self.delegateObject = delegateObject
|
||||
}
|
||||
|
||||
public func canHandleAction(with model: MVMCore.ActionModelProtocol, additionalData: [AnyHashable : Any]?) -> Bool {
|
||||
switch model {
|
||||
case is ActionRegisterFidoModel:
|
||||
// Perform the registration action here to have unique error handling.
|
||||
return true
|
||||
case let model as ActionBiometricStateModel:
|
||||
// Store the model to use
|
||||
biometricStateModel = model
|
||||
return false
|
||||
case let model as ActionAlertModel:
|
||||
// Check if this is the biometric disabled alert, and listen for foreground.
|
||||
guard let biometricStateModel = biometricStateModel,
|
||||
let disabledAlert = biometricStateModel.biometricsDisabledAction as? ActionAlertModel,
|
||||
model.alert.id == disabledAlert.alert.id else {
|
||||
return false
|
||||
}
|
||||
listenForForegroundEntry(additionalData)
|
||||
return false
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
public func handleAction(with model: MVMCore.ActionModelProtocol, additionalData: [AnyHashable : Any]?) async throws {
|
||||
guard let model = model as? ActionRegisterFidoModel else { return }
|
||||
try await handleRegisterFidoAction(model: model, additionalData: additionalData)
|
||||
// The fido register action doesn't always throw an error code when it fails.
|
||||
_ = try await handleDontAllowState(additionalData)
|
||||
}
|
||||
|
||||
public func handleRegisterFidoAction(model: ActionRegisterFidoModel, additionalData: [AnyHashable : Any]?) async throws {
|
||||
do {
|
||||
try await MVMCoreActionHandler.shared()?.handleAction(with: model, additionalData: additionalData, delegateObject: self.delegateObject)
|
||||
}
|
||||
catch {
|
||||
// Any fido registration error (other than don't allow) can be shown as a notification.
|
||||
guard try await !handleDontAllowState(additionalData) else { return }
|
||||
//MVMCoreAlertHandler.shared()?.showTopAlertError(withMessage: model.fidoRegistrationError)
|
||||
}
|
||||
}
|
||||
|
||||
/** Check and handle the don't allow state for fido registration.
|
||||
- Returns: Boolean if the don't allow state is handled.
|
||||
*/
|
||||
private func handleDontAllowState(_ additionalData: [AnyHashable : Any]? = nil) async throws -> Bool {
|
||||
guard let biometricStateModel = biometricStateModel,
|
||||
let action = biometricStateModel.biometricsDeniedAction else { return false }
|
||||
// Check with Apple for denied case.
|
||||
var contextError: NSError?
|
||||
let context = LAContext()
|
||||
guard !context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &contextError),
|
||||
let error = contextError,
|
||||
error.code == LAError.biometryNotAvailable.rawValue else { return false }
|
||||
try await self.delegateObject?.actionDelegate?.action(with: action, additionalData: additionalData, delegateObject: self.delegateObject)
|
||||
return true
|
||||
}
|
||||
|
||||
private func listenForForegroundEntry(_ additionalData: [AnyHashable : Any]? = nil) {
|
||||
Task {
|
||||
cancellable?.cancel()
|
||||
cancellable = await NotificationCenter.Publisher(center: .default,
|
||||
name: UIApplication.willEnterForegroundNotification).sink { [weak self] _ in
|
||||
guard let self = self,
|
||||
LAContext().canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil) else { return }
|
||||
self.cancellable?.cancel()
|
||||
guard let biometricStateModel = biometricStateModel,
|
||||
let id = (biometricStateModel.biometricsDisabledAction as? ActionAlertModel)?.alert.id else { return }
|
||||
AlertHandler.shared().cancelAlert { alertObject in
|
||||
return (alertObject.alertModel as? AlertModel)?.id == id
|
||||
}
|
||||
Task {
|
||||
try? await self.delegateObject?.actionDelegate?.action(with: biometricStateModel.biometricsEnabledAction, additionalData: additionalData, delegateObject: self.delegateObject)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,127 @@
|
||||
//
|
||||
// ClientParameterBiometricStatusHandler.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Scott Pfeil on 4/11/23.
|
||||
// Copyright © 2023 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import MVMCore
|
||||
import LocalAuthentication
|
||||
|
||||
public final class ClientParameterBiometricStatusHandler: ClientParameterProtocol {
|
||||
public static var name: String = ClientParameterBiometricStatusModel.identifier
|
||||
public var clientParameterModel: ClientParameterBiometricStatusModel
|
||||
required public init(clientParameterModel: ClientParameterBiometricStatusModel) {
|
||||
self.clientParameterModel = clientParameterModel
|
||||
}
|
||||
|
||||
public func fetchClientParameters(requestParameters: [String : Any], timingOutIn timeout: TimeInterval) async -> [String : AnyHashable] {
|
||||
var error: NSError?
|
||||
let context = LAContext()
|
||||
guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else {
|
||||
guard let error = error,
|
||||
let errorType = LAError.Code(rawValue: error.code)?.rawValueString else {
|
||||
return formatReturnParameters("unknown")
|
||||
}
|
||||
return formatReturnParameters(errorType)
|
||||
}
|
||||
return formatReturnParameters("enrolled").mergingRight(["biometricType": context.biometryType.rawValueString])
|
||||
}
|
||||
}
|
||||
|
||||
extension LAError.Code: RawRepresentable {
|
||||
public init?(rawValue: String) {
|
||||
switch rawValue {
|
||||
case "authenticationFailed":
|
||||
self = .authenticationFailed
|
||||
case "userCancel":
|
||||
self = .userCancel
|
||||
case "userFallback":
|
||||
self = .userFallback
|
||||
case "systemCancel":
|
||||
self = .systemCancel
|
||||
case "passcodeNotSet":
|
||||
self = .passcodeNotSet
|
||||
case "appCancel":
|
||||
self = .appCancel
|
||||
case "invalidContext":
|
||||
self = .invalidContext
|
||||
case "biometryNotAvailable":
|
||||
self = .biometryNotAvailable
|
||||
case "biometryNotEnrolled":
|
||||
self = .biometryNotEnrolled
|
||||
case "biometryLockout":
|
||||
self = .biometryLockout
|
||||
case "notInteractive":
|
||||
self = .notInteractive
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
var rawValueString: String {
|
||||
switch self {
|
||||
case .authenticationFailed:
|
||||
return "authenticationFailed"
|
||||
case .userCancel:
|
||||
return "userCancel"
|
||||
case .userFallback:
|
||||
return "userFallback"
|
||||
case .systemCancel:
|
||||
return "systemCancel"
|
||||
case .passcodeNotSet:
|
||||
return "passcodeNotSet"
|
||||
case .appCancel:
|
||||
return "appCancel"
|
||||
case .invalidContext:
|
||||
return "invalidContext"
|
||||
case .biometryNotAvailable:
|
||||
return "biometryNotAvailable"
|
||||
case .biometryNotEnrolled:
|
||||
return "biometryNotEnrolled"
|
||||
case .biometryLockout:
|
||||
return "biometryLockout"
|
||||
case .notInteractive:
|
||||
return "notInteractive"
|
||||
case .touchIDNotAvailable:
|
||||
return "biometryNotAvailable"
|
||||
case .touchIDNotEnrolled:
|
||||
return "biometryNotEnrolled"
|
||||
case .touchIDLockout:
|
||||
return "biometryLockout"
|
||||
@unknown default:
|
||||
return "unknown"
|
||||
}
|
||||
}
|
||||
}
|
||||
extension LABiometryType: RawRepresentable {
|
||||
public init?(rawValue: String) {
|
||||
switch rawValue {
|
||||
case "faceID":
|
||||
self = .faceID
|
||||
case "touchID":
|
||||
self = .touchID
|
||||
case "none":
|
||||
self = .none
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
var rawValueString: String {
|
||||
switch self {
|
||||
case .faceID:
|
||||
return "faceID"
|
||||
case .touchID:
|
||||
return "touchID"
|
||||
case .none:
|
||||
return "none"
|
||||
case .opticID:
|
||||
// TODO: !!!!
|
||||
return ""
|
||||
@unknown default:
|
||||
return "unknown"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
//
|
||||
// ClientParameterBiometricStatusModel.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Scott Pfeil on 4/11/23.
|
||||
// Copyright © 2023 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import MVMCore
|
||||
|
||||
public struct ClientParameterBiometricStatusModel: ClientParameterModelProtocol {
|
||||
public static var identifier: String = "biometricStatus"
|
||||
public var type: String = ClientParameterBiometricStatusModel.identifier
|
||||
@DecodableDefault.UUIDString public var id: String
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
//
|
||||
// ClientParameterBiometricType.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Subramaniam, Ramya on 15/03/23.
|
||||
// Copyright © 2023 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import MVMCore
|
||||
public final class ClientParameterBiometricType: ClientParameterProtocol {
|
||||
public static var name: String = ClientParameterBiometricTypeModel.identifier
|
||||
public var clientParameterModel: ClientParameterBiometricTypeModel
|
||||
required public init(clientParameterModel: ClientParameterBiometricTypeModel) {
|
||||
self.clientParameterModel = clientParameterModel
|
||||
}
|
||||
|
||||
public func fetchClientParameters(requestParameters: [String : Any], timingOutIn timeout: TimeInterval) async -> [String : AnyHashable] {
|
||||
// if MFFidoHelper.canUseTouchId() {
|
||||
// return formatReturnParameters(MFFidoHelper.KeyBiometricTypeTouchId)
|
||||
// } else if MFFidoHelper.canUseFaceId() {
|
||||
// return formatReturnParameters(MFFidoHelper.KeyBiometricTypeFaceId)
|
||||
// } else {
|
||||
return formatReturnParameters("faceId")
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
//
|
||||
// ClientParameterBiometricTypeModel.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Subramaniam, Ramya on 15/03/23.
|
||||
// Copyright © 2023 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
import MVMCore
|
||||
|
||||
public struct ClientParameterBiometricTypeModel: ClientParameterModelProtocol {
|
||||
public static var identifier: String = "bioMetricType"
|
||||
public var type: String
|
||||
@DecodableDefault.UUIDString public var id: String
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
//
|
||||
// ClientParameterBiometricsEnabledHandler.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Arun Kumar Chintakrinda on 06/05/24.
|
||||
// Copyright © 2024 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import MVMCore
|
||||
public final class ClientParameterBiometricsEnabledHandler: ClientParameterProtocol {
|
||||
public static var name: String = ClientParameterBiometricsEnabledModel.identifier
|
||||
public var clientParameterModel: ClientParameterBiometricsEnabledModel
|
||||
required public init(clientParameterModel: ClientParameterBiometricsEnabledModel) {
|
||||
self.clientParameterModel = clientParameterModel
|
||||
}
|
||||
|
||||
public func fetchClientParameters(requestParameters: [String : Any], timingOutIn timeout: TimeInterval) async -> [String : AnyHashable] {
|
||||
|
||||
// guard let _ = MFFidoHelper.getFidoGUIDForLoggedInCustomer(), (MFFidoHelper.canUseFaceId() || MFFidoHelper.canUseTouchId()) else {
|
||||
// return formatReturnParameters(false)
|
||||
// }
|
||||
return formatReturnParameters(false)
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
//
|
||||
// ClientParameterBiometricsEnabledModel.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Arun Kumar Chintakrinda on 06/05/24.
|
||||
// Copyright © 2024 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import MVMCore
|
||||
|
||||
public struct ClientParameterBiometricsEnabledModel: ClientParameterModelProtocol {
|
||||
public static var identifier: String = "biometricsEnabled"
|
||||
public var type: String = ClientParameterBiometricsEnabledModel.identifier
|
||||
@DecodableDefault.UUIDString public var id: String
|
||||
}
|
||||
@ -8,6 +8,7 @@
|
||||
|
||||
import Foundation
|
||||
import MVMCoreUI
|
||||
import VDS
|
||||
|
||||
public protocol MVMCoreActionScrollProtocol: MVMCoreActionDelegateProtocol {
|
||||
|
||||
@ -48,5 +49,351 @@ public class JSONCreatorActionHandler: MVMCoreUIActionHandler {
|
||||
if let bundle = MVMCoreUIUtility.bundleForMVMCoreUI() {
|
||||
MVMCoreCache.shared()?.registerBundle(forImages: bundle)
|
||||
}
|
||||
MVMCoreCache.shared()?.registerBundle(forImages: Bundle.main)
|
||||
// ModelRegistry.register(handler: ClientParameterTest1.self, for: ClientParameterTest1Model.self)
|
||||
// ModelRegistry.register(handler: ClientParameterTest2.self, for: ClientParameterTest2Model.self)
|
||||
// ModelRegistry.register(handler: ClientParameterTest3.self, for: ClientParameterTest3Model.self)
|
||||
// ModelRegistry.register(handler: ClientParameterTest4.self, for: ClientParameterTest4Model.self)
|
||||
ModelRegistry.register(handler: ActionReplaceTestHandler.self, for: ActionReplaceTestModel.self)
|
||||
// ModelRegistry.register(handler: HeadersH1ButtonGroup.self, for: HeadersH1ButtonGroupModel.self)
|
||||
|
||||
ModelRegistry.register(handler: ClientParameterESimCapable.self, for: ClientParameterESimCapableModel.self)
|
||||
ModelRegistry.register(handler: ClientParameterESimUnlocked.self, for: ClientParameterESimUnlockedModel.self)
|
||||
ModelRegistry.register(handler: ClientParameterCurrentLocation.self, for: ClientParameterCurrentLocationModel.self)
|
||||
ModelRegistry.register(handler: ClientParameterDefaultPreference.self, for: ClientParameterDefaultPreferenceModel.self)
|
||||
ModelRegistry.register(handler: ClientParameterBiometricStatusHandler.self, for: ClientParameterBiometricStatusModel.self)
|
||||
ModelRegistry.register(handler: ClientParameterBiometricType.self, for: ClientParameterBiometricTypeModel.self)
|
||||
ModelRegistry.register(handler: ClientParameterBiometricsEnabledHandler.self, for: ClientParameterBiometricsEnabledModel.self)
|
||||
|
||||
|
||||
ModelRegistry.register(handler: RegisterPushNotificationActionHandler.self, for: ActionRegisterPushNotificationModel.self)
|
||||
ModelRegistry.register(handler: ActionBiometricStateHandler.self, for: ActionBiometricStateModel.self)
|
||||
ModelRegistry.register(handler: ActionRegisterFidoHandler.self, for: ActionRegisterFidoModel.self)
|
||||
|
||||
ModelRegistry.register(handler: BiometricSetupBehavior.self, for: BiometricSetupBehaviorModel.self)
|
||||
|
||||
BundleManager.register(Bundle.main.bundlePath)
|
||||
try? ModelRegistry.throwable_register(type: PatternNavigationItemModel.self, allowsReplace: true)
|
||||
}
|
||||
}
|
||||
|
||||
public struct ClientParameterESimCapableModel: ClientParameterModelProtocol {
|
||||
public static var identifier: String = "eSimCapable"
|
||||
public var type: String
|
||||
@DecodableDefault.UUIDString public var id: String
|
||||
}
|
||||
|
||||
public final class ClientParameterESimCapable: ClientParameterProtocol {
|
||||
public static var name: String = ClientParameterESimCapableModel.identifier
|
||||
public var clientParameterModel: ClientParameterESimCapableModel
|
||||
public init(clientParameterModel: ClientParameterESimCapableModel) {
|
||||
self.clientParameterModel = clientParameterModel
|
||||
}
|
||||
|
||||
public func fetchClientParameters(requestParameters: [String : Any], timingOutIn timeout: TimeInterval) async -> [String : AnyHashable] {
|
||||
return formatReturnParameters(true)
|
||||
}
|
||||
}
|
||||
|
||||
public struct ClientParameterESimUnlockedModel: ClientParameterModelProtocol {
|
||||
public static var identifier: String = "deviceESimUnlocked"
|
||||
public var type: String
|
||||
@DecodableDefault.UUIDString public var id: String
|
||||
}
|
||||
|
||||
public final class ClientParameterESimUnlocked: ClientParameterProtocol {
|
||||
public static var name: String = ClientParameterESimUnlockedModel.identifier
|
||||
public var clientParameterModel: ClientParameterESimUnlockedModel
|
||||
public init(clientParameterModel: ClientParameterESimUnlockedModel) {
|
||||
self.clientParameterModel = clientParameterModel
|
||||
}
|
||||
|
||||
public func fetchClientParameters(requestParameters: [String : Any], timingOutIn timeout: TimeInterval) async -> [String : AnyHashable] {
|
||||
return formatReturnParameters(true)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public struct ClientParameterDefaultPreferenceModel: ClientParameterModelProtocol {
|
||||
public static var identifier: String = "defaultPreference"
|
||||
public var type: String
|
||||
public var defaultPreferenceKeys: [String]
|
||||
@DecodableDefault.UUIDString public var id: String
|
||||
}
|
||||
|
||||
public class ClientParameterDefaultPreference: ClientParameterProtocol {
|
||||
|
||||
public static var name: String = ClientParameterDefaultPreferenceModel.identifier
|
||||
public var clientParameterModel: ClientParameterDefaultPreferenceModel
|
||||
required public init(clientParameterModel: ClientParameterDefaultPreferenceModel) {
|
||||
self.clientParameterModel = clientParameterModel
|
||||
}
|
||||
|
||||
public func fetchClientParameters(requestParameters: [String : Any], timingOutIn timeout: TimeInterval) async -> [String : AnyHashable] {
|
||||
|
||||
guard let defaultPreferenceData = UserDefaults.standard.dictionary(forKey: "defaultPreferences") else { return valueOnTimeout() }
|
||||
|
||||
let defaultPreferenceKeys = clientParameterModel.defaultPreferenceKeys
|
||||
var defaultPreferenceParams: [String: AnyHashable] = [:]
|
||||
|
||||
for key in defaultPreferenceKeys {
|
||||
guard let value = (defaultPreferenceData[key] as? [String: AnyHashable])?[KeyValue] else { continue }
|
||||
defaultPreferenceParams[key] = value
|
||||
}
|
||||
|
||||
return defaultPreferenceParams
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public struct ClientParameterCurrentLocationInputsModel: Codable {
|
||||
public let accuracy: Double?
|
||||
public let timeThreshold: Double?
|
||||
}
|
||||
|
||||
public struct ClientParameterCurrentLocationModel: ClientParameterModelProtocol {
|
||||
public static var identifier: String = "currentLocation"
|
||||
public var type: String
|
||||
public let inputParameters: ClientParameterCurrentLocationInputsModel?
|
||||
@DecodableDefault.UUIDString public var id: String
|
||||
}
|
||||
|
||||
public final class ClientParameterCurrentLocation: ClientParameterProtocol {
|
||||
public static var name: String = ClientParameterCurrentLocationModel.identifier
|
||||
public var clientParameterModel: ClientParameterCurrentLocationModel
|
||||
public init(clientParameterModel: ClientParameterCurrentLocationModel) {
|
||||
self.clientParameterModel = clientParameterModel
|
||||
}
|
||||
|
||||
public func fetchClientParameters(requestParameters: [String : Any], timingOutIn timeout: TimeInterval) async -> [String : AnyHashable] {
|
||||
return formatReturnParameters(true)
|
||||
}
|
||||
}
|
||||
|
||||
struct ActionReplaceTestModel: ActionModelProtocol {
|
||||
public static var identifier: String = "replaceTest"
|
||||
public var actionType: String = ActionReplaceTestModel.identifier
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
}
|
||||
|
||||
struct ActionReplaceTestHandler: MVMCoreActionHandlerProtocol {
|
||||
func execute(with model: MVMCore.ActionModelProtocol, delegateObject: MVMCore.DelegateObject?, additionalData: [AnyHashable : Any]?) async throws {
|
||||
var json = [
|
||||
KeyModuleMap: [
|
||||
"testYO": [
|
||||
"moduleName": "testYO",
|
||||
"moleculeName":"listItem",
|
||||
"gone": false,
|
||||
"id": "testYO",
|
||||
"molecule": [
|
||||
"moleculeName": "externalLink",
|
||||
"title": "link",
|
||||
"action": [
|
||||
"actionType": "noop"
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
var loadObject = MVMCoreLoadObject()
|
||||
await MVMCoreLoadRequestOperation.processJSON(fromServer: json, loadObject: loadObject)
|
||||
}
|
||||
}
|
||||
|
||||
public class PatternNavigationItemModel: NavigationItemModel {
|
||||
|
||||
var pattern: String?
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case id
|
||||
case moleculeName
|
||||
case title
|
||||
case hidden
|
||||
case backgroundColor
|
||||
case tintColor
|
||||
case line
|
||||
case hidesSystemBackButton
|
||||
case alwaysShowBackButton
|
||||
case backButton
|
||||
case additionalLeftButtons
|
||||
case additionalRightButtons
|
||||
case titleView
|
||||
case style
|
||||
case titleOffset
|
||||
case pattern
|
||||
}
|
||||
|
||||
public required init(from decoder: any Decoder) throws {
|
||||
super.init()
|
||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||
pattern = try typeContainer.decodeIfPresent(String.self, forKey: .pattern)
|
||||
if let pattern = pattern {
|
||||
var patternJSON: [AnyHashable: Any]? = nil
|
||||
MVMCoreCache.shared()?.fetchJSON(forModule: "navigationPatterns", queue: nil, waitUntilFinished: true, completionHandler: { module in
|
||||
patternJSON = module?.optionalDictionaryWithChainOfKeysOrIndexes(["navigationPatterns", pattern])
|
||||
})
|
||||
guard let patternJSON = patternJSON else {
|
||||
throw ModelRegistry.Error.decoderOther(message: "\(self) JSON not found for pattern: \(pattern)")
|
||||
}
|
||||
let data = try JSONSerialization.data(withJSONObject: patternJSON)
|
||||
let navigationObject = try JSONDecoder.create().decode(NavigationItemModel.self, from: data)
|
||||
line = navigationObject.line
|
||||
hidesSystemBackButton = navigationObject.hidesSystemBackButton
|
||||
style = navigationObject.style
|
||||
tintColor = navigationObject.tintColor
|
||||
alwaysShowBackButton = navigationObject.alwaysShowBackButton
|
||||
backButton = navigationObject.backButton
|
||||
additionalLeftButtons = navigationObject.additionalLeftButtons
|
||||
additionalRightButtons = navigationObject.additionalRightButtons
|
||||
titleView = navigationObject.titleView
|
||||
titleOffset = navigationObject.titleOffset
|
||||
}
|
||||
|
||||
id = try typeContainer.decodeIfPresent(String.self, forKey: .id) ?? UUID().uuidString
|
||||
title = try typeContainer.decodeIfPresent(String.self, forKey: .title)
|
||||
if let hidden = try typeContainer.decodeIfPresent(Bool.self, forKey: .hidden) {
|
||||
self.hidden = hidden
|
||||
}
|
||||
if let backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor) {
|
||||
self.backgroundColor = backgroundColor
|
||||
}
|
||||
if let tintColor = try typeContainer.decodeIfPresent(Color.self, forKey: .tintColor) {
|
||||
self.tintColor = tintColor
|
||||
}
|
||||
if let line = try typeContainer.decodeIfPresent(LineModel.self, forKey: .line) {
|
||||
self.line = line
|
||||
}
|
||||
if let hidesSystemBackButton = try typeContainer.decodeIfPresent(Bool.self, forKey: .hidesSystemBackButton) {
|
||||
self.hidesSystemBackButton = hidesSystemBackButton
|
||||
}
|
||||
if let alwaysShowBackButton = try typeContainer.decodeIfPresent(Bool.self, forKey: .alwaysShowBackButton) {
|
||||
self.alwaysShowBackButton = alwaysShowBackButton
|
||||
}
|
||||
if let backButton: (NavigationButtonModelProtocol & MoleculeModelProtocol) = try typeContainer.decodeModelIfPresent(codingKey: .backButton) {
|
||||
self.backButton = backButton
|
||||
}
|
||||
if let additionalLeftButtons: [(NavigationButtonModelProtocol & MoleculeModelProtocol)] = try typeContainer.decodeModelsIfPresent(codingKey: .additionalLeftButtons) {
|
||||
self.additionalLeftButtons = additionalLeftButtons
|
||||
}
|
||||
if let additionalRightButtons: [(NavigationButtonModelProtocol & MoleculeModelProtocol)] = try typeContainer.decodeModelsIfPresent(codingKey: .additionalRightButtons) {
|
||||
self.additionalRightButtons = additionalRightButtons
|
||||
}
|
||||
if let titleView: MoleculeModelProtocol? = try typeContainer.decodeMoleculeIfPresent(codingKey: .titleView) {
|
||||
self.titleView = titleView
|
||||
}
|
||||
if let style = try typeContainer.decodeIfPresent(NavigationItemStyle.self, forKey: .style) {
|
||||
self.style = style
|
||||
}
|
||||
if let titleOffset = try typeContainer.decodeIfPresent(UIOffset.self, forKey: .titleOffset) {
|
||||
self.titleOffset = titleOffset
|
||||
}
|
||||
line?.inverted = style == .dark
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
//public class HeadersH1ButtonGroupModel: HeaderModel, MoleculeModelProtocol, ParentMoleculeModelProtocol {
|
||||
//
|
||||
// //--------------------------------------------------
|
||||
// // MARK: - Properties
|
||||
// //--------------------------------------------------
|
||||
// public static var identifier: String = "headerH1BtnGrp"
|
||||
// public var titleLockup: TitleLockupModel
|
||||
// public var buttons: ButtonGroupModel
|
||||
//
|
||||
// public var children: [MoleculeModelProtocol] {
|
||||
// [titleLockup, buttons]
|
||||
// }
|
||||
//
|
||||
// public func replaceChildMolecule(with molecule: MoleculeModelProtocol) throws -> Bool {
|
||||
// return try replaceChildMolecule(at: &titleLockup, with: molecule)
|
||||
// || replaceChildMolecule(at: &buttons, with: molecule)
|
||||
// }
|
||||
//
|
||||
// //--------------------------------------------------
|
||||
// // MARK: - Initializer
|
||||
// //--------------------------------------------------
|
||||
//
|
||||
// public init(titleLockup: TitleLockupModel, buttons: ButtonGroupModel) {
|
||||
// self.titleLockup = titleLockup
|
||||
// self.buttons = buttons
|
||||
// super.init()
|
||||
// }
|
||||
//
|
||||
// //--------------------------------------------------
|
||||
// // MARK: - Subclass
|
||||
// //--------------------------------------------------
|
||||
//
|
||||
// public override func setDefaults() {
|
||||
// super.setDefaults()
|
||||
// if titleLockup.title.fontStyle == nil {
|
||||
// titleLockup.title.fontStyle = Styler.Font.RegularTitle2XLarge
|
||||
// }
|
||||
// if titleLockup.subTitle?.fontStyle == nil {
|
||||
// titleLockup.subTitle?.fontStyle = Styler.Font.RegularTitleMedium
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// //--------------------------------------------------
|
||||
// // MARK: - Keys
|
||||
// //--------------------------------------------------
|
||||
//
|
||||
// private enum CodingKeys: String, CodingKey {
|
||||
// case moleculeName
|
||||
// case titleLockup
|
||||
// case buttons
|
||||
// }
|
||||
//
|
||||
// //--------------------------------------------------
|
||||
// // MARK: - Codec
|
||||
// //--------------------------------------------------
|
||||
// required public init(from decoder: Decoder) throws {
|
||||
// let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||
// titleLockup = try typeContainer.decodeMolecule(codingKey: .titleLockup)
|
||||
// buttons = try typeContainer.decode(ButtonGroupModel.self, forKey: .buttons)
|
||||
// try super.init(from: decoder)
|
||||
// }
|
||||
//
|
||||
// public override func encode(to encoder: Encoder) throws {
|
||||
// try super.encode(to: encoder)
|
||||
// var container = encoder.container(keyedBy: CodingKeys.self)
|
||||
// try container.encode(moleculeName, forKey: .moleculeName)
|
||||
// try container.encode(buttons, forKey: .buttons)
|
||||
// try container.encode(titleLockup, forKey: .titleLockup)
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//open class HeadersH1ButtonGroup: HeaderView {
|
||||
// //--------------------------------------------------
|
||||
// // MARK: - Outlets
|
||||
// //--------------------------------------------------
|
||||
// public let titleLockup = TitleLockup()
|
||||
// public let buttons = ButtonGroup()
|
||||
// public lazy var stack: Stack<StackModel> = {
|
||||
// Stack<StackModel>.createStack(with: [titleLockup, buttons], spacing: Padding.Eighteen)
|
||||
// }()
|
||||
//
|
||||
// //-------------------------------------------------------
|
||||
// // MARK: - View Lifecycle
|
||||
// //-------------------------------------------------------
|
||||
// open override func setupView() {
|
||||
// super.setupView()
|
||||
// addMolecule(stack)
|
||||
// stack.restack()
|
||||
// }
|
||||
//
|
||||
// //----------------------------------------------------
|
||||
// // MARK: - Molecule
|
||||
// //------------------------------------------------------
|
||||
// open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||
// super.set(with: model, delegateObject, additionalData)
|
||||
// guard let model = model as? HeadersH1ButtonGroupModel else { return }
|
||||
//
|
||||
// titleLockup.set(with: model.titleLockup, delegateObject, additionalData)
|
||||
// buttons.set(with: model.buttons, delegateObject, additionalData)
|
||||
// }
|
||||
//
|
||||
// open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? { 121 }
|
||||
//}
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
//
|
||||
// RegisterPushNotificationActionHandler.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Digvijay Mallegowda Chinnappa on 12/15/21.
|
||||
// Copyright © 2021 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import CoreMedia
|
||||
import MVMCore
|
||||
|
||||
public struct RegisterPushNotificationActionHandler: MVMCoreActionHandlerProtocol {
|
||||
public init(){}
|
||||
public func execute(with model: ActionModelProtocol, delegateObject: DelegateObject?, additionalData: [AnyHashable : Any]?) async throws {
|
||||
guard let model = model as? ActionRegisterPushNotificationModel else { return }
|
||||
try await withCheckedThrowingContinuation { continuation in
|
||||
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound], completionHandler: { granted, error in
|
||||
guard var completionAction = model.completionAction else {
|
||||
continuation.resume()
|
||||
return
|
||||
}
|
||||
var extraParameter = completionAction.extraParameters ?? [:]
|
||||
extraParameter["granted"] = JSONValue(booleanLiteral: granted)
|
||||
completionAction.extraParameters = extraParameter
|
||||
let action = completionAction
|
||||
Task {
|
||||
do {
|
||||
try await (delegateObject?.actionDelegate as? ActionDelegateProtocol)?.performAction(with: action, additionalData: additionalData, delegateObject: delegateObject)
|
||||
continuation.resume()
|
||||
} catch {
|
||||
continuation.resume(throwing: error)
|
||||
}
|
||||
}
|
||||
})
|
||||
} as Void
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user