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.
Files changed (121) hide show
  1. package/.github/workflows/docs.js.yml +64 -47
  2. package/CHANGELOG.md +23 -0
  3. package/package.json +1 -1
  4. package/src/index.d.ts +2 -0
  5. package/src/index.js +2 -0
  6. package/src/lib/brands.ts +7 -7
  7. package/src/services/content/artist.ts +10 -7
  8. package/src/services/content/genre.ts +10 -7
  9. package/src/services/content/instructor.ts +7 -7
  10. package/src/services/content-org/learning-paths.ts +3 -3
  11. package/src/services/progress-row/method-card.js +1 -1
  12. package/src/services/reporting/reporting.ts +19 -15
  13. package/src/services/sync/fetch.ts +3 -0
  14. package/src/services/user/onboarding.ts +3 -3
  15. package/docs/Content.html +0 -269
  16. package/docs/ContentOrganization.html +0 -245
  17. package/docs/Forums.html +0 -269
  18. package/docs/Gamification.html +0 -245
  19. package/docs/TestUser.html +0 -260
  20. package/docs/UserManagementSystem.html +0 -317
  21. package/docs/api_types.js.html +0 -97
  22. package/docs/config.js.html +0 -140
  23. package/docs/content-org_content-org.js.html +0 -76
  24. package/docs/content-org_guided-courses.ts.html +0 -110
  25. package/docs/content-org_learning-paths.ts.html +0 -391
  26. package/docs/content-org_playlists-types.js.html +0 -128
  27. package/docs/content-org_playlists.js.html +0 -440
  28. package/docs/content.js.html +0 -603
  29. package/docs/content_artist.ts.html +0 -206
  30. package/docs/content_content.ts.html +0 -77
  31. package/docs/content_genre.ts.html +0 -209
  32. package/docs/content_instructor.ts.html +0 -206
  33. package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  34. package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  35. package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  36. package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  37. package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  38. package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  39. package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  40. package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  41. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  42. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -978
  43. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  44. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  45. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  46. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  47. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -1049
  48. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  49. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  50. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  51. package/docs/forums_categories.ts.html +0 -156
  52. package/docs/forums_discussions.js.html +0 -95
  53. package/docs/forums_forum.js.html +0 -95
  54. package/docs/forums_forums.ts.html +0 -160
  55. package/docs/forums_posts.ts.html +0 -284
  56. package/docs/forums_threads.ts.html +0 -284
  57. package/docs/gamification_awards.js.html +0 -165
  58. package/docs/gamification_awards.ts.html +0 -195
  59. package/docs/gamification_gamification.js.html +0 -76
  60. package/docs/gamification_types.js.html +0 -80
  61. package/docs/global.html +0 -6019
  62. package/docs/index.html +0 -167
  63. package/docs/liveTesting.ts.html +0 -103
  64. package/docs/module-Accounts.html +0 -2283
  65. package/docs/module-Artist.html +0 -993
  66. package/docs/module-Awards.html +0 -836
  67. package/docs/module-Categories.html +0 -711
  68. package/docs/module-Config.html +0 -431
  69. package/docs/module-Content-Services-V2.html +0 -2998
  70. package/docs/module-ForumCategories.html +0 -687
  71. package/docs/module-ForumDiscussions.html +0 -370
  72. package/docs/module-Forums.html +0 -16599
  73. package/docs/module-Genre.html +0 -981
  74. package/docs/module-GuidedCourses.html +0 -108
  75. package/docs/module-Instructor.html +0 -929
  76. package/docs/module-Interests.html +0 -1066
  77. package/docs/module-LearningPaths.html +0 -2424
  78. package/docs/module-Onboarding.html +0 -882
  79. package/docs/module-Payments.html +0 -392
  80. package/docs/module-Permissions.html +0 -406
  81. package/docs/module-Playlists.html +0 -3030
  82. package/docs/module-ProgressRow.html +0 -108
  83. package/docs/module-Railcontent-Services.html +0 -5876
  84. package/docs/module-Sanity-Services.html +0 -8244
  85. package/docs/module-Sessions.html +0 -575
  86. package/docs/module-Threads.html +0 -1119
  87. package/docs/module-UserActivity.html +0 -4534
  88. package/docs/module-UserChat.html +0 -410
  89. package/docs/module-UserManagement.html +0 -1932
  90. package/docs/module-UserMemberships.html +0 -829
  91. package/docs/module-UserNotifications.html +0 -2595
  92. package/docs/module-UserProfile.html +0 -370
  93. package/docs/progress-row_method-card.js.html +0 -184
  94. package/docs/railcontent.js.html +0 -724
  95. package/docs/sanity.js.html +0 -2322
  96. package/docs/scripts/collapse.js +0 -39
  97. package/docs/scripts/commonNav.js +0 -28
  98. package/docs/scripts/linenumber.js +0 -25
  99. package/docs/scripts/nav.js +0 -12
  100. package/docs/scripts/polyfill.js +0 -4
  101. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
  102. package/docs/scripts/prettify/lang-css.js +0 -2
  103. package/docs/scripts/prettify/prettify.js +0 -28
  104. package/docs/scripts/search.js +0 -99
  105. package/docs/styles/jsdoc.css +0 -776
  106. package/docs/styles/prettify.css +0 -80
  107. package/docs/userActivity.js.html +0 -1512
  108. package/docs/user_account.ts.html +0 -265
  109. package/docs/user_chat.js.html +0 -98
  110. package/docs/user_interests.js.html +0 -150
  111. package/docs/user_management.js.html +0 -258
  112. package/docs/user_memberships.js.html +0 -144
  113. package/docs/user_memberships.ts.html +0 -292
  114. package/docs/user_notifications.js.html +0 -374
  115. package/docs/user_onboarding.ts.html +0 -329
  116. package/docs/user_payments.ts.html +0 -146
  117. package/docs/user_permissions.js.html +0 -110
  118. package/docs/user_profile.js.html +0 -115
  119. package/docs/user_sessions.js.html +0 -170
  120. package/docs/user_types.js.html +0 -224
  121. 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>