Created
February 24, 2021 01:54
-
-
Save mpowell-atomic/49ab309a3a8a05cd4317a3aa58423d3c to your computer and use it in GitHub Desktop.
Revisions
-
mpowell-atomic created this gist
Feb 24, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,100 @@ const createPreview = (campaignId) => { return {}; }; const deletePreview = (campaignId) => { return {}; }; const previewMachine = Machine( { initial: 'idle', context: { preview: null, previewed_at: null, campaign_id: null, }, states: { idle: { // check if has preview already, if has skip to created state always: [ { cond: 'hasPreviewAlready', target: 'created' }, ], on: { CREATE: { target: 'creating', }, CLOSE_MODAL: { target: 'idle', } } }, creating: { invoke: { src: (context) => createPreview(context.campaign_id), onDone: { target: 'created', actions: assign({ preview: (context, event) => event.data.data.preview, previewed_at: (context, event) => event.data.data.previewed_at }), } }, }, created: { on: { UPDATE: { target: 'updating' }, DONE: { target: 'idle' }, DELETE: { target: 'deleting' } } }, updating: { invoke: { src: (context) => createPreview(context.campaign_id), onDone: { target: 'updated', actions: assign({ previewed_at: (context, event) => event.data.data.previewed_at }), }, } }, updated: { on: { CLOSE_MODAL: { target: 'close_and_reset', } } }, close_and_reset: { // delay state change until after modal closes after: { 600: 'created' } }, deleting: { invoke: { src: (context) => deletePreview(context.campaign_id), onDone: { target: 'idle', actions: assign({ previewed_at: null }) } }, } }, }, { guards: { hasPreviewAlready: (context) => { return context.previewed_at; } } } )