Skip to content

Instantly share code, notes, and snippets.

@tgvashworth
Last active September 16, 2019 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tgvashworth/30a8fbe5c7efbe9dffa48208d2d89146 to your computer and use it in GitHub Desktop.
Save tgvashworth/30a8fbe5c7efbe9dffa48208d2d89146 to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
const { } = XState;
const { log } = actions;
const generatePaymentStates = {
id: 'generate-payment',
initial: 'generating',
states: {
generating: {
on: {
'': [
{ target: 'generatePrepayPayment', cond: 'isPrefPrepay' },
{ target: 'generateTWPayment', cond: 'isPrefTW' },
'generateCreditPayment'
],
}
},
generateCreditPayment: {},
generatePrepayPayment: {},
generateTWPayment: {},
done: {
final: true
}
}
};
const paymentMachine = Machine({
id: 'payment',
initial: 'created',
states: {
created: {
on: {
REQUEST: 'requested',
REQUEST_CANCEL: 'cancelled',
}
},
requested: {
on: {
GENERATE: 'generating'
}
},
generating: {
...generatePaymentStates,
onDone: 'generated'
},
generated: {
on: {
COLLECT: 'collected',
REQUEST_CANCEL: 'cancelRequested',
EXPIRE: 'expired',
CANCEL: 'cancelled'
}
},
cancelRequested: {
on: {
CANCEL: 'cancelled'
}
},
expired: {
type: 'final'
},
cancelled: {
type: 'final'
},
collected: {
type: 'final'
}
}
}, {
guards: {
isPrefPrepay: ({ pref }) => pref === 'prepay',
isPrefTW: ({ pref }) => pref === 'tw',
isPrefCredit: ({ pref }) => pref === 'credit',
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment