Skip to content

Instantly share code, notes, and snippets.

@jacob-ebey
Created November 29, 2020 20:34
Show Gist options
  • Save jacob-ebey/49d01c907c570f584e02528c2ebe07ef to your computer and use it in GitHub Desktop.
Save jacob-ebey/49d01c907c570f584e02528c2ebe07ef to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
const magicMachine = Machine({
id: "magic",
initial: "ready",
context: {
didToken: null,
apiToken: null,
},
states: {
ready: {
initial: "noError",
on: {
SILENT_LOGIN: "silentlyLoggingIn",
LOGIN: "loggingIntoMagic",
},
states: {
noError: {},
error: {},
},
},
silentlyLoggingIn: {
invoke: {
src: "silentLogin",
onDone: {
target: "loggedIn",
actions: assign({
apiToken: (_, event) => event.data,
}),
},
onError: {
target: "ready.error",
},
},
},
loggingIntoMagic: {
on: {
CAMCEL: "ready",
},
invoke: {
src: "loginToMagic",
onDone: {
target: "loggingIntoService",
actions: assign({
didToken: (_, event) => event.data,
}),
},
onError: {
target: "ready.error",
},
},
},
loggingIntoService: {
on: {
CAMCEL: "ready",
},
invoke: {
src: "loginToService",
onDone: {
target: "loggedIn",
actions: assign({
apiToken: (_, event) => event.data,
didToken: () => null,
}),
},
onError: {
target: "ready.error",
actions: assign({
didToken: () => null,
}),
},
},
},
loggedIn: {
initial: "noError",
invoke: {
src: "loggedIn",
},
on: {
LOGOUT: "loggingOut",
},
states: {
noError: {},
error: {},
},
},
loggingOut: {
invoke: {
src: "logout",
onDone: {
target: "ready",
actions: assign({
apiToken: () => null,
}),
},
onError: {
target: "loggedIn.error",
},
},
},
},
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment