musora-content-services 2.92.3 → 2.92.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/docs.js.yml +64 -47
- package/CHANGELOG.md +23 -0
- package/package.json +1 -1
- package/src/index.d.ts +2 -0
- package/src/index.js +2 -0
- package/src/lib/brands.ts +7 -7
- package/src/services/content/artist.ts +10 -7
- package/src/services/content/genre.ts +10 -7
- package/src/services/content/instructor.ts +7 -7
- package/src/services/content-org/learning-paths.ts +3 -3
- package/src/services/progress-row/method-card.js +1 -1
- package/src/services/reporting/reporting.ts +19 -15
- package/src/services/sync/fetch.ts +3 -0
- package/src/services/user/onboarding.ts +3 -3
- package/docs/Content.html +0 -269
- package/docs/ContentOrganization.html +0 -245
- package/docs/Forums.html +0 -269
- package/docs/Gamification.html +0 -245
- package/docs/TestUser.html +0 -260
- package/docs/UserManagementSystem.html +0 -317
- package/docs/api_types.js.html +0 -97
- package/docs/config.js.html +0 -140
- package/docs/content-org_content-org.js.html +0 -76
- package/docs/content-org_guided-courses.ts.html +0 -110
- package/docs/content-org_learning-paths.ts.html +0 -391
- package/docs/content-org_playlists-types.js.html +0 -128
- package/docs/content-org_playlists.js.html +0 -440
- package/docs/content.js.html +0 -603
- package/docs/content_artist.ts.html +0 -206
- package/docs/content_content.ts.html +0 -77
- package/docs/content_genre.ts.html +0 -209
- package/docs/content_instructor.ts.html +0 -206
- package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -978
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -1049
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
- package/docs/forums_categories.ts.html +0 -156
- package/docs/forums_discussions.js.html +0 -95
- package/docs/forums_forum.js.html +0 -95
- package/docs/forums_forums.ts.html +0 -160
- package/docs/forums_posts.ts.html +0 -284
- package/docs/forums_threads.ts.html +0 -284
- package/docs/gamification_awards.js.html +0 -165
- package/docs/gamification_awards.ts.html +0 -195
- package/docs/gamification_gamification.js.html +0 -76
- package/docs/gamification_types.js.html +0 -80
- package/docs/global.html +0 -6019
- package/docs/index.html +0 -167
- package/docs/liveTesting.ts.html +0 -103
- package/docs/module-Accounts.html +0 -2283
- package/docs/module-Artist.html +0 -993
- package/docs/module-Awards.html +0 -836
- package/docs/module-Categories.html +0 -711
- package/docs/module-Config.html +0 -431
- package/docs/module-Content-Services-V2.html +0 -2998
- package/docs/module-ForumCategories.html +0 -687
- package/docs/module-ForumDiscussions.html +0 -370
- package/docs/module-Forums.html +0 -16599
- package/docs/module-Genre.html +0 -981
- package/docs/module-GuidedCourses.html +0 -108
- package/docs/module-Instructor.html +0 -929
- package/docs/module-Interests.html +0 -1066
- package/docs/module-LearningPaths.html +0 -2424
- package/docs/module-Onboarding.html +0 -882
- package/docs/module-Payments.html +0 -392
- package/docs/module-Permissions.html +0 -406
- package/docs/module-Playlists.html +0 -3030
- package/docs/module-ProgressRow.html +0 -108
- package/docs/module-Railcontent-Services.html +0 -5876
- package/docs/module-Sanity-Services.html +0 -8244
- package/docs/module-Sessions.html +0 -575
- package/docs/module-Threads.html +0 -1119
- package/docs/module-UserActivity.html +0 -4534
- package/docs/module-UserChat.html +0 -410
- package/docs/module-UserManagement.html +0 -1932
- package/docs/module-UserMemberships.html +0 -829
- package/docs/module-UserNotifications.html +0 -2595
- package/docs/module-UserProfile.html +0 -370
- package/docs/progress-row_method-card.js.html +0 -184
- package/docs/railcontent.js.html +0 -724
- package/docs/sanity.js.html +0 -2322
- package/docs/scripts/collapse.js +0 -39
- package/docs/scripts/commonNav.js +0 -28
- package/docs/scripts/linenumber.js +0 -25
- package/docs/scripts/nav.js +0 -12
- package/docs/scripts/polyfill.js +0 -4
- package/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
- package/docs/scripts/prettify/lang-css.js +0 -2
- package/docs/scripts/prettify/prettify.js +0 -28
- package/docs/scripts/search.js +0 -99
- package/docs/styles/jsdoc.css +0 -776
- package/docs/styles/prettify.css +0 -80
- package/docs/userActivity.js.html +0 -1512
- package/docs/user_account.ts.html +0 -265
- package/docs/user_chat.js.html +0 -98
- package/docs/user_interests.js.html +0 -150
- package/docs/user_management.js.html +0 -258
- package/docs/user_memberships.js.html +0 -144
- package/docs/user_memberships.ts.html +0 -292
- package/docs/user_notifications.js.html +0 -374
- package/docs/user_onboarding.ts.html +0 -329
- package/docs/user_payments.ts.html +0 -146
- package/docs/user_permissions.js.html +0 -110
- package/docs/user_profile.js.html +0 -115
- package/docs/user_sessions.js.html +0 -170
- package/docs/user_types.js.html +0 -224
- package/docs/user_user-management-system.js.html +0 -79
|
@@ -1,391 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
|
|
5
|
-
<meta charset="utf-8">
|
|
6
|
-
<title>content-org/learning-paths.ts - Documentation</title>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<script src="scripts/prettify/prettify.js"></script>
|
|
10
|
-
<script src="scripts/prettify/lang-css.js"></script>
|
|
11
|
-
<!--[if lt IE 9]>
|
|
12
|
-
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
|
13
|
-
<![endif]-->
|
|
14
|
-
<link type="text/css" rel="stylesheet" href="styles/prettify.css">
|
|
15
|
-
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
|
|
16
|
-
<script src="scripts/nav.js" defer></script>
|
|
17
|
-
|
|
18
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
19
|
-
</head>
|
|
20
|
-
<body>
|
|
21
|
-
|
|
22
|
-
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
|
|
23
|
-
<label for="nav-trigger" class="navicon-button x">
|
|
24
|
-
<div class="navicon"></div>
|
|
25
|
-
</label>
|
|
26
|
-
|
|
27
|
-
<label for="nav-trigger" class="overlay"></label>
|
|
28
|
-
|
|
29
|
-
<nav >
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-Accounts.html">Accounts</a><ul class='methods'><li data-type='method'><a href="module-Accounts.html#~confirmEmailChange">confirmEmailChange</a></li><li data-type='method'><a href="module-Accounts.html#~deleteAccount">deleteAccount</a></li><li data-type='method'><a href="module-Accounts.html#~numberOfActiveUsers">numberOfActiveUsers</a></li><li data-type='method'><a href="module-Accounts.html#~requestEmailChange">requestEmailChange</a></li><li data-type='method'><a href="module-Accounts.html#~resetPassword">resetPassword</a></li><li data-type='method'><a href="module-Accounts.html#~sendAccountSetupEmail">sendAccountSetupEmail</a></li><li data-type='method'><a href="module-Accounts.html#~sendPasswordResetEmail">sendPasswordResetEmail</a></li><li data-type='method'><a href="module-Accounts.html#~setupAccount">setupAccount</a></li><li data-type='method'><a href="module-Accounts.html#~status">status</a></li><li data-type='method'><a href="module-Accounts.html#~toggleStudentView">toggleStudentView</a></li></ul></li><li><a href="module-Artist.html">Artist</a><ul class='methods'><li data-type='method'><a href="module-Artist.html#~fetchArtistBySlug">fetchArtistBySlug</a></li><li data-type='method'><a href="module-Artist.html#~fetchArtistLessons">fetchArtistLessons</a></li><li data-type='method'><a href="module-Artist.html#~fetchArtists">fetchArtists</a></li></ul></li><li><a href="module-Awards.html">Awards</a><ul class='methods'><li data-type='method'><a href="module-Awards.html#~fetchAwardsForUser">fetchAwardsForUser</a></li><li data-type='method'><a href="module-Awards.html#~fetchCertificate">fetchCertificate</a></li><li data-type='method'><a href="module-Awards.html#~getAwardDataForGuidedContent">getAwardDataForGuidedContent</a></li></ul></li><li><a href="module-Config.html">Config</a><ul class='methods'><li data-type='method'><a href="module-Config.html#.initializeService">initializeService</a></li></ul></li><li><a href="module-Content-Services-V2.html">Content-Services-V2</a><ul class='methods'><li data-type='method'><a href="module-Content-Services-V2.html#.getContentRows">getContentRows</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getLegacyMethods">getLegacyMethods</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getNewAndUpcoming">getNewAndUpcoming</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getOwnedContent">getOwnedContent</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getRecent">getRecent</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getRecommendedForYou">getRecommendedForYou</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getScheduleContentRows">getScheduleContentRows</a></li><li data-type='method'><a href="module-Content-Services-V2.html#.getTabResults">getTabResults</a></li></ul></li><li><a href="module-Forums.html">Forums</a><ul class='methods'><li data-type='method'><a href="module-Forums.html#~createForumCategory">createForumCategory</a></li><li data-type='method'><a href="module-Forums.html#~createPost">createPost</a></li><li data-type='method'><a href="module-Forums.html#~createThread">createThread</a></li><li data-type='method'><a href="module-Forums.html#~deleteForumCategory">deleteForumCategory</a></li><li data-type='method'><a href="module-Forums.html#~deletePost">deletePost</a></li><li data-type='method'><a href="module-Forums.html#~deleteThread">deleteThread</a></li><li data-type='method'><a href="module-Forums.html#~fetchCommunityGuidelines">fetchCommunityGuidelines</a></li><li data-type='method'><a href="module-Forums.html#~fetchFollowedThreads">fetchFollowedThreads</a></li><li data-type='method'><a href="module-Forums.html#~fetchForumCategories">fetchForumCategories</a></li><li data-type='method'><a href="module-Forums.html#~fetchLatestThreads">fetchLatestThreads</a></li><li data-type='method'><a href="module-Forums.html#~fetchPosts">fetchPosts</a></li><li data-type='method'><a href="module-Forums.html#~fetchThreads">fetchThreads</a></li><li data-type='method'><a href="module-Forums.html#~followThread">followThread</a></li><li data-type='method'><a href="module-Forums.html#~jumpToPost">jumpToPost</a></li><li data-type='method'><a href="module-Forums.html#~likePost">likePost</a></li><li data-type='method'><a href="module-Forums.html#~lockThread">lockThread</a></li><li data-type='method'><a href="module-Forums.html#~markThreadAsRead">markThreadAsRead</a></li><li data-type='method'><a href="module-Forums.html#~pinThread">pinThread</a></li><li data-type='method'><a href="module-Forums.html#~search">search</a></li><li data-type='method'><a href="module-Forums.html#~unfollowThread">unfollowThread</a></li><li data-type='method'><a href="module-Forums.html#~unlikePost">unlikePost</a></li><li data-type='method'><a href="module-Forums.html#~unlockThread">unlockThread</a></li><li data-type='method'><a href="module-Forums.html#~unpinThread">unpinThread</a></li><li data-type='method'><a href="module-Forums.html#~updateForumCategory">updateForumCategory</a></li><li data-type='method'><a href="module-Forums.html#~updatePost">updatePost</a></li><li data-type='method'><a href="module-Forums.html#~updateThread">updateThread</a></li></ul></li><li></li><li></li><li><a href="module-Genre.html">Genre</a><ul class='methods'><li data-type='method'><a href="module-Genre.html#~fetchGenreBySlug">fetchGenreBySlug</a></li><li data-type='method'><a href="module-Genre.html#~fetchGenreLessons">fetchGenreLessons</a></li><li data-type='method'><a href="module-Genre.html#~fetchGenres">fetchGenres</a></li></ul></li><li><a href="module-GuidedCourses.html">GuidedCourses</a></li><li><a href="module-Instructor.html">Instructor</a><ul class='methods'><li data-type='method'><a href="module-Instructor.html#~fetchInstructorBySlug">fetchInstructorBySlug</a></li><li data-type='method'><a href="module-Instructor.html#~fetchInstructorLessons">fetchInstructorLessons</a></li><li data-type='method'><a href="module-Instructor.html#~fetchInstructors">fetchInstructors</a></li></ul></li><li><a href="module-Interests.html">Interests</a><ul class='methods'><li data-type='method'><a href="module-Interests.html#.fetchInterests">fetchInterests</a></li><li data-type='method'><a href="module-Interests.html#.fetchUninterests">fetchUninterests</a></li><li data-type='method'><a href="module-Interests.html#.markContentAsInterested">markContentAsInterested</a></li><li data-type='method'><a href="module-Interests.html#.markContentAsNotInterested">markContentAsNotInterested</a></li><li data-type='method'><a href="module-Interests.html#.removeContentAsInterested">removeContentAsInterested</a></li><li data-type='method'><a href="module-Interests.html#.removeContentAsNotInterested">removeContentAsNotInterested</a></li></ul></li><li><a href="module-LearningPaths.html">LearningPaths</a><ul class='methods'><li data-type='method'><a href="module-LearningPaths.html#~completeLearningPathIntroVideo">completeLearningPathIntroVideo</a></li><li data-type='method'><a href="module-LearningPaths.html#~completeMethodIntroVideo">completeMethodIntroVideo</a></li><li data-type='method'><a href="module-LearningPaths.html#~fetchLearningPathLessons">fetchLearningPathLessons</a></li><li data-type='method'><a href="module-LearningPaths.html#~fetchLearningPathProgressCheckLessons">fetchLearningPathProgressCheckLessons</a></li><li data-type='method'><a href="module-LearningPaths.html#~getActivePath">getActivePath</a></li><li data-type='method'><a href="module-LearningPaths.html#~getDailySession">getDailySession</a></li><li data-type='method'><a href="module-LearningPaths.html#~getEnrichedLearningPath">getEnrichedLearningPath</a></li><li data-type='method'><a href="module-LearningPaths.html#~getLearningPathLessonsByIds">getLearningPathLessonsByIds</a></li><li data-type='method'><a href="module-LearningPaths.html#~mapContentToParent">mapContentToParent</a></li><li data-type='method'><a href="module-LearningPaths.html#~resetAllLearningPaths">resetAllLearningPaths</a></li><li data-type='method'><a href="module-LearningPaths.html#~startLearningPath">startLearningPath</a></li><li data-type='method'><a href="module-LearningPaths.html#~updateDailySession">updateDailySession</a></li></ul></li><li><a href="module-Onboarding.html">Onboarding</a><ul class='methods'><li data-type='method'><a href="module-Onboarding.html#~getOnboardingRecommendedContent">getOnboardingRecommendedContent</a></li><li data-type='method'><a href="module-Onboarding.html#~startOnboarding">startOnboarding</a></li><li data-type='method'><a href="module-Onboarding.html#~updateOnboarding">updateOnboarding</a></li><li data-type='method'><a href="module-Onboarding.html#~userOnboardingForBrand">userOnboardingForBrand</a></li></ul></li><li><a href="module-Payments.html">Payments</a><ul class='methods'><li data-type='method'><a href="module-Payments.html#~fetchCustomerPayments">fetchCustomerPayments</a></li></ul></li><li><a href="module-Permissions.html">Permissions</a><ul class='methods'><li data-type='method'><a href="module-Permissions.html#.fetchUserPermissions">fetchUserPermissions</a></li><li data-type='method'><a href="module-Permissions.html#.reset">reset</a></li></ul></li><li><a href="module-Playlists.html">Playlists</a><ul class='methods'><li data-type='method'><a href="module-Playlists.html#.addItemToPlaylist">addItemToPlaylist</a></li><li data-type='method'><a href="module-Playlists.html#.createPlaylist">createPlaylist</a></li><li data-type='method'><a href="module-Playlists.html#.deletePlaylist">deletePlaylist</a></li><li data-type='method'><a href="module-Playlists.html#.duplicatePlaylist">duplicatePlaylist</a></li><li data-type='method'><a href="module-Playlists.html#.fetchPlaylist">fetchPlaylist</a></li><li data-type='method'><a href="module-Playlists.html#.fetchPlaylistItems">fetchPlaylistItems</a></li><li data-type='method'><a href="module-Playlists.html#.fetchUserPlaylists">fetchUserPlaylists</a></li><li data-type='method'><a href="module-Playlists.html#.togglePlaylistPrivate">togglePlaylistPrivate</a></li><li data-type='method'><a href="module-Playlists.html#.undeletePlaylist">undeletePlaylist</a></li><li data-type='method'><a href="module-Playlists.html#.updatePlaylist">updatePlaylist</a></li><li data-type='method'><a href="module-Playlists.html#~deleteItemsFromPlaylist">deleteItemsFromPlaylist</a></li><li data-type='method'><a href="module-Playlists.html#~likePlaylist">likePlaylist</a></li><li data-type='method'><a href="module-Playlists.html#~reportPlaylist">reportPlaylist</a></li><li data-type='method'><a href="module-Playlists.html#~restoreItemFromPlaylist">restoreItemFromPlaylist</a></li><li data-type='method'><a href="module-Playlists.html#~unlikePlaylist">unlikePlaylist</a></li></ul></li><li><a href="module-ProgressRow.html">ProgressRow</a></li><li><a href="module-Railcontent-Services.html">Railcontent-Services</a><ul class='methods'><li data-type='method'><a href="module-Railcontent-Services.html#.assignModeratorToComment">assignModeratorToComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.closeComment">closeComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.createComment">createComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.deleteComment">deleteComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.editComment">editComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchAllCompletedStates">fetchAllCompletedStates</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchCarouselCardData">fetchCarouselCardData</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchComment">fetchComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchCommentRelies">fetchCommentRelies</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchComments">fetchComments</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchCompletedContent">fetchCompletedContent</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchCompletedState">fetchCompletedState</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchContentInProgress">fetchContentInProgress</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchContentPageUserData">fetchContentPageUserData</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchNextContentDataForParent">fetchNextContentDataForParent</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchRecentUserActivities">fetchRecentUserActivities</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchSongsInProgress">fetchSongsInProgress</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchTopComment">fetchTopComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchUserAward">fetchUserAward</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchUserBadges">fetchUserBadges</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.fetchUserPracticeNotes">fetchUserPracticeNotes</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.likeComment">likeComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.openComment">openComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.replyToComment">replyToComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.reportComment">reportComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.restoreComment">restoreComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.setStudentViewForUser">setStudentViewForUser</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.unassignModeratorToComment">unassignModeratorToComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#.unlikeComment">unlikeComment</a></li><li data-type='method'><a href="module-Railcontent-Services.html#~fetchLastInteractedChild">fetchLastInteractedChild</a></li></ul></li><li><a href="module-Sanity-Services.html">Sanity-Services</a><ul class='methods'><li data-type='method'><a href="module-Sanity-Services.html#.fetchAll">fetchAll</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchAllFilterOptions">fetchAllFilterOptions</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchAllPacks">fetchAllPacks</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchByRailContentId">fetchByRailContentId</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchByRailContentIds">fetchByRailContentIds</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchByReference">fetchByReference</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchComingSoon">fetchComingSoon</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchCommentModContentData">fetchCommentModContentData</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchFoundation">fetchFoundation</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchLeaving">fetchLeaving</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchLessonContent">fetchLessonContent</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchLessonsFeaturingThisContent">fetchLessonsFeaturingThisContent</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMetadata">fetchMetadata</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethod">fetchMethod</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethodChildren">fetchMethodChildren</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethodChildrenIds">fetchMethodChildrenIds</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethodPreviousNextLesson">fetchMethodPreviousNextLesson</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethodV2IntroVideo">fetchMethodV2IntroVideo</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethodV2Structure">fetchMethodV2Structure</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchMethodV2StructureFromId">fetchMethodV2StructureFromId</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchNewReleases">fetchNewReleases</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchNextPreviousLesson">fetchNextPreviousLesson</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchOtherSongVersions">fetchOtherSongVersions</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchOwnedContent">fetchOwnedContent</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchPackAll">fetchPackAll</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchPackData">fetchPackData</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchRelatedLessons">fetchRelatedLessons</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchRelatedRecommendedContent">fetchRelatedRecommendedContent</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchRelatedSongs">fetchRelatedSongs</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchReturning">fetchReturning</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchSanity">fetchSanity</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchScheduledReleases">fetchScheduledReleases</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchShowsData">fetchShowsData</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchSiblingContent">fetchSiblingContent</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchSongArtistCount">fetchSongArtistCount</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchSongById">fetchSongById</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchTopLevelParentId">fetchTopLevelParentId</a></li><li data-type='method'><a href="module-Sanity-Services.html#.fetchUpcomingEvents">fetchUpcomingEvents</a></li><li data-type='method'><a href="module-Sanity-Services.html#.jumpToContinueContent">jumpToContinueContent</a></li><li data-type='method'><a href="module-Sanity-Services.html#~fetchRelatedByLicense">fetchRelatedByLicense</a></li><li data-type='method'><a href="module-Sanity-Services.html#~getQueryFromPage">getQueryFromPage</a></li></ul></li><li><a href="module-Sessions.html">Sessions</a><ul class='methods'><li data-type='method'><a href="module-Sessions.html#.login">login</a></li><li data-type='method'><a href="module-Sessions.html#.logout">logout</a></li></ul></li><li><a href="module-UserActivity.html">UserActivity</a><ul class='methods'><li data-type='method'><a href="module-UserActivity.html#.calculateLongestStreaks">calculateLongestStreaks</a></li><li data-type='method'><a href="module-UserActivity.html#.createPracticeNotes">createPracticeNotes</a></li><li data-type='method'><a href="module-UserActivity.html#.deletePracticeSession">deletePracticeSession</a></li><li data-type='method'><a href="module-UserActivity.html#.deleteUserActivity">deleteUserActivity</a></li><li data-type='method'><a href="module-UserActivity.html#.getPracticeNotes">getPracticeNotes</a></li><li data-type='method'><a href="module-UserActivity.html#.getPracticeSessions">getPracticeSessions</a></li><li data-type='method'><a href="module-UserActivity.html#.getProgressRows">getProgressRows</a></li><li data-type='method'><a href="module-UserActivity.html#.getRecentActivity">getRecentActivity</a></li><li data-type='method'><a href="module-UserActivity.html#.getUserMonthlyStats">getUserMonthlyStats</a></li><li data-type='method'><a href="module-UserActivity.html#.getUserWeeklyStats">getUserWeeklyStats</a></li><li data-type='method'><a href="module-UserActivity.html#.pinProgressRow">pinProgressRow</a></li><li data-type='method'><a href="module-UserActivity.html#.recordUserActivity">recordUserActivity</a></li><li data-type='method'><a href="module-UserActivity.html#.recordUserPractice">recordUserPractice</a></li><li data-type='method'><a href="module-UserActivity.html#.removeUserPractice">removeUserPractice</a></li><li data-type='method'><a href="module-UserActivity.html#.restorePracticeSession">restorePracticeSession</a></li><li data-type='method'><a href="module-UserActivity.html#.restoreUserActivity">restoreUserActivity</a></li><li data-type='method'><a href="module-UserActivity.html#.restoreUserPractice">restoreUserPractice</a></li><li data-type='method'><a href="module-UserActivity.html#.unpinProgressRow">unpinProgressRow</a></li><li data-type='method'><a href="module-UserActivity.html#.updatePracticeNotes">updatePracticeNotes</a></li><li data-type='method'><a href="module-UserActivity.html#.updateUserPractice">updateUserPractice</a></li></ul></li><li><a href="module-UserChat.html">UserChat</a><ul class='methods'><li data-type='method'><a href="module-UserChat.html#.fetchChatSettings">fetchChatSettings</a></li></ul></li><li><a href="module-UserManagement.html">UserManagement</a><ul class='methods'><li data-type='method'><a href="module-UserManagement.html#.blockUser">blockUser</a></li><li data-type='method'><a href="module-UserManagement.html#.blockedUsers">blockedUsers</a></li><li data-type='method'><a href="module-UserManagement.html#.deletePicture">deletePicture</a></li><li data-type='method'><a href="module-UserManagement.html#.getUserData">getUserData</a></li><li data-type='method'><a href="module-UserManagement.html#.getUserSignature">getUserSignature</a></li><li data-type='method'><a href="module-UserManagement.html#.isUsernameAvailable">isUsernameAvailable</a></li><li data-type='method'><a href="module-UserManagement.html#.setUserSignature">setUserSignature</a></li><li data-type='method'><a href="module-UserManagement.html#.toggleSignaturePrivate">toggleSignaturePrivate</a></li><li data-type='method'><a href="module-UserManagement.html#.unblockUser">unblockUser</a></li><li data-type='method'><a href="module-UserManagement.html#.updateDisplayName">updateDisplayName</a></li><li data-type='method'><a href="module-UserManagement.html#.uploadPicture">uploadPicture</a></li><li data-type='method'><a href="module-UserManagement.html#.uploadPictureFromS3">uploadPictureFromS3</a></li></ul></li><li><a href="module-UserMemberships.html">UserMemberships</a><ul class='methods'><li data-type='method'><a href="module-UserMemberships.html#~fetchMemberships">fetchMemberships</a></li><li data-type='method'><a href="module-UserMemberships.html#~fetchRechargeTokens">fetchRechargeTokens</a></li><li data-type='method'><a href="module-UserMemberships.html#~restorePurchases">restorePurchases</a></li><li data-type='method'><a href="module-UserMemberships.html#~upgradeSubscription">upgradeSubscription</a></li></ul></li><li><a href="module-UserNotifications.html">UserNotifications</a><ul class='methods'><li data-type='method'><a href="module-UserNotifications.html#.deleteNotification">deleteNotification</a></li><li data-type='method'><a href="module-UserNotifications.html#.fetchLiveEventPollingState">fetchLiveEventPollingState</a></li><li data-type='method'><a href="module-UserNotifications.html#.fetchNotificationSettings">fetchNotificationSettings</a></li><li data-type='method'><a href="module-UserNotifications.html#.fetchNotifications">fetchNotifications</a></li><li data-type='method'><a href="module-UserNotifications.html#.fetchUnreadCount">fetchUnreadCount</a></li><li data-type='method'><a href="module-UserNotifications.html#.markAllNotificationsAsRead">markAllNotificationsAsRead</a></li><li data-type='method'><a href="module-UserNotifications.html#.markNotificationAsRead">markNotificationAsRead</a></li><li data-type='method'><a href="module-UserNotifications.html#.markNotificationAsUnread">markNotificationAsUnread</a></li><li data-type='method'><a href="module-UserNotifications.html#.pauseLiveEventPolling">pauseLiveEventPolling</a></li><li data-type='method'><a href="module-UserNotifications.html#.restoreNotification">restoreNotification</a></li><li data-type='method'><a href="module-UserNotifications.html#.startLiveEventPolling">startLiveEventPolling</a></li><li data-type='method'><a href="module-UserNotifications.html#.updateNotificationSetting">updateNotificationSetting</a></li></ul></li><li><a href="module-UserProfile.html">UserProfile</a><ul class='methods'><li data-type='method'><a href="module-UserProfile.html#.deleteProfilePicture">deleteProfilePicture</a></li><li data-type='method'><a href="module-UserProfile.html#.otherStats">otherStats</a></li></ul></li></ul><h3>Namespaces</h3><ul><li><a href="ContentOrganization.html">ContentOrganization</a></li><li><a href="Forums.html">Forums</a></li><li><a href="Gamification.html">Gamification</a></li><li><a href="UserManagementSystem.html">UserManagementSystem</a></li></ul><h3>Interfaces</h3><ul><li><a href="TestUser.html">TestUser</a></li></ul><h3>Global</h3><ul><li><a href="global.html#createTestUser">createTestUser</a></li></ul>
|
|
33
|
-
|
|
34
|
-
</nav>
|
|
35
|
-
|
|
36
|
-
<div id="main">
|
|
37
|
-
|
|
38
|
-
<h1 class="page-title">content-org/learning-paths.ts</h1>
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<section>
|
|
47
|
-
<article>
|
|
48
|
-
<pre class="prettyprint source linenums"><code>/**
|
|
49
|
-
* @module LearningPaths
|
|
50
|
-
*/
|
|
51
|
-
|
|
52
|
-
import { fetchHandler } from '../railcontent.js'
|
|
53
|
-
import { fetchByRailContentId, fetchMethodV2Structure } from '../sanity.js'
|
|
54
|
-
import { addContextToContent } from '../contentAggregator.js'
|
|
55
|
-
import {
|
|
56
|
-
contentStatusCompleted,
|
|
57
|
-
contentStatusReset,
|
|
58
|
-
getAllCompletedByIds,
|
|
59
|
-
getProgressState,
|
|
60
|
-
} from '../contentProgress.js'
|
|
61
|
-
|
|
62
|
-
const BASE_PATH: string = `/api/content-org`
|
|
63
|
-
const LEARNING_PATHS_PATH = `${BASE_PATH}/v1/user/learning-paths`
|
|
64
|
-
|
|
65
|
-
interface ActiveLearningPathResponse {
|
|
66
|
-
user_id: number,
|
|
67
|
-
brand: string,
|
|
68
|
-
active_learning_path_id: number,
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Gets today's daily session for the user.
|
|
73
|
-
* @param brand
|
|
74
|
-
* @param userDate
|
|
75
|
-
*/
|
|
76
|
-
export async function getDailySession(brand: string, userDate: Date) {
|
|
77
|
-
const stringDate = userDate.toISOString().split('T')[0]
|
|
78
|
-
const url: string = `${LEARNING_PATHS_PATH}/daily-session/get?brand=${brand}&userDate=${stringDate}`
|
|
79
|
-
return await fetchHandler(url, 'GET', null, null)
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Updates the daily session for the user. Optionally, keeps the first learning path's dailies from a matching day's session.
|
|
84
|
-
* @param brand
|
|
85
|
-
* @param userDate - format 2025-10-31
|
|
86
|
-
* @param keepFirstLearningPath
|
|
87
|
-
*/
|
|
88
|
-
export async function updateDailySession(
|
|
89
|
-
brand: string,
|
|
90
|
-
userDate: Date,
|
|
91
|
-
keepFirstLearningPath: boolean
|
|
92
|
-
) {
|
|
93
|
-
const stringDate = userDate.toISOString().split('T')[0]
|
|
94
|
-
const url: string = `${LEARNING_PATHS_PATH}/daily-session/create`
|
|
95
|
-
const body = { brand: brand, userDate: stringDate, keepFirstLearningPath: keepFirstLearningPath }
|
|
96
|
-
return await fetchHandler(url, 'POST', null, body)
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Gets user's active learning path.
|
|
101
|
-
* @param brand
|
|
102
|
-
*/
|
|
103
|
-
export async function getActivePath(brand: string) {
|
|
104
|
-
const url: string = `${LEARNING_PATHS_PATH}/active-path/get?brand=${brand}`
|
|
105
|
-
return await fetchHandler(url, 'GET', null, null)
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Sets a new learning path as the user's active learning path.
|
|
110
|
-
* @param brand
|
|
111
|
-
* @param learningPathId
|
|
112
|
-
*/
|
|
113
|
-
export async function startLearningPath(brand: string, learningPathId: number) {
|
|
114
|
-
const url: string = `${LEARNING_PATHS_PATH}/active-path/set`
|
|
115
|
-
const body = { brand: brand, learning_path_id: learningPathId }
|
|
116
|
-
return await fetchHandler(url, 'POST', null, body)
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Resets the user's learning path.
|
|
121
|
-
*/
|
|
122
|
-
export async function resetAllLearningPaths() {
|
|
123
|
-
const url: string = `${LEARNING_PATHS_PATH}/reset`
|
|
124
|
-
return await fetchHandler(url, 'POST', null, {})
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Returns learning path with lessons and progress data
|
|
129
|
-
* @param {number} learningPathId - The learning path ID
|
|
130
|
-
* @returns {Promise<Object>} Learning path with enriched lesson data
|
|
131
|
-
*/
|
|
132
|
-
export async function getEnrichedLearningPath(learningPathId) {
|
|
133
|
-
const response = (await addContextToContent(
|
|
134
|
-
fetchByRailContentId,
|
|
135
|
-
learningPathId,
|
|
136
|
-
'learning-path-v2',
|
|
137
|
-
{
|
|
138
|
-
collection: { id: learningPathId, type: 'learning-path-v2' },
|
|
139
|
-
dataField: 'children',
|
|
140
|
-
dataField_includeParent: true,
|
|
141
|
-
addProgressStatus: true,
|
|
142
|
-
addProgressPercentage: true,
|
|
143
|
-
addProgressTimestamp: true,
|
|
144
|
-
addNavigateTo: true,
|
|
145
|
-
}
|
|
146
|
-
)) as any
|
|
147
|
-
if (!response) return response
|
|
148
|
-
|
|
149
|
-
response.children = mapContentToParent(
|
|
150
|
-
response.children,
|
|
151
|
-
'learning-path-lesson-v2',
|
|
152
|
-
learningPathId
|
|
153
|
-
)
|
|
154
|
-
return response
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Get specific learning path lessons by content IDs
|
|
159
|
-
* @param {number[]} contentIds - Array of content IDs to filter
|
|
160
|
-
* @param {number} learningPathId - The learning path ID
|
|
161
|
-
* @returns {Promise<Array>} Filtered lessons
|
|
162
|
-
*/
|
|
163
|
-
export async function getLearningPathLessonsByIds(contentIds, learningPathId) {
|
|
164
|
-
// It is more efficient to load the entire learning path than individual lessons
|
|
165
|
-
// Also adds reliability check whether content is actually in the learning path
|
|
166
|
-
const learningPath = await getEnrichedLearningPath(learningPathId)
|
|
167
|
-
return learningPath.children.filter((lesson) => contentIds.includes(lesson.id))
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Maps content to its parent learning path - fixes multi-parent problems for cta when lessons have a special collection.
|
|
172
|
-
* @param lessons
|
|
173
|
-
* @param parentContentType
|
|
174
|
-
* @param parentContentId
|
|
175
|
-
*/
|
|
176
|
-
export function mapContentToParent(lessons, parentContentType, parentContentId) {
|
|
177
|
-
return lessons.map((lesson: any) => {
|
|
178
|
-
return { ...lesson, type: parentContentType, parent_id: parentContentId }
|
|
179
|
-
})
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/** Fetches and organizes learning path lessons.
|
|
183
|
-
*
|
|
184
|
-
* @param {number} learningPathId - The learning path ID.
|
|
185
|
-
* @param {string} brand
|
|
186
|
-
* @param {Date} userDate - Users local date - format 2025-10-31
|
|
187
|
-
* @returns {Promise<Object>} result - The result object.
|
|
188
|
-
* @returns {number} result.id - The learning path ID.
|
|
189
|
-
* @returns {string} result.thumbnail - Optional thumbnail URL for the learning path.
|
|
190
|
-
* @returns {string} result.title - The title of the learning path.
|
|
191
|
-
* @returns {boolean} result.is_active_learning_path - Whether the learning path is currently active.
|
|
192
|
-
* @returns {Array} result.children - Array of all lessons.
|
|
193
|
-
* @returns {Array} result.upcoming_lessons - Array of upcoming/additional lessons.
|
|
194
|
-
* @returns {Array} result.todays_lessons - Array of today's lessons (max 3).
|
|
195
|
-
* @returns {Array} result.next_learning_path_lessons - Array of next lessons to be taken.
|
|
196
|
-
* @returns {Array} result.completed_lessons - Array of completed lessons.
|
|
197
|
-
* @returns {Array} result.previous_learning_path_todays - Array of completed lessons.
|
|
198
|
-
*/
|
|
199
|
-
export async function fetchLearningPathLessons(
|
|
200
|
-
learningPathId: number,
|
|
201
|
-
brand: string,
|
|
202
|
-
userDate: Date
|
|
203
|
-
) {
|
|
204
|
-
const learningPath = await getEnrichedLearningPath(learningPathId)
|
|
205
|
-
let dailySession = await getDailySession(brand, userDate)
|
|
206
|
-
if (!dailySession) {
|
|
207
|
-
dailySession = await updateDailySession(brand, userDate, false)
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
const isActiveLearningPath = (dailySession?.active_learning_path_id || 0) == learningPathId
|
|
211
|
-
if (!isActiveLearningPath) {
|
|
212
|
-
return {
|
|
213
|
-
...learningPath,
|
|
214
|
-
is_active_learning_path: isActiveLearningPath,
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
const todayContentIds = dailySession.daily_session[0]?.content_ids || []
|
|
218
|
-
const previousLearningPathId = dailySession.daily_session[0]?.learning_path_id
|
|
219
|
-
const nextContentIds = dailySession.daily_session[1]?.content_ids || []
|
|
220
|
-
const nextLearningPathId = dailySession.daily_session[1]?.learning_path_id
|
|
221
|
-
const completedLessons = []
|
|
222
|
-
let todaysLessons = []
|
|
223
|
-
let nextLPLessons = []
|
|
224
|
-
let previousLearningPathTodays = []
|
|
225
|
-
const upcomingLessons = []
|
|
226
|
-
|
|
227
|
-
learningPath.children.forEach((lesson: any) => {
|
|
228
|
-
if (todayContentIds.includes(lesson.id)) {
|
|
229
|
-
todaysLessons.push(lesson)
|
|
230
|
-
} else if (lesson.progressStatus === 'completed') {
|
|
231
|
-
completedLessons.push(lesson)
|
|
232
|
-
} else {
|
|
233
|
-
upcomingLessons.push(lesson)
|
|
234
|
-
}
|
|
235
|
-
})
|
|
236
|
-
|
|
237
|
-
if (todaysLessons.length == 0) {
|
|
238
|
-
// Daily sessions first lessons are not part of the active learning path, but next lessons are
|
|
239
|
-
// load todays lessons from previous learning path
|
|
240
|
-
previousLearningPathTodays = await getLearningPathLessonsByIds(
|
|
241
|
-
todayContentIds,
|
|
242
|
-
previousLearningPathId
|
|
243
|
-
)
|
|
244
|
-
} else if (
|
|
245
|
-
nextContentIds.length > 0 &&
|
|
246
|
-
todaysLessons.length < 3 &&
|
|
247
|
-
upcomingLessons.length === 0
|
|
248
|
-
) {
|
|
249
|
-
// Daily sessions first lessons are the active learning path and the next lessons are not
|
|
250
|
-
// load next lessons from next learning path
|
|
251
|
-
// TODO: update item status to locked when the current learning path is not complete
|
|
252
|
-
nextLPLessons = await getLearningPathLessonsByIds(nextContentIds, nextLearningPathId)
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
return {
|
|
258
|
-
...learningPath,
|
|
259
|
-
is_active_learning_path: isActiveLearningPath,
|
|
260
|
-
active_learning_path_id: dailySession?.active_learning_path_id,
|
|
261
|
-
active_learning_path_created_at: dailySession?.active_learning_path_created_at,
|
|
262
|
-
upcoming_lessons: upcomingLessons,
|
|
263
|
-
todays_lessons: todaysLessons,
|
|
264
|
-
next_learning_path_lessons: nextLPLessons,
|
|
265
|
-
next_learning_path_id: nextLearningPathId,
|
|
266
|
-
completed_lessons: completedLessons,
|
|
267
|
-
previous_learning_path_todays: previousLearningPathTodays,
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* For an array of contentIds, fetch any content progress with state=completed,
|
|
273
|
-
* including other learning paths and a la carte progress.
|
|
274
|
-
*
|
|
275
|
-
* @param contentIds The array of content IDs within the learning path
|
|
276
|
-
* @param learningPathId The learning path ID
|
|
277
|
-
* @returns {Promise<Object>} Response object
|
|
278
|
-
* @returns {Array} result.lessons - Array of all learning path lesson contentIds.
|
|
279
|
-
* @returns {Array} result.completed_lessons - Array of learning path lesson contentIds that are completed.
|
|
280
|
-
* @returns {Array} result.lessons_count - Count of learning path lessons.
|
|
281
|
-
* @returns {Array} result.completed_lessons_count - Count of learning path completed lessons.
|
|
282
|
-
*/
|
|
283
|
-
export async function fetchLearningPathProgressCheckLessons(
|
|
284
|
-
contentIds: number[],
|
|
285
|
-
learningPathId: number
|
|
286
|
-
): Promise<object> {
|
|
287
|
-
let completedContentIds = await getAllCompletedByIds(contentIds, {
|
|
288
|
-
id: learningPathId,
|
|
289
|
-
type: 'learning-path-v2',
|
|
290
|
-
})
|
|
291
|
-
return {
|
|
292
|
-
lessons: contentIds,
|
|
293
|
-
completed_lessons: completedContentIds,
|
|
294
|
-
lessons_count: contentIds.length,
|
|
295
|
-
completed_lessons_count: completedContentIds.length,
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
interface completeMethodIntroVideo {
|
|
300
|
-
intro_video_response: Object | null,
|
|
301
|
-
active_path_response: ActiveLearningPathResponse
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Handles completion of method intro video and other related actions.
|
|
305
|
-
* @param introVideoId - The method intro video content ID.
|
|
306
|
-
* @param brand
|
|
307
|
-
* @returns {Promise<Array>} response - The response object.
|
|
308
|
-
* @returns {Promise<Object|null>} response.intro_video_response - The intro video completion response or null if already completed.
|
|
309
|
-
* @returns {Promise<Object>} response.active_path_response - The set active learning path response.
|
|
310
|
-
*/
|
|
311
|
-
export async function completeMethodIntroVideo(introVideoId: number, brand: string): Promise<completeMethodIntroVideo> {
|
|
312
|
-
let response = {} as completeMethodIntroVideo
|
|
313
|
-
|
|
314
|
-
response.intro_video_response = await completeIfNotCompleted(introVideoId)
|
|
315
|
-
|
|
316
|
-
const methodStructure = await fetchMethodV2Structure(brand)
|
|
317
|
-
const learningPathId = methodStructure.learningPaths[0].id
|
|
318
|
-
|
|
319
|
-
response.active_path_response = await startLearningPath(brand, learningPathId)
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
return response
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
interface completeLearningPathIntroVideo {
|
|
326
|
-
intro_video_response: Object | null,
|
|
327
|
-
learning_path_reset_response: void | null,
|
|
328
|
-
lesson_import_response: Object[] | null
|
|
329
|
-
}
|
|
330
|
-
/**
|
|
331
|
-
* Handles completion of learning path intro video and other related actions.
|
|
332
|
-
* @param introVideoId - The learning path intro video content ID.
|
|
333
|
-
* @param learningPathId - The content_id of the learning path that this learning path intro video belongs to.
|
|
334
|
-
* @param lessonsToImport - content ids for all lessons with progress found during intro video progress check. empty if user chose not to keep learning path progress.
|
|
335
|
-
* @returns {Promise<Array>} response - The response object.
|
|
336
|
-
* @returns {Promise<Object|null>} response.intro_video_response - The intro video completion response or null if already completed.
|
|
337
|
-
* @returns {Promise<void>} response.learning_path_reset_response - The reset learning path response.
|
|
338
|
-
* @returns {Promise<Object[]>} response.lesson_import_response - The responses for completing each content_id within the learning path.
|
|
339
|
-
*/
|
|
340
|
-
export async function completeLearningPathIntroVideo(introVideoId: number, learningPathId: number, lessonsToImport: number[] | null) {
|
|
341
|
-
let response = {} as completeLearningPathIntroVideo
|
|
342
|
-
|
|
343
|
-
response.intro_video_response = await completeIfNotCompleted(introVideoId)
|
|
344
|
-
|
|
345
|
-
const collection = { id: learningPathId, type: 'learning-path-v2' }
|
|
346
|
-
|
|
347
|
-
if (!lessonsToImport) {
|
|
348
|
-
// returns nothing now, but it will when watermelon comes 'round
|
|
349
|
-
response.learning_path_reset_response = await contentStatusReset(learningPathId, collection)
|
|
350
|
-
|
|
351
|
-
} else {
|
|
352
|
-
response.lesson_import_response = {}
|
|
353
|
-
for (const contentId of lessonsToImport) {
|
|
354
|
-
response.lesson_import_response[contentId] = await contentStatusCompleted(contentId, collection)
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
return response
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
async function completeIfNotCompleted(contentId: number): Promise<Object | null> {
|
|
363
|
-
const introVideoStatus = await getProgressState(contentId)
|
|
364
|
-
|
|
365
|
-
return introVideoStatus !== 'completed' ? await contentStatusCompleted(contentId) : null
|
|
366
|
-
}
|
|
367
|
-
</code></pre>
|
|
368
|
-
</article>
|
|
369
|
-
</section>
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
</div>
|
|
377
|
-
|
|
378
|
-
<br class="clear">
|
|
379
|
-
|
|
380
|
-
<footer>
|
|
381
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.3</a> on Fri Nov 28 2025 11:22:56 GMT-0800 (Pacific Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
382
|
-
</footer>
|
|
383
|
-
|
|
384
|
-
<script>prettyPrint();</script>
|
|
385
|
-
<script src="scripts/polyfill.js"></script>
|
|
386
|
-
<script src="scripts/linenumber.js"></script>
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
</body>
|
|
391
|
-
</html>
|