musora-content-services 2.92.3 → 2.92.6

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.
Files changed (114) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/package.json +1 -1
  3. package/src/index.d.ts +2 -0
  4. package/src/index.js +2 -0
  5. package/src/services/content-org/learning-paths.ts +3 -3
  6. package/src/services/progress-row/method-card.js +1 -1
  7. package/src/services/sync/fetch.ts +3 -0
  8. package/docs/Content.html +0 -269
  9. package/docs/ContentOrganization.html +0 -245
  10. package/docs/Forums.html +0 -269
  11. package/docs/Gamification.html +0 -245
  12. package/docs/TestUser.html +0 -260
  13. package/docs/UserManagementSystem.html +0 -317
  14. package/docs/api_types.js.html +0 -97
  15. package/docs/config.js.html +0 -140
  16. package/docs/content-org_content-org.js.html +0 -76
  17. package/docs/content-org_guided-courses.ts.html +0 -110
  18. package/docs/content-org_learning-paths.ts.html +0 -391
  19. package/docs/content-org_playlists-types.js.html +0 -128
  20. package/docs/content-org_playlists.js.html +0 -440
  21. package/docs/content.js.html +0 -603
  22. package/docs/content_artist.ts.html +0 -206
  23. package/docs/content_content.ts.html +0 -77
  24. package/docs/content_genre.ts.html +0 -209
  25. package/docs/content_instructor.ts.html +0 -206
  26. package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  27. package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  28. package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  29. package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  30. package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  31. package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  32. package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  33. package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  34. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  35. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -978
  36. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  37. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  38. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  39. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  40. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -1049
  41. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  42. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  43. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  44. package/docs/forums_categories.ts.html +0 -156
  45. package/docs/forums_discussions.js.html +0 -95
  46. package/docs/forums_forum.js.html +0 -95
  47. package/docs/forums_forums.ts.html +0 -160
  48. package/docs/forums_posts.ts.html +0 -284
  49. package/docs/forums_threads.ts.html +0 -284
  50. package/docs/gamification_awards.js.html +0 -165
  51. package/docs/gamification_awards.ts.html +0 -195
  52. package/docs/gamification_gamification.js.html +0 -76
  53. package/docs/gamification_types.js.html +0 -80
  54. package/docs/global.html +0 -6019
  55. package/docs/index.html +0 -167
  56. package/docs/liveTesting.ts.html +0 -103
  57. package/docs/module-Accounts.html +0 -2283
  58. package/docs/module-Artist.html +0 -993
  59. package/docs/module-Awards.html +0 -836
  60. package/docs/module-Categories.html +0 -711
  61. package/docs/module-Config.html +0 -431
  62. package/docs/module-Content-Services-V2.html +0 -2998
  63. package/docs/module-ForumCategories.html +0 -687
  64. package/docs/module-ForumDiscussions.html +0 -370
  65. package/docs/module-Forums.html +0 -16599
  66. package/docs/module-Genre.html +0 -981
  67. package/docs/module-GuidedCourses.html +0 -108
  68. package/docs/module-Instructor.html +0 -929
  69. package/docs/module-Interests.html +0 -1066
  70. package/docs/module-LearningPaths.html +0 -2424
  71. package/docs/module-Onboarding.html +0 -882
  72. package/docs/module-Payments.html +0 -392
  73. package/docs/module-Permissions.html +0 -406
  74. package/docs/module-Playlists.html +0 -3030
  75. package/docs/module-ProgressRow.html +0 -108
  76. package/docs/module-Railcontent-Services.html +0 -5876
  77. package/docs/module-Sanity-Services.html +0 -8244
  78. package/docs/module-Sessions.html +0 -575
  79. package/docs/module-Threads.html +0 -1119
  80. package/docs/module-UserActivity.html +0 -4534
  81. package/docs/module-UserChat.html +0 -410
  82. package/docs/module-UserManagement.html +0 -1932
  83. package/docs/module-UserMemberships.html +0 -829
  84. package/docs/module-UserNotifications.html +0 -2595
  85. package/docs/module-UserProfile.html +0 -370
  86. package/docs/progress-row_method-card.js.html +0 -184
  87. package/docs/railcontent.js.html +0 -724
  88. package/docs/sanity.js.html +0 -2322
  89. package/docs/scripts/collapse.js +0 -39
  90. package/docs/scripts/commonNav.js +0 -28
  91. package/docs/scripts/linenumber.js +0 -25
  92. package/docs/scripts/nav.js +0 -12
  93. package/docs/scripts/polyfill.js +0 -4
  94. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
  95. package/docs/scripts/prettify/lang-css.js +0 -2
  96. package/docs/scripts/prettify/prettify.js +0 -28
  97. package/docs/scripts/search.js +0 -99
  98. package/docs/styles/jsdoc.css +0 -776
  99. package/docs/styles/prettify.css +0 -80
  100. package/docs/userActivity.js.html +0 -1512
  101. package/docs/user_account.ts.html +0 -265
  102. package/docs/user_chat.js.html +0 -98
  103. package/docs/user_interests.js.html +0 -150
  104. package/docs/user_management.js.html +0 -258
  105. package/docs/user_memberships.js.html +0 -144
  106. package/docs/user_memberships.ts.html +0 -292
  107. package/docs/user_notifications.js.html +0 -374
  108. package/docs/user_onboarding.ts.html +0 -329
  109. package/docs/user_payments.ts.html +0 -146
  110. package/docs/user_permissions.js.html +0 -110
  111. package/docs/user_profile.js.html +0 -115
  112. package/docs/user_sessions.js.html +0 -170
  113. package/docs/user_types.js.html +0 -224
  114. package/docs/user_user-management-system.js.html +0 -79
@@ -1,374 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
-
5
- <meta charset="utf-8">
6
- <title>user/notifications.js - 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">user/notifications.js</h1>
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
- <section>
47
- <article>
48
- <pre class="prettyprint source linenums"><code>/**
49
- * @module UserNotifications
50
- */
51
- import { fetchHandler } from '../railcontent.js'
52
- import eventsAPI from '../eventsAPI.js'
53
- import './types.js'
54
- import {globalConfig} from "../config";
55
- import {fetchLiveEvent} from "../sanity";
56
-
57
- const baseUrl = `/api/notifications`
58
-
59
- const NotificationChannels = {
60
- EMAIL: 'email',
61
- PUSH: 'push',
62
- BELL: 'bell',
63
- };
64
-
65
- /**
66
- * Fetches notifications for a given brand with optional filters for unread status and limit.
67
- *
68
- * @param {Object} [options={}] - Options for fetching notifications.
69
- * @param {number} [options.limit=10] - The maximum number of notifications to fetch.
70
- * @param {number} [options.page=1] - The page number for pagination.
71
- * @param {boolean} [options.onlyUnread=false] - Whether to fetch only unread notifications. If true, adds `unread=1` to the query.
72
- *
73
- * @returns {Promise&lt;Array&lt;Object>>} - A promise that resolves to an array of notifications.
74
- *
75
- * @throws {Error} - Throws an error if the brand is not provided.
76
- *
77
- * @example
78
- * fetchNotifications({ limit: 5, onlyUnread: true, page: 2 })
79
- * .then(notifications => console.log(notifications))
80
- * .catch(error => console.error(error));
81
- */
82
- export async function fetchNotifications({ limit = 10, onlyUnread = false, page = 1 } = {}) {
83
- const unreadParam = onlyUnread ? '&amp;unread=1' : ''
84
- const url = `${baseUrl}/v1?limit=${limit}&amp;page=${page}${unreadParam}`
85
- return fetchHandler(url, 'get')
86
- }
87
-
88
- /**
89
- * Marks a specific notification as read.
90
- *
91
- * @param {number} notificationId - The ID of the notification to mark as read.
92
- *
93
- * @returns {Promise&lt;any>} - A promise that resolves when the notification is successfully marked as read.
94
- *
95
- * @throws {Error} - Throws an error if notificationId is not provided.
96
- *
97
- * @example
98
- * markNotificationAsRead(123)
99
- * .then(response => console.log(response))
100
- * .catch(error => console.error(error));
101
- */
102
- export async function markNotificationAsRead(notificationId) {
103
- if (!notificationId) {
104
- throw new Error('notificationId is required')
105
- }
106
-
107
- const url = `${baseUrl}/v1/read?id=${notificationId}`
108
- return fetchHandler(url, 'put')
109
- }
110
-
111
- /**
112
- * Marks all notifications as read for the current user.
113
- *
114
- * This also pauses live event polling if there is an active event, to prevent immediate re-polling.
115
- *
116
- * @param {string} [brand='drumeo'] - The brand context for live event handling before marking notifications.
117
- * @returns {Promise&lt;Object>} - A promise resolving to the API response from the notifications read endpoint.
118
- */
119
- export async function markAllNotificationsAsRead() {
120
- await eventsAPI.pauseLiveEventCheck()
121
- const url = `${baseUrl}/v1/read`
122
- return fetchHandler(url, 'put')
123
- }
124
-
125
- /**
126
- * Marks a specific notification as unread.
127
- *
128
- * @param {number} notificationId - The ID of the notification to mark as unread.
129
- *
130
- * @returns {Promise&lt;any>} - A promise that resolves when the notification is successfully marked as unread.
131
- *
132
- * @throws {Error} - Throws an error if notificationId is not provided.
133
- *
134
- * @example
135
- * markNotificationAsUnread(123)
136
- * .then(response => console.log(response))
137
- * .catch(error => console.error(error));
138
- */
139
- export async function markNotificationAsUnread(notificationId) {
140
- if (!notificationId) {
141
- throw new Error('notificationId is required')
142
- }
143
-
144
- const url = `${baseUrl}/v1/unread?id=${notificationId}`
145
- return fetchHandler(url, 'put')
146
- }
147
-
148
- /**
149
- * Deletes a specific notification.
150
- *
151
- * @param {number} notificationId - The ID of the notification to delete.
152
- *
153
- * @returns {Promise&lt;any>} - A promise that resolves when the notification is successfully deleted.
154
- *
155
- * @throws {Error} - Throws an error if notificationId is not provided.
156
- *
157
- * @example
158
- * deleteNotification(123)
159
- * .then(response => console.log(response))
160
- * .catch(error => console.error(error));
161
- */
162
- export async function deleteNotification(notificationId) {
163
- if (!notificationId) {
164
- throw new Error('notificationId is required')
165
- }
166
- const url = `${baseUrl}/v1/${notificationId}`
167
- return fetchHandler(url, 'delete')
168
- }
169
-
170
- /**
171
- * Restores a specific notification.
172
- *
173
- * @param {number} notificationId - The ID of the notification to restore.
174
- *
175
- * @returns {Promise&lt;any>} - A promise that resolves when the notification is successfully restored.
176
- *
177
- * @throws {Error} - Throws an error if notificationId is not provided.
178
- *
179
- * @example
180
- * restoreNotification(123)
181
- * .then(response => console.log(response))
182
- * .catch(error => console.error(error));
183
- */
184
- export async function restoreNotification(notificationId) {
185
- if (!notificationId) {
186
- throw new Error('notificationId is required')
187
- }
188
-
189
- const url = `${baseUrl}/v1/${notificationId}`
190
- return fetchHandler(url, 'put')
191
- }
192
-
193
- /**
194
- * Fetches the count of unread notifications for the current user in a given brand context.
195
- *
196
- * This function first checks for standard unread notifications. If none are found,
197
- * it checks if live event polling is active. If so, it will query for any ongoing live events.
198
- * If a live event is active, it counts as an unread item.
199
- *
200
- * @param {Object} [options={}] - Options for fetching unread count.
201
- * @param {string} options.brand - The brand to filter unread notifications by. Defaults to 'drumeo'.
202
- * @returns {Promise&lt;Object>} - A promise that resolves to an object with a `data` property indicating the unread count (0 or 1).
203
- *
204
- * @throws {Error} If the brand is not provided or if network requests fail.
205
- *
206
- * @example
207
- * fetchUnreadCount({ brand: 'drumeo' })
208
- * .then(data => console.log(data.data)) // 0 or 1
209
- * .catch(error => console.error(error));
210
- */
211
- export async function fetchUnreadCount({ brand = 'drumeo'} = {}) {
212
- const url = `${baseUrl}/v1/unread-count`
213
- const notifUnread = await fetchHandler(url, 'get')
214
- if (notifUnread &amp;&amp; notifUnread.data > 0) {
215
- return notifUnread// Return early if unread notifications exist
216
- }
217
- const liveEventPollingState = await fetchLiveEventPollingState()
218
- if(liveEventPollingState.data?.read_state === true){
219
- const liveEvent = await fetchLiveEvent(brand)
220
- return { data: liveEvent ? 1 : 0, liveEvent}
221
- }
222
- return { data: 0}
223
- }
224
-
225
- /**
226
- * Fetches the notification settings for the current user grouped by brand.
227
- *
228
- * @returns {Promise&lt;Object>} A promise that resolves to an object where keys are brands and values are arrays of settings objects.
229
- *
230
- * @example
231
- * fetchNotificationSetting()
232
- * .then(settings => {
233
- * console.log(settings);
234
- * })
235
- * .catch(error => {
236
- * console.error(error);
237
- * });
238
- */
239
- export async function fetchNotificationSettings() {
240
- const url = `/api/notifications/v1/settings`;
241
- const settings = await fetchHandler(url, 'get');
242
-
243
- if (!settings || typeof settings !== 'object') return {};
244
-
245
- const result = {};
246
-
247
- for (const [brand, brandSettings] of Object.entries(settings)) {
248
- result[brand] = Object.entries(brandSettings).map(([name, value]) => ({
249
- name,
250
- ...value,
251
- }));
252
- }
253
-
254
- return result;
255
- }
256
-
257
- /**
258
- * Updates notification settings for specified channels within a given brand.
259
- *
260
- * @param {Object} options - Options to update notification settings.
261
- * @param {string} options.brand - The brand context for the notification settings.
262
- * @param {string} options.settingName - The name of the notification setting to update (required).
263
- * @param {boolean} [options.email] - Whether email notifications are enabled or disabled.
264
- * @param {boolean} [options.push] - Whether push notifications are enabled or disabled.
265
- * @param {boolean} [options.bell] - Whether bell notifications are enabled or disabled.
266
- * @returns {Promise&lt;Object>} - A promise that resolves to the server response after updating settings.
267
- *
268
- * @throws {Error} Throws an error if `settingName` is not provided or if no channels are specified.
269
- *
270
- * @example
271
- * updateNotificationSetting({
272
- * brand: 'drumeo',
273
- * settingName: 'new_lesson',
274
- * email: true,
275
- * push: false,
276
- * bell: true
277
- * })
278
- * .then(response => console.log(response))
279
- * .catch(error => console.error(error));
280
- */
281
- export async function updateNotificationSetting({ brand, settingName, email, push, bell } = {}) {
282
- if (!settingName) {
283
- throw new Error('The "settingName" parameter is required.');
284
- }
285
-
286
- const channelValues = {
287
- [NotificationChannels.EMAIL]: email,
288
- [NotificationChannels.PUSH]: push,
289
- [NotificationChannels.BELL]: bell,
290
- };
291
-
292
- const settings = Object.entries(channelValues)
293
- .filter(([, value]) => value !== undefined)
294
- .map(([channel, value]) => ({
295
- name: settingName,
296
- channel,
297
- value,
298
- brand,
299
- }));
300
-
301
- if (settings.length === 0) {
302
- throw new Error('At least one channel (email, push, or bell) must be provided.');
303
- }
304
-
305
- const payload = { settings };
306
- const url = '/api/notifications/v1/settings';
307
-
308
- return fetchHandler(url, 'PUT', null, payload);
309
- }
310
-
311
- /**
312
- * Pauses live event polling for the current user based on the live event end time.
313
- *
314
- * If a live event is active, polling will be paused until its end time. If no live event is found,
315
- * polling is not paused.
316
- *
317
- * @param {string} [brand='drumeo'] - The brand context to fetch live event data for.
318
- * @returns {Promise&lt;Object>} - A promise resolving to the API response from the pause polling endpoint.
319
- */
320
- export async function pauseLiveEventPolling(brand = 'drumeo') {
321
- const liveEvent = await fetchLiveEvent(brand)
322
- const until = liveEvent?.live_event_end_time || null
323
- const url = `/api/user-management-system/v1/users/pause-polling${until ? `?until=${until}` : ''}`
324
- return fetchHandler(url, 'PUT', null)
325
- }
326
-
327
- /**
328
- * Start live event polling.
329
- * @returns {Promise&lt;Object>} - Promise resolving to the API response
330
- */
331
- export async function startLiveEventPolling(brand = 'drumeo') {
332
- const url = `/api/user-management-system/v1/users/start-polling`
333
- return fetchHandler(url, 'PUT', null)
334
- }
335
-
336
- /**
337
- * Fetches the current live event polling state.
338
- + @returns {Promise&lt;Object>} - Promise resolving to the polling state
339
- */
340
-
341
- export async function fetchLiveEventPollingState() {
342
- const url = `/api/user-management-system/v1/users/polling`
343
- return fetchHandler(url, 'GET', null)
344
- }
345
-
346
-
347
-
348
-
349
-
350
- </code></pre>
351
- </article>
352
- </section>
353
-
354
-
355
-
356
-
357
-
358
-
359
- </div>
360
-
361
- <br class="clear">
362
-
363
- <footer>
364
- 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.
365
- </footer>
366
-
367
- <script>prettyPrint();</script>
368
- <script src="scripts/polyfill.js"></script>
369
- <script src="scripts/linenumber.js"></script>
370
-
371
-
372
-
373
- </body>
374
- </html>