Skip to content

Instantly share code, notes, and snippets.

@HipsterBrown
Last active February 2, 2021 16:18
Show Gist options
  • Save HipsterBrown/b3062f698fcec25687397e695d242cc3 to your computer and use it in GitHub Desktop.
Save HipsterBrown/b3062f698fcec25687397e695d242cc3 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 plaidLinkMachine = Machine({
id: 'plaid-link',
initial: 'loadingLinkToken',
context: {
linkToken: undefined,
publicToken: undefined,
plaidItemId: undefined,
remotePlaidInstitutionId: undefined,
errorMessage: undefined
},
states: {
loadingLinkToken: {
invoke: {
src: 'createLinkToken',
onDone: {
target: 'displayingWidget',
actions: 'assignLinkToken'
},
onError: {
target: 'failedLinkTokenRequest',
actions: 'assignErrorMessage'
}
}
},
failedLinkTokenRequest: {
on: {
retryRequest: 'loadingLinkToken'
}
},
displayingWidget: {
on: {
publicTokenReceived: {
actions: 'assignPublicTokenData'
},
widgetComplete: 'creatingItem'
}
},
creatingItem: {
invoke: {
src: 'createPlaidItem',
onDone: {
target: 'pollingSyncedItem',
actions: 'assignPlaidItem'
}
}
},
pollingSyncedItem: {
on: {
pollingComplete: 'completed'
}
},
errored: {},
completed: {
onEntry: 'notifyCompletion'
}
},
on: {
error: {
target: 'errored',
actions: 'assignErrorMessage'
},
'error.platform': {
target: 'errored',
actions: 'assignErrorMessage'
},
exitedEarly: {
target: 'errored',
actions: 'assignErrorMessage'
},
pollingTimeout: {
target: 'errored',
actions: 'assignErrorMessage'
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment