Skip to content

Instantly share code, notes, and snippets.

@AleksejDix
Created October 28, 2020 17:56
Show Gist options
  • Save AleksejDix/6e74661bfa5817ac3fcd542bdcdfbd94 to your computer and use it in GitHub Desktop.
Save AleksejDix/6e74661bfa5817ac3fcd542bdcdfbd94 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: 'authentication',
initial: 'unknown',
context: {
user: undefined,
message: undefined,
},
entry: ['getUser', 'log'],
states: {
unknown: {
always: [
{ target: 'loggedin', cond: 'hasUser' },
{ target: 'loggedout' },
],
},
loggedout: {
on: {
LOGIN: {
target: 'loading',
},
REGISTER: {
target: 'registering',
},
},
},
registering: {
invoke: {
src: 'register',
onDone: { target: 'loggedout', actions: 'onSuccess' },
onError: { target: 'loggedout', actions: 'onError' },
},
},
loading: {
invoke: {
src: 'login',
onDone: { target: 'loggedin', actions: 'onSuccess' },
onError: { target: 'loggedout', actions: 'onError' },
},
},
updating: {
invoke: {
src: 'updateProfile',
onDone: { target: 'refreshing' },
onError: { target: 'loggedout', actions: 'onError' },
},
},
refreshing: {
invoke: {
src: 'getUserProfile',
onDone: { target: 'loggedin', actions: 'setUserProfile' },
onError: { target: 'loggedout', actions: 'onError' },
},
on: {
LOGOUT: 'loggingout',
},
},
loggingout: {
invoke: {
src: 'logout',
onDone: { target: 'loggedout' },
onError: { target: 'loggedout', actions: 'onError' },
},
},
loggedin: {
entry: 'redirectAfterLogin',
on: {
UPDATE: 'updating',
REFRESH: 'refreshing',
LOGOUT: 'loggingout',
},
},
},
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment