Skip to content

Instantly share code, notes, and snippets.

@onurkose
Created August 24, 2021 19:52
Show Gist options
  • Save onurkose/964f14be643aa00ba0b3f0f1ffa809a5 to your computer and use it in GitHub Desktop.
Save onurkose/964f14be643aa00ba0b3f0f1ffa809a5 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 fetchMachine = Machine({
id: 'fetch',
initial: 'pendingFormSent',
context: {
retries: 0
},
states: {
pendingFormSent: {
on: {
CREATE_WORKSPACE: 'createWorkspace',
CREATE_SHOP: 'createShop',
},
},
createWorkspace: {
invoke: {
src: 'execCreateWorkspace',
actions: assign({
input: (context, event) => event.data,
}),
onDone: {
target: 'connectUserToWorkspace',
actions: assign({
workspaceUserInput: (context, event) => event.data,
}),
},
onError: {
target: 'createWorkspaceError',
},
},
},
connectUserToWorkspace: {
invoke: {
src: 'execConnectUserToWorkspace',
onDone: {
target: 'createShop',
actions: assign({
shopInput: (context, event) => event.data,
}),
},
onError: {
target: 'connectUserToWorkspaceError',
},
},
},
createShop: {
invoke: {
src: 'execCreateShop',
onDone: {
target: 'connectShopToWorkspace',
},
onError: {
target: 'createShopError',
},
},
},
connectShopToWorkspace: {
invoke: {
src: 'execConnectShopToWorkspace',
onDone: {
target: 'connectUserToWorkspaceShop',
actions: assign({
shopInput: (context, event) => event.data,
}),
},
onError: {
target: 'connectUserToWorkspaceError',
},
},
},
connectUserToWorkspaceShop: {
invoke: {
src: 'execConnectUserToWorkspaceShop',
onDone: {
target: 'shopCreated',
},
onError: {
target: 'connectUserToWorkspaceShopError',
},
},
},
shopCreated: {
type: 'final',
},
createShopError: {
on: {
RETRY_CREATE_SHOP: 'createShop',
},
},
createWorkspaceError: {
on: {
RETRY: 'createWorkspace',
},
},
connectUserToWorkspaceError: {
on: {
RETRY: 'connectUserToWorkspace',
},
},
connectShopToWorkspaceError: {
on: {
RETRY: 'connectShopToWorkspace',
},
},
connectUserToWorkspaceShopError: {
on: {
RETRY: 'connectUserToWorkspaceShop',
},
},
},
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment