Last active
August 20, 2020 16:02
-
-
Save hnordt/eff424459b4beba5d1f0d7ae9d888b38 to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
This file contains 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
Machine({ | |
id: "booking", | |
context: { | |
newsletterIndex: null, | |
placementId: null, | |
availabilityId: null, | |
reservationId: null | |
}, | |
type: "parallel", | |
states: { | |
site: { | |
initial: "loading", | |
states: { | |
loading: { | |
invoke: { | |
src: "fetchSite", | |
onDone: "success", | |
onError: "failure" | |
} | |
}, | |
success: {}, | |
failure: { | |
on: { | |
RETRY: { | |
target: "loading" | |
} | |
} | |
} | |
}, | |
}, | |
newsletterSample: { | |
initial: "loading", | |
states: { | |
loading: { | |
invoke: { | |
src: "fetchNewsletterSample", | |
onDone: "success", | |
onError: "failure" | |
} | |
}, | |
success: {}, | |
failure: { | |
on: { | |
RETRY: { | |
target: "loading" | |
} | |
} | |
} | |
}, | |
}, | |
placements: { | |
initial: "loading", | |
states: { | |
loading: { | |
invoke: { | |
src: "fetchPlacements", | |
onDone: "success", | |
onError: "failure" | |
} | |
}, | |
success: {}, | |
failure: { | |
on: { | |
RETRY: { | |
target: "loading" | |
} | |
} | |
} | |
}, | |
}, | |
availabilities: { | |
initial: "idle", | |
states: { | |
idle: {}, | |
loading: { | |
invoke: { | |
src: "fetchAvailabilities", | |
onDone: "success", | |
onError: "failure" | |
} | |
}, | |
success: {}, | |
failure: { | |
on: { | |
RETRY: { | |
target: "loading" | |
} | |
} | |
} | |
}, | |
on: { | |
SELECT_PLACEMENT: { | |
target: ".loading" | |
} | |
} | |
}, | |
reserveDate: { | |
initial: "idle", | |
states: { | |
idle: {}, | |
loading: { | |
invoke: { | |
src: "reserveDate", | |
onDone: "success", | |
onError: "failure" | |
} | |
}, | |
success: {}, | |
failure: { | |
on: { | |
RETRY: { | |
target: "loading" | |
} | |
} | |
} | |
}, | |
on: { | |
SELECT_AVAILABILITY: { | |
target: ".loading" | |
} | |
} | |
}, | |
extendReservation: { | |
initial: "idle", | |
states: { | |
idle: {}, | |
loading: { | |
invoke: { | |
src: "extendReservation", | |
onDone: "success", | |
onError: "failure" | |
} | |
}, | |
success: {}, | |
failure: { | |
on: { | |
RETRY: { | |
target: "loading" | |
} | |
} | |
} | |
}, | |
on: { | |
STORE_ADVERTISER: { | |
target: ".loading" | |
}, | |
STORE_AD_COPY: { | |
target: ".loading" | |
}, | |
SUBMIT_ADVERTISER: { | |
target: ".loading" | |
}, | |
SUBMIT_AD_COPY: { | |
target: ".loading" | |
}, | |
SUBMIT_PAYMENT: { | |
target: ".loading" | |
} | |
} | |
}, | |
releaseReservation: { | |
initial: "idle", | |
states: { | |
idle: {}, | |
loading: { | |
invoke: { | |
src: "releaseReservation", | |
onDone: "success", | |
onError: "failure" | |
} | |
}, | |
success: {}, | |
failure: { | |
on: { | |
RETRY: { | |
target: "loading" | |
} | |
} | |
} | |
}, | |
on: { | |
SELECT_PLACEMENT: { | |
target: ".loading" | |
}, | |
SELECT_AVAILABILITY: { | |
target: ".loading" | |
}, | |
CANCEL_RESERVATION: { | |
target: ".loading" | |
} | |
} | |
}, | |
steps: { | |
initial: "step1", | |
states: { | |
step1: { | |
on: { | |
SELECT_NEWSLETTER: { | |
actions: "setNewsletterIndex", | |
}, | |
DISMISS_NEWSLETTER: { | |
actions: "resetNewsLetterIndex", | |
}, | |
SPONSORSHIP_OPTIONS: { | |
target: "step2", | |
}, | |
}, | |
}, | |
step2: { | |
on: { | |
SELECT_PLACEMENT: { | |
actions: "setPlacementId", | |
}, | |
SUBMIT_PLACEMENT: { | |
target: "step3", | |
}, | |
}, | |
}, | |
step3: { | |
on: { | |
SELECT_AVAILABILITY: { | |
actions: "setAvailabilityId", | |
}, | |
SUBMIT_AVAILABILITY: { | |
target: "step4", | |
}, | |
STEP_2: { | |
target: "step2", | |
}, | |
}, | |
}, | |
step4: { | |
type: "parallel", | |
states: { | |
upsertAdvertiser: { | |
initial: "idle", | |
states: { | |
idle: { | |
on: { | |
SUBMIT_ADVERTISER: { | |
target: "loading" | |
} | |
} | |
}, | |
loading: { | |
invoke: { | |
src: "upsertAdvertiser", | |
onDone: "success", | |
onError: "failure" | |
} | |
}, | |
success: { | |
type: "final" | |
}, | |
failure: { | |
on: { | |
RETRY: { | |
target: "loading" | |
} | |
} | |
} | |
} | |
} | |
}, | |
on: { | |
STORE_ADVERTISER: { | |
actions: "storeAdvertiser" | |
}, | |
STEP_2: { | |
target: "step2", | |
}, | |
STEP_3: { | |
target: "step3", | |
}, | |
}, | |
onDone: { | |
target: "step5", | |
} | |
}, | |
step5: { | |
type: "parallel", | |
states: { | |
upsertAdCopy: { | |
initial: "idle", | |
states: { | |
idle: { | |
on: { | |
SUBMIT_AD_COPY: { | |
target: "loading" | |
} | |
} | |
}, | |
loading: { | |
invoke: { | |
src: "upsertAdCopy", | |
onDone: "success", | |
onError: "failure" | |
} | |
}, | |
success: { | |
type: "final" | |
}, | |
failure: { | |
on: { | |
RETRY: { | |
target: "loading" | |
} | |
} | |
} | |
} | |
}, | |
uploadImage: { | |
initial: "idle", | |
states: { | |
idle: { | |
on: { | |
UPLOAD_IMAGE: { | |
target: "loading" | |
} | |
} | |
}, | |
loading: { | |
invoke: { | |
src: "uploadImage", | |
onDone: "success", | |
onError: "failure" | |
} | |
}, | |
success: { | |
type: "final" | |
}, | |
failure: { | |
on: { | |
RETRY: { | |
target: "loading" | |
} | |
} | |
} | |
}, | |
} | |
}, | |
on: { | |
STORE_AD_COPY: { | |
actions: "storeAdCopy" | |
}, | |
STEP_2: { | |
target: "step2", | |
}, | |
STEP_3: { | |
target: "step3", | |
}, | |
STEP_4: { | |
target: "step4", | |
}, | |
}, | |
onDone: { | |
target: "step6", | |
}, | |
}, | |
step6: { | |
type: "parallel", | |
states: { | |
makePayment: { | |
initial: "idle", | |
states: { | |
idle: { | |
on: { | |
SUBMIT_PAYMENT: { | |
target: "loading" | |
} | |
} | |
}, | |
loading: { | |
invoke: { | |
src: "makePayment", | |
onDone: "success", | |
onError: "failure" | |
} | |
}, | |
success: { | |
type: "final" | |
}, | |
failure: { | |
on: { | |
RETRY: { | |
target: "loading" | |
} | |
} | |
} | |
}, | |
} | |
}, | |
on: { | |
STEP_2: { | |
target: "step2", | |
}, | |
STEP_3: { | |
target: "step3", | |
}, | |
STEP_4: { | |
target: "step4", | |
}, | |
STEP_5: { | |
target: "step5", | |
}, | |
}, | |
onDone: { | |
target: "step7", | |
} | |
}, | |
step7: {}, | |
}, | |
} | |
} | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment