Skip to content

Commit b3841ef

Browse files
feat: [VAN-1081] - Set weekly goal and start course events via query param (#972)
1 parent 5a897e4 commit b3841ef

3 files changed

Lines changed: 30 additions & 11 deletions

File tree

src/course-home/outline-tab/OutlineTab.jsx

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import React, { useState } from 'react';
1+
import React, { useEffect, useState } from 'react';
2+
import { useLocation } from 'react-router-dom';
23
import { useSelector } from 'react-redux';
34
import { sendTrackEvent } from '@edx/frontend-platform/analytics';
45
import { getAuthenticatedUser } from '@edx/frontend-platform/auth';
6+
import { history } from '@edx/frontend-platform';
57
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
6-
78
import { Button } from '@edx/paragon';
89
import { AlertList } from '../../generic/user-messages';
910

@@ -109,6 +110,23 @@ function OutlineTab({ intl }) {
109110
/** show post enrolment survey to only B2C learners */
110111
const learnerType = isEnterpriseUser() ? 'enterprise_learner' : 'b2c_learner';
111112

113+
const location = useLocation();
114+
115+
useEffect(() => {
116+
const currentParams = new URLSearchParams(location.search);
117+
const startCourse = currentParams.get('start_course');
118+
if (startCourse === '1') {
119+
sendTrackEvent('welcome.email.clicked.startcourse', {});
120+
121+
// Deleting the course_start query param as it only needs to be set once
122+
// whenever passed in query params.
123+
currentParams.delete('start_course');
124+
history.replace({
125+
search: currentParams.toString(),
126+
});
127+
}
128+
}, [location.search]);
129+
112130
return (
113131
<>
114132
<div data-learner-type={learnerType} className="row w-100 mx-0 my-3 justify-content-between">

src/course-home/outline-tab/OutlineTab.test.jsx

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -355,14 +355,13 @@ describe('Outline Tab', () => {
355355

356356
await fetchAndRender('http://localhost/?weekly_goal=3');
357357
expect(spy).toHaveBeenCalledTimes(1);
358-
expect(sendTrackEvent).toHaveBeenCalledWith('edx.ui.lms.goal.days-per-week.changed', {
359-
org_key: 'edX',
360-
courserun_key: courseId,
361-
is_staff: false,
362-
num_days: 3,
363-
reminder_selected: true,
364-
triggeredFromEmail: true,
365-
});
358+
expect(sendTrackEvent).toHaveBeenCalledWith('welcome.email.clicked.setgoal', {});
359+
});
360+
361+
it('emit start course event via query param', async () => {
362+
sendTrackEvent.mockClear();
363+
await fetchAndRender('http://localhost/?start_course=1');
364+
expect(sendTrackEvent).toHaveBeenCalledWith('welcome.email.clicked.startcourse', {});
366365
});
367366

368367
describe('weekly learning goal is not set', () => {

src/course-home/outline-tab/widgets/WeeklyLearningGoalCard.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,10 @@ function WeeklyLearningGoalCard({
4949
is_staff: administrator,
5050
num_days: days,
5151
reminder_selected: selectReminders,
52-
triggeredFromEmail,
5352
});
53+
if (triggeredFromEmail) {
54+
sendTrackEvent('welcome.email.clicked.setgoal', {});
55+
}
5456
}
5557
}
5658

0 commit comments

Comments
 (0)