Created
January 11, 2023 11:24
-
-
Save unglud/202a1b7588c1a9cccc0f81fd8276668e 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
| var EmailType; | |
| (function (EmailType) { | |
| EmailType["APPLICATION_SUBMISSION"] = "APPLICATION_SUBMISSION"; | |
| EmailType["ACCEPT_OFFER_REMINDER_1"] = "ACCEPT_OFFER_REMINDER_1"; | |
| EmailType["ACCEPT_OFFER_REMINDER_2"] = "ACCEPT_OFFER_REMINDER_2"; | |
| EmailType["ACCEPT_OFFER_REMINDER_3"] = "ACCEPT_OFFER_REMINDER_3"; | |
| EmailType["ACCEPT_OFFER_REMINDER_4"] = "ACCEPT_OFFER_REMINDER_4"; | |
| EmailType["APPROVAL"] = "APPROVAL"; | |
| EmailType["CANCELLATION"] = "CANCELLATION"; | |
| EmailType["COMPANY_INFORMATION_REMINDER_1"] = "COMPANY_INFORMATION_REMINDER_1"; | |
| EmailType["COMPANY_INFORMATION_REMINDER_2"] = "COMPANY_INFORMATION_REMINDER_2"; | |
| EmailType["COMPANY_INFORMATION_REMINDER_3"] = "COMPANY_INFORMATION_REMINDER_3"; | |
| EmailType["CONTRACT_SIGNED"] = "CONTRACT_SIGNED"; | |
| EmailType["OFFER_ACCEPTED"] = "OFFER_ACCEPTED"; | |
| EmailType["PAID_OUT"] = "PAID_OUT"; | |
| EmailType["SUBMIT_APPLICATION_REMINDER_1"] = "SUBMIT_APPLICATION_REMINDER_1"; | |
| EmailType["SUBMIT_APPLICATION_REMINDER_2"] = "SUBMIT_APPLICATION_REMINDER_2"; | |
| EmailType["SUBMIT_APPLICATION_REMINDER_3"] = "SUBMIT_APPLICATION_REMINDER_3"; | |
| EmailType["SUBMIT_APPLICATION_REMINDER_4"] = "SUBMIT_APPLICATION_REMINDER_4"; | |
| EmailType["SUBMIT_APPLICATION_REMINDER_5"] = "SUBMIT_APPLICATION_REMINDER_5"; | |
| })(EmailType || (EmailType = {})); | |
| var ReminderFlowTypes; | |
| (function (ReminderFlowTypes) { | |
| ReminderFlowTypes["COMPANY_INFORMATION_REMINDER"] = "COMPANY_INFORMATION_REMINDER"; | |
| ReminderFlowTypes["SUBMIT_APPLICATION_REMINDER"] = "SUBMIT_APPLICATION_REMINDER"; | |
| ReminderFlowTypes["ACCEPT_OFFER_REMINDER"] = "ACCEPT_OFFER_REMINDER"; | |
| })(ReminderFlowTypes || (ReminderFlowTypes = {})); | |
| var ApplicationState; | |
| (function (ApplicationState) { | |
| ApplicationState["start"] = "start"; | |
| ApplicationState["register"] = "register"; | |
| ApplicationState["new_application"] = "new_application"; | |
| ApplicationState["submitted"] = "submitted"; | |
| ApplicationState["submitted_declined"] = "submitted_declined"; | |
| ApplicationState["approved"] = "approved"; | |
| ApplicationState["accepted"] = "accepted"; | |
| ApplicationState["paidout"] = "paidout"; | |
| ApplicationState["declined"] = "declined"; | |
| ApplicationState["complete"] = "complete"; | |
| })(ApplicationState || (ApplicationState = {})); | |
| const setResolved = (resolved) => assign({ resolved: (context) => (context.resolved = resolved) }); | |
| const machine = Machine({ | |
| context: { | |
| applicationId: 12, | |
| customerId: 34, | |
| resolved: true, | |
| }, | |
| id: "application", | |
| initial: "start", | |
| predictableActionArguments: true, | |
| states: { | |
| [ApplicationState.start]: { | |
| on: { | |
| next: ApplicationState.register, | |
| [ApplicationState.register]: ApplicationState.register, | |
| [ApplicationState.new_application]: ApplicationState.new_application, | |
| }, | |
| }, | |
| [ApplicationState.register]: { | |
| entry: setResolved(false), | |
| invoke: [ | |
| { | |
| // @ts-ignore | |
| onDone: { | |
| actions: setResolved(true), | |
| }, | |
| src: { | |
| emailType: null, | |
| reminderFlow: [ | |
| { | |
| reminderFlowAction: "start", | |
| reminderFlowType: ReminderFlowTypes.COMPANY_INFORMATION_REMINDER, | |
| }, | |
| ], | |
| type: "email", | |
| }, | |
| }, | |
| ], | |
| on: { | |
| next: ApplicationState.new_application, | |
| [ApplicationState.submitted]: ApplicationState.submitted, | |
| [ApplicationState.new_application]: ApplicationState.new_application, | |
| [ApplicationState.declined]: ApplicationState.declined, | |
| }, | |
| }, | |
| [ApplicationState.new_application]: { | |
| entry: setResolved(false), | |
| invoke: [ | |
| { | |
| // @ts-ignore | |
| onDone: { | |
| actions: setResolved(true), | |
| }, | |
| src: { | |
| emailType: null, | |
| reminderFlow: [ | |
| { | |
| reminderFlowAction: "stop", | |
| reminderFlowType: ReminderFlowTypes.COMPANY_INFORMATION_REMINDER, | |
| }, | |
| { | |
| reminderFlowAction: "start", | |
| reminderFlowType: ReminderFlowTypes.SUBMIT_APPLICATION_REMINDER, | |
| }, | |
| ], | |
| type: "email", | |
| }, | |
| }, | |
| ], | |
| on: { | |
| next: ApplicationState.submitted, | |
| [ApplicationState.submitted]: ApplicationState.submitted, | |
| [ApplicationState.declined]: ApplicationState.declined, | |
| }, | |
| }, | |
| [ApplicationState.submitted]: { | |
| entry: setResolved(false), | |
| invoke: [ | |
| { | |
| // @ts-ignore | |
| onDone: { | |
| actions: setResolved(true), | |
| }, | |
| src: { | |
| emailType: EmailType.APPLICATION_SUBMISSION, | |
| reminderFlow: [ | |
| { | |
| reminderFlowAction: "stop", | |
| reminderFlowType: ReminderFlowTypes.SUBMIT_APPLICATION_REMINDER, | |
| }, | |
| ], | |
| type: "email", | |
| }, | |
| }, | |
| ], | |
| on: { | |
| next: ApplicationState.approved, | |
| [ApplicationState.approved]: ApplicationState.approved, | |
| [ApplicationState.declined]: ApplicationState.submitted_declined, | |
| }, | |
| }, | |
| [ApplicationState.approved]: { | |
| entry: setResolved(false), | |
| invoke: [ | |
| { | |
| // @ts-ignore | |
| onDone: { | |
| actions: setResolved(true), | |
| }, | |
| src: { | |
| emailType: EmailType.APPROVAL, | |
| reminderFlow: [ | |
| { | |
| reminderFlowAction: "start", | |
| reminderFlowType: ReminderFlowTypes.ACCEPT_OFFER_REMINDER, | |
| }, | |
| ], | |
| type: "email", | |
| }, | |
| }, | |
| ], | |
| on: { | |
| next: ApplicationState.accepted, | |
| [ApplicationState.accepted]: ApplicationState.accepted, | |
| [ApplicationState.declined]: ApplicationState.declined, | |
| }, | |
| }, | |
| [ApplicationState.accepted]: { | |
| entry: setResolved(false), | |
| invoke: [ | |
| { | |
| // @ts-ignore | |
| onDone: { | |
| actions: setResolved(true), | |
| }, | |
| src: { | |
| emailType: EmailType.OFFER_ACCEPTED, | |
| reminderFlow: [ | |
| { | |
| reminderFlowAction: "stop", | |
| reminderFlowType: ReminderFlowTypes.ACCEPT_OFFER_REMINDER, | |
| }, | |
| ], | |
| type: "email", | |
| }, | |
| }, | |
| ], | |
| on: { | |
| next: ApplicationState.paidout, | |
| [ApplicationState.paidout]: ApplicationState.paidout, | |
| [ApplicationState.declined]: ApplicationState.declined, | |
| }, | |
| }, | |
| [ApplicationState.paidout]: { | |
| entry: setResolved(false), | |
| // @ts-ignore | |
| invoke: { | |
| onDone: { | |
| actions: setResolved(true), | |
| target: ApplicationState.complete, | |
| }, | |
| src: { | |
| emailType: EmailType.PAID_OUT, | |
| type: "email", | |
| }, | |
| }, | |
| }, | |
| [ApplicationState.declined]: { | |
| invoke: [ | |
| { | |
| // @ts-ignore | |
| onDone: { | |
| actions: setResolved(true), | |
| }, | |
| src: { | |
| emailType: null, | |
| reminderFlow: [ | |
| { | |
| reminderFlowAction: "stop", | |
| reminderFlowType: ReminderFlowTypes.COMPANY_INFORMATION_REMINDER, | |
| }, | |
| { | |
| reminderFlowAction: "stop", | |
| reminderFlowType: ReminderFlowTypes.SUBMIT_APPLICATION_REMINDER, | |
| }, | |
| { | |
| reminderFlowAction: "stop", | |
| reminderFlowType: ReminderFlowTypes.ACCEPT_OFFER_REMINDER, | |
| }, | |
| ], | |
| type: "email", | |
| }, | |
| }, | |
| ], | |
| type: "final", | |
| }, | |
| [ApplicationState.submitted_declined]: { | |
| entry: setResolved(false), | |
| // @ts-ignore | |
| invoke: { | |
| onDone: { | |
| actions: setResolved(true), | |
| target: ApplicationState.declined, | |
| }, | |
| src: { | |
| emailType: EmailType.CANCELLATION, | |
| type: "email", | |
| }, | |
| }, | |
| }, | |
| [ApplicationState.complete]: { | |
| type: "final", | |
| }, | |
| }, | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment