@@ -7,7 +7,12 @@ import {
77 getNewPath ,
88 updateQueryString ,
99} from '@woocommerce/navigation' ;
10- import { OPTIONS_STORE_NAME , TaskType } from '@woocommerce/data' ;
10+ import {
11+ ONBOARDING_STORE_NAME ,
12+ OPTIONS_STORE_NAME ,
13+ TaskType ,
14+ useUserPreferences ,
15+ } from '@woocommerce/data' ;
1116import { recordEvent } from '@woocommerce/tracks' ;
1217import { TaskItem , useSlot } from '@woocommerce/experimental' ;
1318import { useCallback } from '@wordpress/element' ;
@@ -32,16 +37,46 @@ export const TaskListItem: React.FC< TaskListItemProps > = ( {
3237 snoozeTask,
3338 undoSnoozeTask,
3439 } = useDispatch ( OPTIONS_STORE_NAME ) ;
40+ const { visitedTask } = useDispatch ( ONBOARDING_STORE_NAME ) ;
3541
3642 const slot = useSlot (
3743 `woocommerce_onboarding_task_list_item_${ task . id } `
3844 ) ;
3945 const hasFills = Boolean ( slot ?. fills ?. length ) ;
4046
47+ const userPreferences = useUserPreferences ( ) ;
48+
49+ const getTaskStartedCount = ( ) => {
50+ const trackedStartedTasks =
51+ userPreferences . task_list_tracked_started_tasks ;
52+ if ( ! trackedStartedTasks || ! trackedStartedTasks [ task . id ] ) {
53+ return 0 ;
54+ }
55+ return trackedStartedTasks [ task . id ] ;
56+ } ;
57+
58+ const updateTrackStartedCount = ( ) => {
59+ const newCount = getTaskStartedCount ( ) + 1 ;
60+ const trackedStartedTasks =
61+ userPreferences . task_list_tracked_started_tasks || { } ;
62+
63+ visitedTask ( task . id ) ;
64+ userPreferences . updateUserPreferences ( {
65+ task_list_tracked_started_tasks : {
66+ ...( trackedStartedTasks || { } ) ,
67+ [ task . id ] : newCount ,
68+ } ,
69+ } ) ;
70+ } ;
71+
4172 const trackClick = ( ) => {
4273 recordEvent ( `${ eventPrefix } click` , {
4374 task_name : task . id ,
4475 } ) ;
76+
77+ if ( ! task . isComplete ) {
78+ updateTrackStartedCount ( ) ;
79+ }
4580 } ;
4681
4782 const onTaskSelected = ( ) => {
0 commit comments