overleaf/services/web/frontend/js/features/onboarding/utils/watching-time.ts
M Fahru f7131b720b Implement onboarding video tour split test (#11889)
* Implement onboarding video tour split test:

- Add split test infrastructure
- Create new `OnboardingVideoTourModal` component
- Place the component inside the editor pug template with a split test

* add event segmentation for `onboarding-video-tour-close-button-click` event:

1. video: `first` | `second`
2. firstVideoWatchingTimeInSecond: total time watching first video
2. secondVideoWatchingTimeInSecond: total time watching second video (0 if skipped)

* add event segmentation for:

1.  `onboarding-video-tour-dismiss-button-click`
2. `onboarding-video-tour-next-button-click`
3. `onboarding-video-tour-done-button-click`

with these key/value:

1. firstVideoWatchingTimeInSecond: total time watching first video
2. secondVideoWatchingTimeInSecond: total time watching second video (0 if skipped/not watched yet)

* Use contentful to host video assets

GitOrigin-RevId: 27a6f38d15d7a03b07455e216dda63d99983ca80
2023-03-02 09:05:43 +00:00

23 lines
770 B
TypeScript

import type { Nullable } from '../../../../../types/utils'
export function calculateWatchingTimeInSecond(
startTimeWatchedFirstVideo: number,
startTimeWatchedSecondVideo: Nullable<number>
) {
let firstVideoWatchingTimeInSecond = 0
let secondVideoWatchingTimeInSecond = 0
if (startTimeWatchedSecondVideo === null) {
firstVideoWatchingTimeInSecond = Math.floor(
(Date.now() - startTimeWatchedFirstVideo) / 1000
)
} else {
firstVideoWatchingTimeInSecond = Math.floor(
(startTimeWatchedSecondVideo - startTimeWatchedFirstVideo) / 1000
)
secondVideoWatchingTimeInSecond = Math.floor(
(Date.now() - startTimeWatchedSecondVideo) / 1000
)
}
return { firstVideoWatchingTimeInSecond, secondVideoWatchingTimeInSecond }
}