musora-content-services 2.30.5 → 2.31.0

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 (158) hide show
  1. package/.coderabbit.yaml +0 -0
  2. package/.editorconfig +0 -0
  3. package/.github/pull_request_template.md +0 -0
  4. package/.github/workflows/conventional-commits.yaml +0 -0
  5. package/.github/workflows/docs.js.yml +0 -0
  6. package/.github/workflows/node.js.yml +0 -0
  7. package/.prettierignore +0 -0
  8. package/.prettierrc +0 -0
  9. package/.yarnrc.yml +1 -0
  10. package/CHANGELOG.md +54 -0
  11. package/README.md +0 -0
  12. package/babel.config.cjs +0 -0
  13. package/docs/ContentOrganization.html +0 -0
  14. package/docs/Gamification.html +0 -0
  15. package/docs/UserManagementSystem.html +0 -0
  16. package/docs/api_types.js.html +0 -0
  17. package/docs/config.js.html +0 -0
  18. package/docs/content-org_content-org.js.html +0 -0
  19. package/docs/content-org_playlists-types.js.html +0 -0
  20. package/docs/content-org_playlists.js.html +0 -0
  21. package/docs/content.js.html +0 -0
  22. package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  23. package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  24. package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  25. package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  26. package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  27. package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  28. package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  29. package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  30. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  31. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -0
  32. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  33. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  34. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  35. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  36. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -0
  37. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  38. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  39. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  40. package/docs/gamification_awards.js.html +0 -0
  41. package/docs/gamification_gamification.js.html +0 -0
  42. package/docs/gamification_types.js.html +0 -0
  43. package/docs/global.html +0 -0
  44. package/docs/index.html +0 -0
  45. package/docs/module-Awards.html +0 -0
  46. package/docs/module-Config.html +0 -0
  47. package/docs/module-Content-Services-V2.html +0 -0
  48. package/docs/module-Interests.html +0 -0
  49. package/docs/module-Permissions.html +0 -0
  50. package/docs/module-Playlists.html +0 -0
  51. package/docs/module-Railcontent-Services.html +0 -0
  52. package/docs/module-Sanity-Services.html +0 -0
  53. package/docs/module-Sessions.html +0 -0
  54. package/docs/module-UserActivity.html +0 -0
  55. package/docs/module-UserChat.html +0 -0
  56. package/docs/module-UserManagement.html +0 -0
  57. package/docs/module-UserNotifications.html +0 -0
  58. package/docs/module-UserProfile.html +0 -0
  59. package/docs/railcontent.js.html +0 -0
  60. package/docs/sanity.js.html +0 -0
  61. package/docs/scripts/collapse.js +0 -0
  62. package/docs/scripts/commonNav.js +0 -0
  63. package/docs/scripts/linenumber.js +0 -0
  64. package/docs/scripts/nav.js +0 -0
  65. package/docs/scripts/polyfill.js +0 -0
  66. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -0
  67. package/docs/scripts/prettify/lang-css.js +0 -0
  68. package/docs/scripts/prettify/prettify.js +0 -0
  69. package/docs/scripts/search.js +0 -0
  70. package/docs/styles/jsdoc.css +0 -0
  71. package/docs/styles/prettify.css +0 -0
  72. package/docs/userActivity.js.html +0 -0
  73. package/docs/user_chat.js.html +0 -0
  74. package/docs/user_interests.js.html +0 -0
  75. package/docs/user_management.js.html +0 -0
  76. package/docs/user_notifications.js.html +0 -0
  77. package/docs/user_permissions.js.html +0 -0
  78. package/docs/user_profile.js.html +0 -0
  79. package/docs/user_sessions.js.html +0 -0
  80. package/docs/user_types.js.html +0 -0
  81. package/docs/user_user-management-system.js.html +0 -0
  82. package/jest.config.js +0 -0
  83. package/jsdoc.json +0 -0
  84. package/package.json +1 -1
  85. package/src/contentMetaData.js +6 -0
  86. package/src/contentTypeConfig.js +7 -3
  87. package/src/filterBuilder.js +12 -1
  88. package/src/index.d.ts +11 -1
  89. package/src/index.js +12 -2
  90. package/src/infrastructure/http/HttpClient.ts +0 -0
  91. package/src/infrastructure/http/executors/FetchRequestExecutor.ts +0 -0
  92. package/src/infrastructure/http/index.ts +0 -0
  93. package/src/infrastructure/http/interfaces/HeaderProvider.ts +0 -0
  94. package/src/infrastructure/http/interfaces/HttpError.ts +0 -0
  95. package/src/infrastructure/http/interfaces/NetworkError.ts +0 -0
  96. package/src/infrastructure/http/interfaces/RequestExecutor.ts +0 -0
  97. package/src/infrastructure/http/interfaces/RequestOptions.ts +0 -0
  98. package/src/infrastructure/http/providers/DefaultHeaderProvider.ts +0 -0
  99. package/src/lib/httpHelper.js +0 -0
  100. package/src/lib/lastUpdated.js +0 -0
  101. package/src/services/api/types.js +0 -0
  102. package/src/services/config.js +0 -0
  103. package/src/services/content-org/content-org.js +0 -0
  104. package/src/services/content-org/guided-courses.ts +0 -0
  105. package/src/services/content-org/playlists-types.js +0 -0
  106. package/src/services/content-org/playlists.js +0 -0
  107. package/src/services/content.js +18 -8
  108. package/src/services/contentAggregator.js +5 -4
  109. package/src/services/contentLikes.js +0 -0
  110. package/src/services/contentProgress.js +0 -0
  111. package/src/services/dataContext.js +0 -0
  112. package/src/services/dateUtils.js +0 -0
  113. package/src/services/forum.js +0 -0
  114. package/src/services/gamification/awards.js +0 -0
  115. package/src/services/gamification/gamification.js +0 -0
  116. package/src/services/gamification/types.js +0 -0
  117. package/src/services/imageSRCBuilder.js +0 -0
  118. package/src/services/imageSRCVerify.js +0 -0
  119. package/src/services/railcontent.js +20 -0
  120. package/src/services/recommendations.js +0 -0
  121. package/src/services/sanity.js +64 -56
  122. package/src/services/types.js +0 -0
  123. package/src/services/user/account.ts +0 -0
  124. package/src/services/user/chat.js +0 -0
  125. package/src/services/user/interests.js +0 -0
  126. package/src/services/user/management.js +0 -0
  127. package/src/services/user/notifications.js +25 -3
  128. package/src/services/user/permissions.js +0 -0
  129. package/src/services/user/profile.js +0 -0
  130. package/src/services/user/sessions.js +0 -0
  131. package/src/services/user/types.js +0 -0
  132. package/src/services/user/user-management-system.js +0 -0
  133. package/src/services/userActivity.js +31 -18
  134. package/test/HttpClient.test.js +0 -0
  135. package/test/content.test.js +0 -0
  136. package/test/contentLikes.test.js +0 -0
  137. package/test/contentProgress.test.js +0 -0
  138. package/test/dataContext.test.js +0 -0
  139. package/test/forum.test.js +0 -0
  140. package/test/imageSRCBuilder.test.js +0 -0
  141. package/test/imageSRCVerify.test.js +0 -0
  142. package/test/initializeTests.js +0 -0
  143. package/test/lib/lastUpdated.test.js +0 -0
  144. package/test/live/contentProgressLive.test.js +0 -0
  145. package/test/live/railcontentLive.test.js +0 -0
  146. package/test/localStorageMock.js +0 -0
  147. package/test/log.js +0 -0
  148. package/test/mockData/mockData_fetchByRailContentIds_one_content.json +0 -0
  149. package/test/mockData/mockData_progress_content.json +0 -0
  150. package/test/mockData/mockData_sanity_progress_content.json +0 -0
  151. package/test/mockData/mockData_user_practices.json +0 -0
  152. package/test/notifications.test.js +0 -0
  153. package/test/progressRows.test.js +0 -0
  154. package/test/sanityQueryService.test.js +0 -0
  155. package/test/streakMessage.test.js +0 -0
  156. package/test/user/permissions.test.js +0 -0
  157. package/test/userActivity.test.js +0 -0
  158. package/tools/generate-index.cjs +0 -0
package/.coderabbit.yaml CHANGED
File without changes
package/.editorconfig CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
package/.prettierignore CHANGED
File without changes
package/.prettierrc CHANGED
File without changes
package/.yarnrc.yml ADDED
@@ -0,0 +1 @@
1
+ nodeLinker: node-modules
package/CHANGELOG.md CHANGED
@@ -2,6 +2,60 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [2.31.0](https://github.com/railroadmedia/musora-content-services/compare/v2.30.9...v2.31.0) (2025-08-14)
6
+
7
+
8
+ ### Features
9
+
10
+ * T3PS-458: Add Jam Tracks pill on Songs Overview page ([7351760](https://github.com/railroadmedia/musora-content-services/commit/7351760f3c4a92997036c860fadb6ef2602fc505))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * MU2-914: prevent null access error in fetchUnreadCount ([1813999](https://github.com/railroadmedia/musora-content-services/commit/1813999872466f970aa20c936d702b6a4ecc7b91))
16
+ * prevent null access error in fetchUnreadCount ([df39ccf](https://github.com/railroadmedia/musora-content-services/commit/df39ccfaf972214d08827e5a60f91653d491504e))
17
+ * T3PS-732 Filter sorting by name ([a25792c](https://github.com/railroadmedia/musora-content-services/commit/a25792cfce9163b8124c3f000569fd24541a7b33))
18
+
19
+ ### [2.30.9](https://github.com/railroadmedia/musora-content-services/compare/v2.30.5...v2.30.9) (2025-08-13)
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * **BEH-845:** enable soft deletes for user activities ([#384](https://github.com/railroadmedia/musora-content-services/issues/384)) ([9c146c4](https://github.com/railroadmedia/musora-content-services/commit/9c146c43536e517ca69d3f264b117850fec748ec))
25
+ * **MU-921:** add context to content empty arrays ([#410](https://github.com/railroadmedia/musora-content-services/issues/410)) ([0ca84ae](https://github.com/railroadmedia/musora-content-services/commit/0ca84aea741e605d17c0f45bbfb6cc8ea018e676))
26
+ * **recsys:** support navigateTo and permissions filtering for recomme… ([#403](https://github.com/railroadmedia/musora-content-services/issues/403)) ([864ec0f](https://github.com/railroadmedia/musora-content-services/commit/864ec0fc05704d9641a965bc4de63a97422668c4))
27
+ * **T3PS-454:** rank lessons by recommended ([#380](https://github.com/railroadmedia/musora-content-services/issues/380)) ([cc55bfd](https://github.com/railroadmedia/musora-content-services/commit/cc55bfd0fb19f1b42c42eb2ea6573817a8d2cc69))
28
+
29
+ ### [2.30.8](https://github.com/railroadmedia/musora-content-services/compare/v2.30.5...v2.30.8) (2025-08-13)
30
+
31
+
32
+ ### Bug Fixes
33
+
34
+ * **BEH-845:** enable soft deletes for user activities ([#384](https://github.com/railroadmedia/musora-content-services/issues/384)) ([9c146c4](https://github.com/railroadmedia/musora-content-services/commit/9c146c43536e517ca69d3f264b117850fec748ec))
35
+ * **MU-921:** add context to content empty arrays ([#410](https://github.com/railroadmedia/musora-content-services/issues/410)) ([0ca84ae](https://github.com/railroadmedia/musora-content-services/commit/0ca84aea741e605d17c0f45bbfb6cc8ea018e676))
36
+ * **recsys:** support navigateTo and permissions filtering for recomme… ([#403](https://github.com/railroadmedia/musora-content-services/issues/403)) ([864ec0f](https://github.com/railroadmedia/musora-content-services/commit/864ec0fc05704d9641a965bc4de63a97422668c4))
37
+ * **T3PS-454:** rank lessons by recommended ([#380](https://github.com/railroadmedia/musora-content-services/issues/380)) ([cc55bfd](https://github.com/railroadmedia/musora-content-services/commit/cc55bfd0fb19f1b42c42eb2ea6573817a8d2cc69))
38
+
39
+ ### [2.30.7](https://github.com/railroadmedia/musora-content-services/compare/v2.30.5...v2.30.7) (2025-08-13)
40
+
41
+
42
+ ### Bug Fixes
43
+
44
+ * **BEH-845:** enable soft deletes for user activities ([#384](https://github.com/railroadmedia/musora-content-services/issues/384)) ([9c146c4](https://github.com/railroadmedia/musora-content-services/commit/9c146c43536e517ca69d3f264b117850fec748ec))
45
+ * **MU-921:** add context to content empty arrays ([#410](https://github.com/railroadmedia/musora-content-services/issues/410)) ([0ca84ae](https://github.com/railroadmedia/musora-content-services/commit/0ca84aea741e605d17c0f45bbfb6cc8ea018e676))
46
+ * **recsys:** support navigateTo and permissions filtering for recomme… ([#403](https://github.com/railroadmedia/musora-content-services/issues/403)) ([864ec0f](https://github.com/railroadmedia/musora-content-services/commit/864ec0fc05704d9641a965bc4de63a97422668c4))
47
+ * **T3PS-454:** rank lessons by recommended ([#380](https://github.com/railroadmedia/musora-content-services/issues/380)) ([cc55bfd](https://github.com/railroadmedia/musora-content-services/commit/cc55bfd0fb19f1b42c42eb2ea6573817a8d2cc69))
48
+
49
+ ### [2.30.6](https://github.com/railroadmedia/musora-content-services/compare/v2.30.5...v2.30.6) (2025-08-13)
50
+
51
+
52
+ ### Bug Fixes
53
+
54
+ * **BEH-845:** enable soft deletes for user activities ([#384](https://github.com/railroadmedia/musora-content-services/issues/384)) ([9c146c4](https://github.com/railroadmedia/musora-content-services/commit/9c146c43536e517ca69d3f264b117850fec748ec))
55
+ * **MU-921:** add context to content empty arrays ([#410](https://github.com/railroadmedia/musora-content-services/issues/410)) ([0ca84ae](https://github.com/railroadmedia/musora-content-services/commit/0ca84aea741e605d17c0f45bbfb6cc8ea018e676))
56
+ * **recsys:** support navigateTo and permissions filtering for recomme… ([#403](https://github.com/railroadmedia/musora-content-services/issues/403)) ([864ec0f](https://github.com/railroadmedia/musora-content-services/commit/864ec0fc05704d9641a965bc4de63a97422668c4))
57
+ * **T3PS-454:** rank lessons by recommended ([#380](https://github.com/railroadmedia/musora-content-services/issues/380)) ([cc55bfd](https://github.com/railroadmedia/musora-content-services/commit/cc55bfd0fb19f1b42c42eb2ea6573817a8d2cc69))
58
+
5
59
  ### [2.30.5](https://github.com/railroadmedia/musora-content-services/compare/v2.30.4...v2.30.5) (2025-08-06)
6
60
 
7
61
 
package/README.md CHANGED
File without changes
package/babel.config.cjs CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/docs/global.html CHANGED
File without changes
package/docs/index.html CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/jest.config.js CHANGED
File without changes
package/jsdoc.json CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "musora-content-services",
3
- "version": "2.30.5",
3
+ "version": "2.31.0",
4
4
  "description": "A package for Musoras content services ",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -39,6 +39,7 @@ export class Tabs {
39
39
  static Tutorials = { name: 'Tutorials', short_name: 'Tutorials', value: 'type,tutorials', cardType: 'big' }
40
40
  static Transcriptions = { name: 'Transcriptions', short_name: 'Transcriptions', value: 'type,transcription', cardType: 'small' }
41
41
  static PlayAlongs = { name: 'Play-Alongs', short_name: 'Play-Alongs', value:'type,play along', cardType: 'small' }
42
+ static JamTracks = { name: 'Jam Tracks', short_name: 'Jam Tracks', value:'type,jam-track', cardType: 'small' }
42
43
  static RecentAll = { name: 'All', short_name: 'All' }
43
44
  static RecentIncomplete = { name: 'Incomplete', short_name: 'Incomplete' }
44
45
  static RecentCompleted = { name: 'Completed', short_name: 'Completed' }
@@ -220,6 +221,7 @@ const commonMetadata = {
220
221
  Tabs.Tutorials,
221
222
  Tabs.Transcriptions,
222
223
  Tabs.PlayAlongs,
224
+ Tabs.JamTracks,
223
225
  Tabs.ExploreAll
224
226
  ],
225
227
  },
@@ -359,6 +361,7 @@ const contentMetadata = {
359
361
  Tabs.Tutorials,
360
362
  Tabs.Transcriptions,
361
363
  Tabs.PlayAlongs,
364
+ Tabs.JamTracks,
362
365
  Tabs.ExploreAll
363
366
  ],
364
367
  },
@@ -400,6 +403,7 @@ const contentMetadata = {
400
403
  Tabs.Tutorials,
401
404
  Tabs.Transcriptions,
402
405
  Tabs.PlayAlongs,
406
+ Tabs.JamTracks,
403
407
  Tabs.ExploreAll
404
408
  ],
405
409
  },
@@ -451,6 +455,7 @@ const contentMetadata = {
451
455
  Tabs.Tutorials,
452
456
  Tabs.Transcriptions,
453
457
  Tabs.PlayAlongs,
458
+ Tabs.JamTracks,
454
459
  Tabs.ExploreAll
455
460
  ],
456
461
  },
@@ -491,6 +496,7 @@ const contentMetadata = {
491
496
  Tabs.Tutorials,
492
497
  Tabs.Transcriptions,
493
498
  Tabs.PlayAlongs,
499
+ Tabs.JamTracks,
494
500
  Tabs.ExploreAll
495
501
  ],
496
502
  },
@@ -174,6 +174,7 @@ export const studentArchivesLessonTypes = ['student-review', 'student-focus','st
174
174
  export const tutorialsLessonTypes = ['song-tutorial'];
175
175
  export const transcriptionsLessonTypes = ['song'];
176
176
  export const playAlongLessonTypes = ['play-along'];
177
+ export const jamTrackLessonTypes = ['jam-track'];
177
178
 
178
179
  export const individualLessonsTypes = [
179
180
  ...singleLessonTypes,
@@ -207,7 +208,7 @@ export const lessonTypesMapping = {
207
208
  'tabs': transcriptionsLessonTypes,
208
209
  'sheet music': transcriptionsLessonTypes,
209
210
  'play-alongs': playAlongLessonTypes,
210
- 'jam tracks': ['jam-track'],
211
+ 'jam tracks': jamTrackLessonTypes,
211
212
  };
212
213
 
213
214
  export const getNextLessonLessonParentTypes = ['course', 'guided-course', 'pack', 'pack-bundle', 'song-tutorial'];
@@ -222,7 +223,7 @@ export const progressTypesMapping = {
222
223
  'guided course': ['guided-course'],
223
224
  'pack': ['pack', 'semester-pack'],
224
225
  'method': ['learning-path'],
225
- 'jam track': ['jam-track'],
226
+ 'jam track': jamTrackLessonTypes,
226
227
  'course video': ['course-part'],
227
228
  };
228
229
 
@@ -235,7 +236,7 @@ export const songs = {
235
236
 
236
237
  export const filterTypes = {
237
238
  lessons: [...individualLessonsTypes, ...collectionLessonTypes],
238
- songs: [...tutorialsLessonTypes, ...transcriptionsLessonTypes, ...playAlongLessonTypes, 'jam-track'],
239
+ songs: [...tutorialsLessonTypes, ...transcriptionsLessonTypes, ...playAlongLessonTypes, ...jamTrackLessonTypes],
239
240
  }
240
241
 
241
242
  export const recentTypes = {
@@ -802,6 +803,9 @@ export function filtersToGroq(filters, selectedFilters = [], pageName = '') {
802
803
  } else if(value.toLowerCase() === Tabs.PlayAlongs.name.toLowerCase()){
803
804
  const conditions = playAlongLessonTypes.map(lessonType => `_type == '${lessonType}'`).join(' || ');
804
805
  return ` (${conditions})`;
806
+ } else if(value.toLowerCase() === Tabs.JamTracks.name.toLowerCase()){
807
+ const conditions = jamTrackLessonTypes.map(lessonType => `_type == '${lessonType}'`).join(' || ');
808
+ return ` (${conditions})`;
805
809
  } else if(value.toLowerCase() === Tabs.ExploreAll.name.toLowerCase()){
806
810
  var allLessons = filterTypes[pageName] || [];
807
811
  const conditions = allLessons.map(lessonType => `_type == '${lessonType}'`).join(' || ');
@@ -21,6 +21,7 @@ export class FilterBuilder {
21
21
  isSingle = false,
22
22
  allowsPullSongsContent = true,
23
23
  isChildrenFilter = false,
24
+ isParentFilter = false,
24
25
  } = {}
25
26
  ) {
26
27
  this.availableContentStatuses = availableContentStatuses
@@ -35,7 +36,17 @@ export class FilterBuilder {
35
36
  this.filter = filter
36
37
  // this.debug = process.env.DEBUG === 'true' || false;
37
38
  this.debug = false
38
- this.prefix = isChildrenFilter ? '@->' : ''
39
+ this.prefix = this.getPrefix(isParentFilter, isChildrenFilter)
40
+ }
41
+
42
+ getPrefix(isParentFilter, isChildrenFilter) {
43
+ if (isParentFilter) {
44
+ return '^.'
45
+ } else if (isChildrenFilter) {
46
+ return '@->'
47
+ } else {
48
+ return ''
49
+ }
39
50
  }
40
51
 
41
52
  static withOnlyFilterAvailableStatuses(filter, availableContentStatuses, bypassPermissions) {
package/src/index.d.ts CHANGED
@@ -44,7 +44,8 @@ import {
44
44
  } from './services/content.js';
45
45
 
46
46
  import {
47
- addContextToContent
47
+ addContextToContent,
48
+ getNavigateToForPlaylists
48
49
  } from './services/contentAggregator.js';
49
50
 
50
51
  import {
@@ -61,6 +62,7 @@ import {
61
62
  getAllStarted,
62
63
  getAllStartedOrCompleted,
63
64
  getLastInteractedOf,
65
+ getNavigateTo,
64
66
  getNextLesson,
65
67
  getProgressDateByIds,
66
68
  getProgressPercentage,
@@ -143,6 +145,7 @@ import {
143
145
  postContentComplete,
144
146
  postContentLiked,
145
147
  postContentReset,
148
+ postContentRestore,
146
149
  postContentUnliked,
147
150
  postPlaylistContentEngaged,
148
151
  postRecordWatchSession,
@@ -254,6 +257,7 @@ import {
254
257
  markNotificationAsRead,
255
258
  markNotificationAsUnread,
256
259
  pauseLiveEventPolling,
260
+ restoreNotification,
257
261
  startLiveEventPolling,
258
262
  updateNotificationSetting
259
263
  } from './services/user/notifications.js';
@@ -292,6 +296,7 @@ import {
292
296
  recordUserPractice,
293
297
  removeUserPractice,
294
298
  restorePracticeSession,
299
+ restoreUserActivity,
295
300
  restoreUserPractice,
296
301
  unpinProgressRow,
297
302
  updatePracticeNotes,
@@ -423,6 +428,8 @@ declare module 'musora-content-services' {
423
428
  getLastInteractedOf,
424
429
  getLessonContentRows,
425
430
  getMonday,
431
+ getNavigateTo,
432
+ getNavigateToForPlaylists,
426
433
  getNewAndUpcoming,
427
434
  getNextLesson,
428
435
  getPracticeNotes,
@@ -477,6 +484,7 @@ declare module 'musora-content-services' {
477
484
  postContentComplete,
478
485
  postContentLiked,
479
486
  postContentReset,
487
+ postContentRestore,
480
488
  postContentUnliked,
481
489
  postPlaylistContentEngaged,
482
490
  postRecordWatchSession,
@@ -496,7 +504,9 @@ declare module 'musora-content-services' {
496
504
  resetPassword,
497
505
  restoreComment,
498
506
  restoreItemFromPlaylist,
507
+ restoreNotification,
499
508
  restorePracticeSession,
509
+ restoreUserActivity,
500
510
  restoreUserPractice,
501
511
  sendAccountSetupEmail,
502
512
  sendPasswordResetEmail,
package/src/index.js CHANGED
@@ -44,7 +44,8 @@ import {
44
44
  } from './services/content.js';
45
45
 
46
46
  import {
47
- addContextToContent
47
+ addContextToContent,
48
+ getNavigateToForPlaylists
48
49
  } from './services/contentAggregator.js';
49
50
 
50
51
  import {
@@ -61,6 +62,7 @@ import {
61
62
  getAllStarted,
62
63
  getAllStartedOrCompleted,
63
64
  getLastInteractedOf,
65
+ getNavigateTo,
64
66
  getNextLesson,
65
67
  getProgressDateByIds,
66
68
  getProgressPercentage,
@@ -129,9 +131,9 @@ import {
129
131
  fetchNextContentDataForParent,
130
132
  fetchRecentUserActivities,
131
133
  fetchSongsInProgress,
134
+ fetchTopComment,
132
135
  fetchUserAward,
133
136
  fetchUserBadges,
134
- fetchTopComment,
135
137
  fetchUserLikes,
136
138
  fetchUserPermissionsData,
137
139
  fetchUserPracticeMeta,
@@ -143,6 +145,7 @@ import {
143
145
  postContentComplete,
144
146
  postContentLiked,
145
147
  postContentReset,
148
+ postContentRestore,
146
149
  postContentUnliked,
147
150
  postPlaylistContentEngaged,
148
151
  postRecordWatchSession,
@@ -254,6 +257,7 @@ import {
254
257
  markNotificationAsRead,
255
258
  markNotificationAsUnread,
256
259
  pauseLiveEventPolling,
260
+ restoreNotification,
257
261
  startLiveEventPolling,
258
262
  updateNotificationSetting
259
263
  } from './services/user/notifications.js';
@@ -292,6 +296,7 @@ import {
292
296
  recordUserPractice,
293
297
  removeUserPractice,
294
298
  restorePracticeSession,
299
+ restoreUserActivity,
295
300
  restoreUserPractice,
296
301
  unpinProgressRow,
297
302
  updatePracticeNotes,
@@ -422,6 +427,8 @@ export {
422
427
  getLastInteractedOf,
423
428
  getLessonContentRows,
424
429
  getMonday,
430
+ getNavigateTo,
431
+ getNavigateToForPlaylists,
425
432
  getNewAndUpcoming,
426
433
  getNextLesson,
427
434
  getPracticeNotes,
@@ -476,6 +483,7 @@ export {
476
483
  postContentComplete,
477
484
  postContentLiked,
478
485
  postContentReset,
486
+ postContentRestore,
479
487
  postContentUnliked,
480
488
  postPlaylistContentEngaged,
481
489
  postRecordWatchSession,
@@ -495,7 +503,9 @@ export {
495
503
  resetPassword,
496
504
  restoreComment,
497
505
  restoreItemFromPlaylist,
506
+ restoreNotification,
498
507
  restorePracticeSession,
508
+ restoreUserActivity,
499
509
  restoreUserPractice,
500
510
  sendAccountSetupEmail,
501
511
  sendPasswordResetEmail,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -15,7 +15,7 @@ import {
15
15
  } from './sanity.js'
16
16
  import {TabResponseType, Tabs, capitalizeFirstLetter} from '../contentMetaData.js'
17
17
  import {fetchHandler} from "./railcontent";
18
- import {recommendations, rankCategories} from "./recommendations";
18
+ import {recommendations, rankCategories, rankItems} from "./recommendations";
19
19
  import {addContextToContent} from "./contentAggregator.js";
20
20
 
21
21
 
@@ -85,12 +85,22 @@ export async function getTabResults(brand, pageName, tabName, {
85
85
  addProgressStatus: true
86
86
  })
87
87
  } else {
88
- let temp = await fetchTabData(brand, pageName, { page, limit, sort, includedFields: mergedIncludedFields, progress: progressValue });
89
- results = await addContextToContent(() => temp.entity, {
90
- addNextLesson: true,
91
- addNavigateTo: true,
92
- addProgressPercentage: true,
93
- addProgressStatus: true
88
+ let temp = await fetchTabData(brand, pageName, { page, limit, sort, includedFields: mergedIncludedFields, progress: progressValue });
89
+
90
+ const [ranking, contextResults] = await Promise.all([
91
+ sort === 'recommended' ? rankItems(brand, temp.entity.map(e => e.railcontent_id)) : [],
92
+ addContextToContent(() => temp.entity, {
93
+ addNextLesson: true,
94
+ addNavigateTo: true,
95
+ addProgressPercentage: true,
96
+ addProgressStatus: true
97
+ })
98
+ ]);
99
+
100
+ results = ranking.length === 0 ? contextResults : contextResults.sort((a, b) => {
101
+ const indexA = ranking.indexOf(a.railcontent_id);
102
+ const indexB = ranking.indexOf(b.railcontent_id);
103
+ return (indexA === -1 ? Infinity : indexA) - (indexB === -1 ? Infinity : indexB);
94
104
  })
95
105
  }
96
106
 
@@ -392,7 +402,7 @@ export async function getRecommendedForYou(brand, rowId = null, {
392
402
  // Apply pagination before calling fetchByRailContentIds
393
403
  const startIndex = (page - 1) * limit;
394
404
  const paginatedData = data.slice(startIndex, startIndex + limit);
395
- const contents = await addContextToContent(fetchByRailContentIds, paginatedData, 'tab-data',
405
+ const contents = await addContextToContent(fetchByRailContentIds, paginatedData, 'tab-data', brand, true,
396
406
  {
397
407
  addNextLesson: true,
398
408
  addNavigateTo: true,