Skip to content

Instantly share code, notes, and snippets.

@NixBiks
Created February 4, 2021 10:50
Show Gist options
  • Save NixBiks/8c500c536b64f20a9892da7dc034aa7d to your computer and use it in GitHub Desktop.
Save NixBiks/8c500c536b64f20a9892da7dc034aa7d 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: "Authenticated",
type: "parallel",
states: {
claims: {
initial: "fetching",
states: {
fetching: {
invoke: {
src: "fetchClaims",
onDone: {
actions: assign({
claims: (context, event) => event.data,
}),
target: "loaded",
},
onError: {
actions: assign({
error: (context, event) => event.data,
}),
target: "failed",
},
},
},
loaded: {
on: {
REFRESH_CLAIMS: "fetching",
},
},
failed: {},
},
},
token: {
initial: "fetching",
states: {
fetching: {
invoke: {
src: "fetchToken",
onDone: {
actions: assign({
token: (context, event) => event.data,
}),
target: "loaded",
},
onError: {
actions: assign({
error: (context, event) => event.data,
}),
target: "failed",
},
},
},
loaded: {
on: {
REFRESH_TOKEN: "fetching",
},
},
failed: {},
},
},
},
},
{
services: {
fetchClaims: (context, event) =>
new Promise((resolve, reject) => {
return setTimeout(() => resolve({ admin: false }), 3000);
}),
fetchToken: (context, event) =>
new Promise((resolve, reject) => {
return setTimeout(() => resolve("token"), 5000);
}),
},
actions: {
clearError: assign({ error: (context, event) => undefined }),
},
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment