Last active
July 9, 2021 21:03
-
-
Save Bogidon/61411fb055db80cc52eb50234e72f16e to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const TRANSITIONS = { | |
| BACK: 'BACK', | |
| CONTINUE: 'CONTINUE', | |
| }; | |
| const STATES = { | |
| INITIALIZE: 'INITIALIZE', | |
| VEHICLE: 'VEHICLE', | |
| ADDITIONAL_VEHICLES: 'ADDITIONAL_VEHICLES', | |
| PERSONAL_DETAILS_INTERSTITIAL: 'ENTER_PERSONAL_DETAILS_INTERSTITIAL', | |
| NAME: 'NAME', | |
| ADDRESS: 'ADDRESS', | |
| EMAIL: 'EMAIL', | |
| BIRTHDATE: 'BIRTHDATE', | |
| GENDER_IDENTITY: 'GENDER_IDENTITY', | |
| VALID_DRIVERS_LICENSE: 'VALID_DRIVERS_LICENSE', | |
| TICKETS_AND_ACCIDENTS: 'TICKETS_AND_ACCIDENTS', | |
| DUI: 'DUI', | |
| SR_22: 'SR_22', | |
| ADDITIONAL_DRIVERS: 'ADDITIONAL_DRIVERS', | |
| INSURANCE_VERIFICATION: 'INSURANCE_VERIFICATION', | |
| INSURANCE_INFORMATION: 'INSURANCE_INFORMATION', | |
| MARITAL_STATUS: 'MARITAL_STATUS', | |
| HOME_OWNERSHIP: 'HOME_OWNERSHIP', | |
| MILITARY_SERVICE: 'MILITARY_SERVICE', | |
| LOADING_OFFERS: 'LOADING_OFFERS', | |
| }; | |
| const GUARDS = { | |
| ZERO_TICKETS_OR_ACCIDENTS: 'ZERO_TICKETS_OR_ACCIDENTS', | |
| CURRENTLY_INSURED: 'CURRENTLY_INSURED', | |
| }; | |
| const INPUTS = { | |
| VEHICLE: 'VEHICLE', | |
| ADDITION_VEHICLES: 'ADDITIONAL_VEHICLES', | |
| FIRST_NAME: 'FIRST_NAME', | |
| LAST_NAME: 'LAST_NAME', | |
| ADDRESS: 'ADDRESS', | |
| EMAIL: 'EMAIL', | |
| BIRTHDAY: 'BIRTHDAY', | |
| GENDER: 'GENDER', | |
| VALID_DRIVERS_LICENSE: 'VALID_DRIVERS_LICENSE', | |
| TICKETS_AND_ACCIDENTS: 'TICKETS_AND_ACCIDENTS', | |
| DUI: 'DUI', | |
| SR_22: 'SR_22', | |
| MULTIPLE_DRIVERS: 'MULTIPLE_DRIVERS', | |
| CURRENTLY_INSURED: 'CURRENTLY_INSURED', | |
| CURRENT_INSURER: 'CURRENT_INSURER', | |
| MARRIED: 'MARRIED', | |
| HOME_OWNER: 'HOME_OWNER', | |
| MILITARY_MEMBER: 'MILITARY_MEMBER', | |
| }; | |
| const fetchMachine = Machine({ | |
| id: 'AutoInsurancePrefillFlow', | |
| initial: STATES.VEHICLE, | |
| context: { | |
| retries: 0 | |
| }, | |
| states: { | |
| // Vehicle | |
| [STATES.VEHICLE]: { | |
| on: { | |
| [TRANSITIONS.CONTINUE]: STATES.ADDITIONAL_VEHICLES, | |
| }, | |
| }, | |
| [STATES.ADDITIONAL_VEHICLES]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.VEHICLE, | |
| [TRANSITIONS.CONTINUE]: STATES.PERSONAL_DETAILS_INTERSTITIAL, | |
| }, | |
| }, | |
| // Driver information | |
| [STATES.PERSONAL_DETAILS_INTERSTITIAL]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.ADDITIONAL_VEHICLES, | |
| [TRANSITIONS.CONTINUE]: STATES.NAME, | |
| }, | |
| }, | |
| [STATES.NAME]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.PERSONAL_DETAILS_INTERSTITIAL, | |
| [TRANSITIONS.CONTINUE]: STATES.ADDRESS, | |
| }, | |
| }, | |
| [STATES.ADDRESS]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.NAME, | |
| [TRANSITIONS.CONTINUE]: STATES.EMAIL, | |
| }, | |
| }, | |
| [STATES.EMAIL]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.ADDRESS, | |
| [TRANSITIONS.CONTINUE]: STATES.BIRTHDATE, | |
| }, | |
| }, | |
| [STATES.BIRTHDATE]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.EMAIL, | |
| [TRANSITIONS.CONTINUE]: STATES.GENDER_IDENTITY, | |
| }, | |
| }, | |
| [STATES.GENDER_IDENTITY]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.BIRTHDATE, | |
| [TRANSITIONS.CONTINUE]: STATES.VALID_DRIVERS_LICENSE, | |
| }, | |
| }, | |
| [STATES.VALID_DRIVERS_LICENSE]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.GENDER_IDENTITY, | |
| [TRANSITIONS.CONTINUE]: STATES.TICKETS_AND_ACCIDENTS, | |
| }, | |
| }, | |
| [STATES.TICKETS_AND_ACCIDENTS]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.VALID_DRIVERS_LICENSE, | |
| [TRANSITIONS.CONTINUE]: [ | |
| { | |
| target: STATES.ADDITIONAL_DRIVERS, | |
| cond: GUARDS.ZERO_TICKETS_OR_ACCIDENTS, | |
| }, | |
| { | |
| target: STATES.DUI, | |
| }, | |
| ], | |
| }, | |
| }, | |
| [STATES.DUI]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.TICKETS_AND_ACCIDENTS, | |
| [TRANSITIONS.CONTINUE]: STATES.SR_22, | |
| }, | |
| }, | |
| [STATES.SR_22]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.DUI, | |
| [TRANSITIONS.CONTINUE]: STATES.ADDITIONAL_DRIVERS, | |
| }, | |
| }, | |
| [STATES.ADDITIONAL_DRIVERS]: { | |
| on: { | |
| [TRANSITIONS.BACK]: [ | |
| { | |
| target: STATES.TICKETS_AND_ACCIDENTS, | |
| cond: GUARDS.ZERO_TICKETS_OR_ACCIDENTS, | |
| }, | |
| { | |
| target: STATES.SR_22, | |
| }, | |
| ], | |
| [TRANSITIONS.CONTINUE]: STATES.INSURANCE_VERIFICATION, | |
| }, | |
| }, | |
| // Current insurance | |
| [STATES.INSURANCE_VERIFICATION]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.ADDITIONAL_DRIVERS, | |
| [TRANSITIONS.CONTINUE]: [ | |
| { | |
| target: STATES.INSURANCE_INFORMATION, | |
| cond: GUARDS.CURRENTLY_INSURED, | |
| }, | |
| { | |
| target: STATES.MARITAL_STATUS, | |
| }, | |
| ], | |
| }, | |
| }, | |
| [STATES.INSURANCE_INFORMATION]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.INSURANCE_VERIFICATION, | |
| [TRANSITIONS.CONTINUE]: STATES.MARITAL_STATUS, | |
| }, | |
| }, | |
| // Discounts | |
| [STATES.MARITAL_STATUS]: { | |
| on: { | |
| [TRANSITIONS.BACK]: [ | |
| { | |
| target: STATES.INSURANCE_INFORMATION, | |
| cond: GUARDS.CURRENTLY_INSURED, | |
| }, | |
| { | |
| target: STATES.INSURANCE_VERIFICATION, | |
| }, | |
| ], | |
| [TRANSITIONS.CONTINUE]: STATES.HOME_OWNERSHIP, | |
| }, | |
| }, | |
| [STATES.HOME_OWNERSHIP]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.MARITAL_STATUS, | |
| [TRANSITIONS.CONTINUE]: STATES.MILITARY_SERVICE, | |
| }, | |
| }, | |
| [STATES.MILITARY_SERVICE]: { | |
| on: { | |
| [TRANSITIONS.BACK]: STATES.HOME_OWNERSHIP, | |
| [TRANSITIONS.CONTINUE]: STATES.LOADING_OFFERS, | |
| }, | |
| }, | |
| // Loading | |
| [STATES.LOADING_OFFERS]: { | |
| type: 'final', | |
| }, | |
| } | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment