Skip to content

Instantly share code, notes, and snippets.

@wmcbain
Last active March 12, 2020 00:05
Show Gist options
  • Save wmcbain/21cf1d9634d0f4277df388f8c15fac4e to your computer and use it in GitHub Desktop.
Save wmcbain/21cf1d9634d0f4277df388f8c15fac4e to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
const authMachine = Machine({
id: 'auth_machine',
initial: 'authIsLoading',
context: {
sessionToken: null,
},
states: {
// HomeScreen.tsx
authIsLoading: {
on: {
LOGGED_IN: 'isLoggedIn',
NOT_LOGGED_IN: 'waitForUserChoice',
},
},
// HomeScreen.tsx
isLoggedIn: {
entry: 'redirectToAccount',
on: {
LOG_OUT: 'logout',
},
},
// HomeScreen.tsx
waitForUserChoice: {
on: {
REGISTER: 'register',
LOG_IN: 'login',
DEEPLINK_CAPTURED: 'verifySMSCode',
},
},
// LoginScreen.tsx
login: {
initial: 'oktaLogin',
onDone: 'isLoggedIn',
on: {
CANCEL: 'waitForUserChoice',
},
states: {
oktaLogin: {
entry: 'startOktaLogin',
on: {
USER_AUTHENTICATED: 'authenticated',
},
},
authenticated: {
type: 'final',
},
},
},
register: {
initial: 'forkInRoad',
onDone: 'phoneVerification',
on: {
CANCEL: 'waitForUserChoice',
},
states: {
// ForkInRoadScreen.tsx
forkInRoad: {
entry: 'redirectToForkInRoad',
on: {
REGISTER_PHONE_NUMBER: 'registerPhoneNumber',
},
},
// RegisterPhoneScreen.tsx
registerPhoneNumber: {
entry: 'redirectToRegisterPhoneNumber',
on: {
PHONE_NUMBER_SUBMITTED: 'submitPhoneNumber',
},
},
// HomeScreen.tsx
submitPhoneNumber: {
entry: 'phoneNumberSubmitted',
type: 'final',
},
},
},
// HomeScreen.tsx
phoneVerification: {
on: {
DEEPLINK_CAPTURED: 'verifySMSCode',
},
},
// HomeScreen.tsx
verifySMSCode: {
entry: 'verifySMSCode',
on: {
REGISTER_USER: 'registerUser',
},
},
// RegisterUserScreen.tsx
registerUser: {
entry: 'setSessionToken',
on: {
USER_REGISTERED: 'registrationComplete',
},
},
registrationComplete: {
entry: 'authenticateUser',
on: {
USER_AUTHENTICATED: 'isLoggedIn',
},
},
logout: {
initial: 'oktaLogout',
onDone: 'waitForUserChoice',
on: {
CANCEL: 'isLoggedIn',
},
states: {
oktaLogout: {
entry: 'startOktaLogout',
on: {
USER_LOGGED_OUT: 'loggedOut',
},
},
loggedOut: {
type: 'final',
},
},
},
},
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment