46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
/**
|
|
* External dependencies
|
|
*/
|
|
import { assign, DoneInvokeEvent } from 'xstate';
|
|
import { dispatch } from '@wordpress/data';
|
|
import { OPTIONS_STORE_NAME } from '@woocommerce/data';
|
|
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
import { customizeStoreStateMachineContext } from '../types';
|
|
import { customizeStoreStateMachineEvents } from '..';
|
|
|
|
export const assignHasCompleteSurvey = assign<
|
|
customizeStoreStateMachineContext,
|
|
customizeStoreStateMachineEvents
|
|
>( {
|
|
transitionalScreen: (
|
|
context: customizeStoreStateMachineContext,
|
|
event
|
|
) => {
|
|
return {
|
|
...context.transitionalScreen,
|
|
hasCompleteSurvey:
|
|
( event as DoneInvokeEvent< string | undefined > ).data ===
|
|
'yes',
|
|
};
|
|
},
|
|
} );
|
|
|
|
export const completeSurvey = assign<
|
|
customizeStoreStateMachineContext,
|
|
customizeStoreStateMachineEvents
|
|
>( {
|
|
transitionalScreen: ( context: customizeStoreStateMachineContext ) => {
|
|
dispatch( OPTIONS_STORE_NAME ).updateOptions( {
|
|
woocommerce_admin_customize_store_survey_completed: 'yes',
|
|
} );
|
|
|
|
return {
|
|
...context.transitionalScreen,
|
|
hasCompleteSurvey: true,
|
|
};
|
|
},
|
|
} );
|