Skip to content

Instantly share code, notes, and snippets.

@rhlsthrm
Last active May 1, 2020 15:39
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 rhlsthrm/a4e66d96d22bcc592956fe06e96e24c6 to your computer and use it in GitHub Desktop.
Save rhlsthrm/a4e66d96d22bcc592956fe06e96e24c6 to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
// Available variables:
// - Machine
// - interpret
// - assign
// - send
// - sendParent
// - spawn
// - raise
// - actions
// - XState (all XState exports)
const validateSenderProposal = async () => true;
const proposeToReceiver = async () => true;
const installWithSender = async () => true;
const hoppedTransferMachine = Machine({
id: 'hoppedTransfer',
initial: 'idle',
context: {
senderProposalParams: {},
receiverMustBeOnline: true,
},
states: {
idle: {
on: {
SENDER_PROPOSE: 'senderProposed'
}
},
senderProposed: {
invoke: {
id: 'validateSenderProposal',
src: (context) => validateSenderProposal(context.senderProposalParams),
onDone: {
target: 'senderProposalAccepted'
},
onError: {
target: 'senderProposalRejected'
}
}
},
senderProposalAccepted: {
invoke: {
id: 'proposeToReceiver',
src: (context) => proposeToReceiver(context.senderProposalParams),
onDone: {
target: 'receiverProposalSent'
},
onError: {
target: 'unknownError'
}
}
},
senderProposalRejected: {
type: 'final'
},
receiverProposalSent: {
on: {
RECEIVER_PROPOSAL_ACCEPT: 'receiverProposalAccepted'
}
},
receiverProposalAccepted: {
on: {
RECEIVER_INSTALL: 'receiverInstalled'
}
},
receiverInstalled: {
on: {
SENDER_INSTALL: 'senderInstalled'
},
invoke: {
id: 'installWithSender',
src: (context) => installWithSender(context.senderProposalParams),
onDone: {
target: 'senderInstalled'
},
onError: {
target: 'unknownError'
}
}
},
senderInstalled: {
type: 'final'
},
unknownError: {
type: 'final'
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment