Skip to content

Instantly share code, notes, and snippets.

@pke
Created March 9, 2021 10:26
Show Gist options
  • Save pke/efd32a2c5051ff8e33eb83e3cd8a2b19 to your computer and use it in GitHub Desktop.
Save pke/efd32a2c5051ff8e33eb83e3cd8a2b19 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: 'idle',
context: {
retries: 0,
password: "",
passwordsMatch: false,
backups: 0
},
states: {
idle: {
on: {
EXPORT: {
target: 'export',
},
IMPORT: "import"
}
},
"export": {
initial: "password",
states: {
"password": {
on: {
CHANGE_PASSWORD: {
actions: assign({
password: (context, event) =>
event.value
})
},
CHANGE_CONFIRMATION: {
actions: assign({
passwordsMatch: (context) =>
context.password === event.value
})
},
"done": "save"
}
},
"save": {
initial: "idle",
on: {
"SAVED": "confirm"
},
states: {
idle: {
},
saveAsImage: {
},
saveAsFile: {
},
sendAsEmail: {
},
sendAsFile: {
}
}
},
"confirm": {
on: {
cancel: "save",
ok: "done"
}
},
done: {
type: "final"
}
}
},
"import": {
},
loading: {
on: {
RESOLVE: {
target: 'success',
},
REJECT: 'failure'
}
},
success: {
type: 'final'
},
failure: {
on: {
RETRY: {
target: 'loading',
actions: assign({
retries: (context, event) => context.retries + 1
})
}
}
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment