Skip to content

Instantly share code, notes, and snippets.

@janmonschke
Last active October 16, 2019 13:42

Revisions

  1. janmonschke revised this gist Oct 16, 2019. No changes.
  2. janmonschke created this gist Oct 16, 2019.
    55 changes: 55 additions & 0 deletions machine.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,55 @@

    // Available variables:
    // - Machine
    // - interpret
    // - assign
    // - send
    // - sendParent
    // - spawn
    // - raise
    // - actions
    // - XState (all XState exports)

    function wait(ms) {
    return new Promise(
    (resolve) => setTimeout(resolve, ms)
    );
    }

    const fetchMachine = Machine({
    id: 'mastering',
    initial: 'onboarding',
    context: { selectedPresets: [] },
    states: {
    onboarding: {
    on: {
    SKIP: 'selectPresets',
    DONE: 'selectPresets'
    }
    },
    selectPresets: {
    on: {
    PRESETS_SELECTED: {
    target: 'fetchingPreviews'
    }
    }
    },
    fetchingPreviews: {
    invoke: {
    id: 'fetchPreviews',
    src: () => wait(3000),
    onDone: 'previews'
    }
    },
    previews: {
    on: {
    PRESET_SELECTED: 'done',
    CHANGE_PRESETS: "selectPresets"
    }
    },
    done: {
    type: 'final'
    }
    }
    });