Skip to content

Instantly share code, notes, and snippets.

@kbingman
Last active June 23, 2021 16:32
Show Gist options
  • Save kbingman/d988cf1277c55e1e458a63de3aad531b to your computer and use it in GitHub Desktop.
Save kbingman/d988cf1277c55e1e458a63de3aad531b 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-machine',
initial: 'idle',
context: {
q: '',
offset: 0,
selected: {},
results: [],
filters: {},
error: '',
},
states: {
idle: {
on: {
SET_QUERY: {
target: 'selected',
actions: 'assignQuery',
},
},
},
selected: {
on: {
SET_QUERY: {
target: 'selected',
actions: 'assignQuery',
},
FETCH_RESULTS: {
target: 'pending',
actions: assign((ctx) => ({
...ctx,
offset: 0,
})),
},
},
},
pending: {
on: {
LOAD_RESULTS: {
target: 'success',
actions: 'loadData',
},
ERROR: {
target: 'failure',
actions: 'assignError',
},
},
},
success: {
on: {
SET_QUERY: {
target: 'selected',
actions: 'assignQuery',
},
TOGGLE_FILTER: {
target: 'pending',
actions: 'toggleFilter',
},
CLEAR_FILTER: {
target: 'pending',
actions: 'clearFilter',
},
},
},
failure: {
on: {
SET_QUERY: {
target: 'selected',
actions: 'assignQuery',
},
},
},
},
on: {
LOAD_RESULTS: {
target: 'success',
actions: 'loadData',
},
ERROR: {
target: 'failure',
actions: 'assignError',
},
RESET: {
target: 'idle',
actions: 'resetData',
},
},
},
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment