Skip to content

Instantly share code, notes, and snippets.

@pologonzalo
Created August 19, 2019 13:31
Show Gist options
  • Save pologonzalo/3e9a1fdcb1d648a24ce4e7d76baeb960 to your computer and use it in GitHub Desktop.
Save pologonzalo/3e9a1fdcb1d648a24ce4e7d76baeb960 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 STATES = {
LOG_IN: 'log in',
LOG_IN_WITH_EDPUZZLE: 'log in with edpuzzle',
SIGN_UP: 'sign up',
SIGN_UP_WITH_EDPUZZLE: 'sign up with edpuzzle',
SIGN_UP_WITH_GOOGLE: 'sign up with google'
}
const ACTIONS = {
TOGGLE_AUTH: 'toggle auth',
CLICK_LOG_IN_WITH_EDPUZZLE: 'click log in with edpuzzle',
CLICK_SIGN_UP_WITH_EDPUZZLE: 'click sign up with edpuzzle',
GO_BACK: 'go back',
GOOGLE_USER_NOT_FOUND: 'google user not found'
}
const stateMachine = Machine({
strict: true,
id: 'auth',
initial: STATES.LOG_IN,
states: {
[STATES.LOG_IN]: {
on: {
[ACTIONS.CLICK_LOG_IN_WITH_EDPUZZLE]: STATES.LOG_IN_WITH_EDPUZZLE,
[ACTIONS.TOGGLE_AUTH]: STATES.SIGN_UP,
[ACTIONS.GOOGLE_USER_NOT_FOUND]: STATES.SIGN_UP_WITH_GOOGLE
}
},
[STATES.LOG_IN_WITH_EDPUZZLE]: {
on: {
[ACTIONS.TOGGLE_AUTH]: STATES.SIGN_UP,
[ACTIONS.GOOGLE_USER_NOT_FOUND]: STATES.SIGN_UP_WITH_GOOGLE
}
},
[STATES.SIGN_UP]: {
on: {
[ACTIONS.CLICK_SIGN_UP_WITH_EDPUZZLE]: STATES.SIGN_UP_WITH_EDPUZZLE,
[ACTIONS.TOGGLE_AUTH]: STATES.LOG_IN,
[ACTIONS.GOOGLE_USER_NOT_FOUND]: STATES.SIGN_UP_WITH_GOOGLE
}
},
[STATES.SIGN_UP_WITH_EDPUZZLE]: {
on: {
[ACTIONS.GO_BACK]: STATES.SIGN_UP,
[ACTIONS.TOGGLE_AUTH]: STATES.LOG_IN
}
},
[STATES.SIGN_UP_WITH_GOOGLE]: {
on: {
[ACTIONS.GO_BACK]: STATES.SIGN_UP,
[ACTIONS.TOGGLE_AUTH]: STATES.LOG_IN
}
}
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment