musora-content-services 1.3.5 → 1.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/node.js.yml +0 -0
- package/CHANGELOG.md +6 -0
- package/README.md +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
- package/docs/scripts/collapse.js +0 -0
- package/docs/scripts/commonNav.js +0 -0
- package/docs/scripts/linenumber.js +0 -0
- package/docs/scripts/nav.js +0 -0
- package/docs/scripts/polyfill.js +0 -0
- package/docs/scripts/prettify/Apache-License-2.0.txt +0 -0
- package/docs/scripts/prettify/lang-css.js +0 -0
- package/docs/scripts/prettify/prettify.js +0 -0
- package/docs/scripts/search.js +0 -0
- package/docs/styles/jsdoc.css +0 -0
- package/docs/styles/prettify.css +0 -0
- package/link_mcs.sh +0 -0
- package/package.json +1 -1
- package/src/filterBuilder.js +11 -11
- package/src/index.d.ts +250 -227
- package/src/index.js +249 -226
- package/src/services/dataContext.js +26 -5
- package/src/services/sanity.js +60 -16
- package/test/dataContext.test.js +38 -0
- package/test/sanityQueryService.test.js +16 -6
package/src/index.js
CHANGED
|
@@ -1,238 +1,261 @@
|
|
|
1
1
|
/*** This file was generated automatically. To recreate, please run `npm run build-index`. ***/
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
globalConfig,
|
|
5
|
+
initializeService
|
|
6
|
+
} from './services/config.js';
|
|
4
7
|
|
|
5
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
isContentLiked,
|
|
10
|
+
likeContent,
|
|
11
|
+
unlikeContent
|
|
12
|
+
} from './services/contentLikes.js';
|
|
6
13
|
|
|
7
14
|
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
} from './services/contentProgress.js'
|
|
15
|
+
assignmentStatusCompleted,
|
|
16
|
+
assignmentStatusReset,
|
|
17
|
+
contentStatusCompleted,
|
|
18
|
+
contentStatusReset,
|
|
19
|
+
getAllCompleted,
|
|
20
|
+
getAllStarted,
|
|
21
|
+
getAllStartedOrCompleted,
|
|
22
|
+
getProgressPercentage,
|
|
23
|
+
getProgressPercentageByIds,
|
|
24
|
+
getProgressState,
|
|
25
|
+
getProgressStateByIds,
|
|
26
|
+
getResumeTimeSeconds,
|
|
27
|
+
recordWatchSession
|
|
28
|
+
} from './services/contentProgress.js';
|
|
22
29
|
|
|
23
30
|
import {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
deletePlaylist,
|
|
28
|
-
deletePlaylistItem,
|
|
29
|
-
deletePlaylistLike,
|
|
30
|
-
duplicatePlaylist,
|
|
31
|
-
fetchAllCompletedStates,
|
|
32
|
-
fetchCarouselCardData,
|
|
33
|
-
fetchChallengeIndexMetadata,
|
|
34
|
-
fetchChallengeLessonData,
|
|
35
|
-
fetchChallengeMetadata,
|
|
36
|
-
fetchChallengeUserActiveChallenges,
|
|
37
|
-
fetchCompletedChallenges,
|
|
38
|
-
fetchCompletedContent,
|
|
39
|
-
fetchCompletedState,
|
|
40
|
-
fetchContentInProgress,
|
|
41
|
-
fetchContentPageUserData,
|
|
42
|
-
fetchContentProgress,
|
|
43
|
-
fetchHandler,
|
|
44
|
-
fetchNextContentDataForParent,
|
|
45
|
-
fetchOwnedChallenges,
|
|
46
|
-
fetchPinnedPlaylists,
|
|
47
|
-
fetchPlaylist,
|
|
48
|
-
fetchPlaylistItem,
|
|
49
|
-
fetchPlaylistItems,
|
|
50
|
-
fetchSongsInProgress,
|
|
51
|
-
fetchUserAward,
|
|
52
|
-
fetchUserBadges,
|
|
53
|
-
fetchUserChallengeProgress,
|
|
54
|
-
fetchUserLikes,
|
|
55
|
-
fetchUserPermissionsData,
|
|
56
|
-
fetchUserPlaylists,
|
|
57
|
-
likePlaylist,
|
|
58
|
-
pinPlaylist,
|
|
59
|
-
playback,
|
|
60
|
-
postChallengesCommunityNotification,
|
|
61
|
-
postChallengesCompleteLesson,
|
|
62
|
-
postChallengesEnroll,
|
|
63
|
-
postChallengesEnrollmentNotification,
|
|
64
|
-
postChallengesHideCompletedBanner,
|
|
65
|
-
postChallengesLeave,
|
|
66
|
-
postChallengesSetStartDate,
|
|
67
|
-
postChallengesSoloNotification,
|
|
68
|
-
postChallengesUnlock,
|
|
69
|
-
postContentCompleted,
|
|
70
|
-
postContentLiked,
|
|
71
|
-
postContentReset,
|
|
72
|
-
postContentUnliked,
|
|
73
|
-
postRecordWatchSession,
|
|
74
|
-
reportPlaylist,
|
|
75
|
-
setStudentViewForUser,
|
|
76
|
-
unpinPlaylist,
|
|
77
|
-
updatePlaylist,
|
|
78
|
-
updatePlaylistItem,
|
|
79
|
-
} from './services/railcontent.js'
|
|
31
|
+
setLastUpdatedTime,
|
|
32
|
+
wasLastUpdateOlderThanXSeconds
|
|
33
|
+
} from './services/lastUpdated.js';
|
|
80
34
|
|
|
81
35
|
import {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
36
|
+
addItemToPlaylist,
|
|
37
|
+
countAssignmentsAndLessons,
|
|
38
|
+
createPlaylist,
|
|
39
|
+
deletePlaylist,
|
|
40
|
+
deletePlaylistItem,
|
|
41
|
+
deletePlaylistLike,
|
|
42
|
+
duplicatePlaylist,
|
|
43
|
+
fetchAllCompletedStates,
|
|
44
|
+
fetchCarouselCardData,
|
|
45
|
+
fetchChallengeIndexMetadata,
|
|
46
|
+
fetchChallengeLessonData,
|
|
47
|
+
fetchChallengeMetadata,
|
|
48
|
+
fetchChallengeUserActiveChallenges,
|
|
49
|
+
fetchCompletedChallenges,
|
|
50
|
+
fetchCompletedContent,
|
|
51
|
+
fetchCompletedState,
|
|
52
|
+
fetchContentInProgress,
|
|
53
|
+
fetchContentPageUserData,
|
|
54
|
+
fetchContentProgress,
|
|
55
|
+
fetchHandler,
|
|
56
|
+
fetchNextContentDataForParent,
|
|
57
|
+
fetchOwnedChallenges,
|
|
58
|
+
fetchPinnedPlaylists,
|
|
59
|
+
fetchPlaylist,
|
|
60
|
+
fetchPlaylistItem,
|
|
61
|
+
fetchPlaylistItems,
|
|
62
|
+
fetchSongsInProgress,
|
|
63
|
+
fetchUserAward,
|
|
64
|
+
fetchUserBadges,
|
|
65
|
+
fetchUserChallengeProgress,
|
|
66
|
+
fetchUserLikes,
|
|
67
|
+
fetchUserPermissionsData,
|
|
68
|
+
fetchUserPlaylists,
|
|
69
|
+
likePlaylist,
|
|
70
|
+
pinPlaylist,
|
|
71
|
+
playback,
|
|
72
|
+
postChallengesCommunityNotification,
|
|
73
|
+
postChallengesCompleteLesson,
|
|
74
|
+
postChallengesEnroll,
|
|
75
|
+
postChallengesEnrollmentNotification,
|
|
76
|
+
postChallengesHideCompletedBanner,
|
|
77
|
+
postChallengesLeave,
|
|
78
|
+
postChallengesSetStartDate,
|
|
79
|
+
postChallengesSoloNotification,
|
|
80
|
+
postChallengesUnlock,
|
|
81
|
+
postContentCompleted,
|
|
82
|
+
postContentLiked,
|
|
83
|
+
postContentReset,
|
|
84
|
+
postContentUnliked,
|
|
85
|
+
postRecordWatchSession,
|
|
86
|
+
reportPlaylist,
|
|
87
|
+
setStudentViewForUser,
|
|
88
|
+
unpinPlaylist,
|
|
89
|
+
updatePlaylist,
|
|
90
|
+
updatePlaylistItem
|
|
91
|
+
} from './services/railcontent.js';
|
|
121
92
|
|
|
122
|
-
import {
|
|
93
|
+
import {
|
|
94
|
+
fetchAll,
|
|
95
|
+
fetchAllFilterOptions,
|
|
96
|
+
fetchAllPacks,
|
|
97
|
+
fetchArtistLessons,
|
|
98
|
+
fetchArtists,
|
|
99
|
+
fetchByRailContentId,
|
|
100
|
+
fetchByRailContentIds,
|
|
101
|
+
fetchByReference,
|
|
102
|
+
fetchChatAndLiveEnvent,
|
|
103
|
+
fetchCoachLessons,
|
|
104
|
+
fetchComingSoon,
|
|
105
|
+
fetchCommentModContentData,
|
|
106
|
+
fetchFoundation,
|
|
107
|
+
fetchGenreLessons,
|
|
108
|
+
fetchHierarchy,
|
|
109
|
+
fetchLeaving,
|
|
110
|
+
fetchLessonContent,
|
|
111
|
+
fetchLiveEvent,
|
|
112
|
+
fetchMetadata,
|
|
113
|
+
fetchMethod,
|
|
114
|
+
fetchMethodChildren,
|
|
115
|
+
fetchMethodChildrenIds,
|
|
116
|
+
fetchMethodPreviousNextLesson,
|
|
117
|
+
fetchNewReleases,
|
|
118
|
+
fetchNextPreviousLesson,
|
|
119
|
+
fetchPackAll,
|
|
120
|
+
fetchPackData,
|
|
121
|
+
fetchParentForDownload,
|
|
122
|
+
fetchPlayAlongsCount,
|
|
123
|
+
fetchRelatedLessons,
|
|
124
|
+
fetchRelatedSongs,
|
|
125
|
+
fetchReturning,
|
|
126
|
+
fetchSanity,
|
|
127
|
+
fetchScheduledReleases,
|
|
128
|
+
fetchShowsData,
|
|
129
|
+
fetchSongArtistCount,
|
|
130
|
+
fetchSongById,
|
|
131
|
+
fetchTopLevelParentId,
|
|
132
|
+
fetchUpcomingEvents,
|
|
133
|
+
getSortOrder,
|
|
134
|
+
jumpToContinueContent
|
|
135
|
+
} from './services/sanity.js';
|
|
136
|
+
|
|
137
|
+
import {
|
|
138
|
+
fetchUserPermissions,
|
|
139
|
+
reset
|
|
140
|
+
} from './services/userPermissions.js';
|
|
123
141
|
|
|
124
142
|
export {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
143
|
+
addItemToPlaylist,
|
|
144
|
+
assignmentStatusCompleted,
|
|
145
|
+
assignmentStatusReset,
|
|
146
|
+
contentStatusCompleted,
|
|
147
|
+
contentStatusReset,
|
|
148
|
+
countAssignmentsAndLessons,
|
|
149
|
+
createPlaylist,
|
|
150
|
+
deletePlaylist,
|
|
151
|
+
deletePlaylistItem,
|
|
152
|
+
deletePlaylistLike,
|
|
153
|
+
duplicatePlaylist,
|
|
154
|
+
fetchAll,
|
|
155
|
+
fetchAllCompletedStates,
|
|
156
|
+
fetchAllFilterOptions,
|
|
157
|
+
fetchAllPacks,
|
|
158
|
+
fetchArtistLessons,
|
|
159
|
+
fetchArtists,
|
|
160
|
+
fetchByRailContentId,
|
|
161
|
+
fetchByRailContentIds,
|
|
162
|
+
fetchByReference,
|
|
163
|
+
fetchCarouselCardData,
|
|
164
|
+
fetchChallengeIndexMetadata,
|
|
165
|
+
fetchChallengeLessonData,
|
|
166
|
+
fetchChallengeMetadata,
|
|
167
|
+
fetchChallengeUserActiveChallenges,
|
|
168
|
+
fetchChatAndLiveEnvent,
|
|
169
|
+
fetchCoachLessons,
|
|
170
|
+
fetchComingSoon,
|
|
171
|
+
fetchCommentModContentData,
|
|
172
|
+
fetchCompletedChallenges,
|
|
173
|
+
fetchCompletedContent,
|
|
174
|
+
fetchCompletedState,
|
|
175
|
+
fetchContentInProgress,
|
|
176
|
+
fetchContentPageUserData,
|
|
177
|
+
fetchContentProgress,
|
|
178
|
+
fetchFoundation,
|
|
179
|
+
fetchGenreLessons,
|
|
180
|
+
fetchHandler,
|
|
181
|
+
fetchHierarchy,
|
|
182
|
+
fetchLeaving,
|
|
183
|
+
fetchLessonContent,
|
|
184
|
+
fetchLiveEvent,
|
|
185
|
+
fetchMetadata,
|
|
186
|
+
fetchMethod,
|
|
187
|
+
fetchMethodChildren,
|
|
188
|
+
fetchMethodChildrenIds,
|
|
189
|
+
fetchMethodPreviousNextLesson,
|
|
190
|
+
fetchNewReleases,
|
|
191
|
+
fetchNextContentDataForParent,
|
|
192
|
+
fetchNextPreviousLesson,
|
|
193
|
+
fetchOwnedChallenges,
|
|
194
|
+
fetchPackAll,
|
|
195
|
+
fetchPackData,
|
|
196
|
+
fetchParentForDownload,
|
|
197
|
+
fetchPinnedPlaylists,
|
|
198
|
+
fetchPlayAlongsCount,
|
|
199
|
+
fetchPlaylist,
|
|
200
|
+
fetchPlaylistItem,
|
|
201
|
+
fetchPlaylistItems,
|
|
202
|
+
fetchRelatedLessons,
|
|
203
|
+
fetchRelatedSongs,
|
|
204
|
+
fetchReturning,
|
|
205
|
+
fetchSanity,
|
|
206
|
+
fetchScheduledReleases,
|
|
207
|
+
fetchShowsData,
|
|
208
|
+
fetchSongArtistCount,
|
|
209
|
+
fetchSongById,
|
|
210
|
+
fetchSongsInProgress,
|
|
211
|
+
fetchTopLevelParentId,
|
|
212
|
+
fetchUpcomingEvents,
|
|
213
|
+
fetchUserAward,
|
|
214
|
+
fetchUserBadges,
|
|
215
|
+
fetchUserChallengeProgress,
|
|
216
|
+
fetchUserLikes,
|
|
217
|
+
fetchUserPermissions,
|
|
218
|
+
fetchUserPermissionsData,
|
|
219
|
+
fetchUserPlaylists,
|
|
220
|
+
getAllCompleted,
|
|
221
|
+
getAllStarted,
|
|
222
|
+
getAllStartedOrCompleted,
|
|
223
|
+
getProgressPercentage,
|
|
224
|
+
getProgressPercentageByIds,
|
|
225
|
+
getProgressState,
|
|
226
|
+
getProgressStateByIds,
|
|
227
|
+
getResumeTimeSeconds,
|
|
228
|
+
getSortOrder,
|
|
229
|
+
globalConfig,
|
|
230
|
+
initializeService,
|
|
231
|
+
isContentLiked,
|
|
232
|
+
jumpToContinueContent,
|
|
233
|
+
likeContent,
|
|
234
|
+
likePlaylist,
|
|
235
|
+
pinPlaylist,
|
|
236
|
+
playback,
|
|
237
|
+
postChallengesCommunityNotification,
|
|
238
|
+
postChallengesCompleteLesson,
|
|
239
|
+
postChallengesEnroll,
|
|
240
|
+
postChallengesEnrollmentNotification,
|
|
241
|
+
postChallengesHideCompletedBanner,
|
|
242
|
+
postChallengesLeave,
|
|
243
|
+
postChallengesSetStartDate,
|
|
244
|
+
postChallengesSoloNotification,
|
|
245
|
+
postChallengesUnlock,
|
|
246
|
+
postContentCompleted,
|
|
247
|
+
postContentLiked,
|
|
248
|
+
postContentReset,
|
|
249
|
+
postContentUnliked,
|
|
250
|
+
postRecordWatchSession,
|
|
251
|
+
recordWatchSession,
|
|
252
|
+
reportPlaylist,
|
|
253
|
+
reset,
|
|
254
|
+
setLastUpdatedTime,
|
|
255
|
+
setStudentViewForUser,
|
|
256
|
+
unlikeContent,
|
|
257
|
+
unpinPlaylist,
|
|
258
|
+
updatePlaylist,
|
|
259
|
+
updatePlaylistItem,
|
|
260
|
+
wasLastUpdateOlderThanXSeconds,
|
|
261
|
+
};
|
|
@@ -17,6 +17,23 @@ export class DataContext {
|
|
|
17
17
|
context = null
|
|
18
18
|
dataPromise = null
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Verify current cached data is on the correct version
|
|
22
|
+
*
|
|
23
|
+
* @param {int} dataVersionKey - Data version key from the back end
|
|
24
|
+
* @param {int} currentVersion - Current version of the data on the back end
|
|
25
|
+
* */
|
|
26
|
+
static async verifyLocalData(dataVersionKey, currentVersion) {
|
|
27
|
+
const tempContext = new DataContext(dataVersionKey, null)
|
|
28
|
+
await tempContext.ensureLocalContextLoaded()
|
|
29
|
+
|
|
30
|
+
if (currentVersion !== tempContext.version()) {
|
|
31
|
+
tempContext.clearCache()
|
|
32
|
+
} else {
|
|
33
|
+
tempContext.setLastUpdatedTime()
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
20
37
|
constructor(dataVersionKey, fetchDataFunction) {
|
|
21
38
|
this.dataVersionKey = dataVersionKey
|
|
22
39
|
this.fetchDataFunction = fetchDataFunction
|
|
@@ -33,7 +50,7 @@ export class DataContext {
|
|
|
33
50
|
|
|
34
51
|
async getDataPromise() {
|
|
35
52
|
await this.ensureLocalContextLoaded()
|
|
36
|
-
const shouldVerify = await this.
|
|
53
|
+
const shouldVerify = await this.shouldVerifyServerVersions()
|
|
37
54
|
|
|
38
55
|
if (!this.context || shouldVerify) {
|
|
39
56
|
let version = this.version()
|
|
@@ -42,7 +59,7 @@ export class DataContext {
|
|
|
42
59
|
this.context = data
|
|
43
60
|
cache.setItem(this.localStorageKey, JSON.stringify(data))
|
|
44
61
|
}
|
|
45
|
-
|
|
62
|
+
this.setLastUpdatedTime()
|
|
46
63
|
}
|
|
47
64
|
this.dataPromise = null
|
|
48
65
|
return this.context.data
|
|
@@ -73,11 +90,11 @@ export class DataContext {
|
|
|
73
90
|
}
|
|
74
91
|
}
|
|
75
92
|
|
|
76
|
-
async
|
|
93
|
+
async shouldVerifyServerVersions() {
|
|
77
94
|
let lastUpdated = globalConfig.isMA
|
|
78
95
|
? await cache.getItem(this.localStorageLastUpdatedKey)
|
|
79
96
|
: cache.getItem(this.localStorageLastUpdatedKey)
|
|
80
|
-
if (!lastUpdated) return
|
|
97
|
+
if (!lastUpdated) return true
|
|
81
98
|
const verifyServerTime = 10000 //10 s
|
|
82
99
|
return new Date().getTime() - lastUpdated > verifyServerTime
|
|
83
100
|
}
|
|
@@ -92,6 +109,10 @@ export class DataContext {
|
|
|
92
109
|
this.context = null
|
|
93
110
|
}
|
|
94
111
|
|
|
112
|
+
setLastUpdatedTime() {
|
|
113
|
+
cache.setItem(this.localStorageLastUpdatedKey, new Date().getTime().toString())
|
|
114
|
+
}
|
|
115
|
+
|
|
95
116
|
async update(localUpdateFunction, serverUpdateFunction) {
|
|
96
117
|
await this.ensureLocalContextLoaded()
|
|
97
118
|
if (this.context) {
|
|
@@ -99,7 +120,7 @@ export class DataContext {
|
|
|
99
120
|
if (this.context) this.context.version++
|
|
100
121
|
let data = JSON.stringify(this.context)
|
|
101
122
|
cache.setItem(this.localStorageKey, data)
|
|
102
|
-
|
|
123
|
+
this.setLastUpdatedTime()
|
|
103
124
|
}
|
|
104
125
|
const updatePromise = serverUpdateFunction()
|
|
105
126
|
updatePromise.then((response) => {
|
package/src/services/sanity.js
CHANGED
|
@@ -66,30 +66,74 @@ export async function fetchSongById(documentId) {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
|
-
* fetches from Sanity all content marked for removal next quarter
|
|
70
|
-
*
|
|
71
|
-
* @string brand
|
|
72
|
-
* @
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
* fetches from Sanity all content marked for removal next quarter
|
|
70
|
+
*
|
|
71
|
+
* @string brand
|
|
72
|
+
* @number pageNumber
|
|
73
|
+
* @number contentPerPage
|
|
74
|
+
* @returns {Promise<Object|null>}
|
|
75
|
+
*/
|
|
76
|
+
export async function fetchLeaving(
|
|
77
|
+
brand,
|
|
78
|
+
{ pageNumber = 1, contentPerPage = 20 } = {}) {
|
|
75
79
|
const nextQuarter = getNextAndPreviousQuarterDates()['next'];
|
|
76
80
|
const filterString = `brand == '${brand}' && quarter_removed == '${nextQuarter}'`
|
|
77
|
-
const
|
|
78
|
-
|
|
81
|
+
const startEndOrder = getQueryFromPage(pageNumber, contentPerPage);
|
|
82
|
+
const sortOrder = {sortOrder: "published_on desc, id desc", start: startEndOrder['start'], end: startEndOrder['end']};
|
|
83
|
+
const query = await buildQuery(filterString, {pullFutureContent: false, availableContentStatuses: ["published"]}, getFieldsForContentType(), sortOrder);
|
|
84
|
+
return fetchSanity(query, true);
|
|
79
85
|
}
|
|
80
86
|
|
|
81
87
|
/**
|
|
82
|
-
* fetches from Sanity all content marked for
|
|
88
|
+
* fetches from Sanity all content marked for return next quarter
|
|
83
89
|
*
|
|
84
90
|
* @string brand
|
|
91
|
+
* @number pageNumber
|
|
92
|
+
* @number contentPerPage
|
|
85
93
|
* @returns {Promise<Object|null>}
|
|
86
94
|
*/
|
|
87
|
-
export async function
|
|
95
|
+
export async function fetchReturning(
|
|
96
|
+
brand,
|
|
97
|
+
{ pageNumber = 1, contentPerPage = 20 } = {}) {
|
|
88
98
|
const nextQuarter = getNextAndPreviousQuarterDates()['next'];
|
|
89
99
|
const filterString = `brand == '${brand}' && quarter_published == '${nextQuarter}'`;
|
|
90
|
-
const
|
|
100
|
+
const startEndOrder = getQueryFromPage(pageNumber, contentPerPage);
|
|
101
|
+
const sortOrder = {sortOrder: "published_on desc, id desc", start: startEndOrder['start'], end: startEndOrder['end']};
|
|
102
|
+
const query = await buildQuery(filterString, {pullFutureContent: true, availableContentStatuses: ["draft"]}, getFieldsForContentType(), sortOrder);
|
|
103
|
+
|
|
104
|
+
return fetchSanity(query, true);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* fetches from Sanity all songs coming soon (new) next quarter
|
|
109
|
+
*
|
|
110
|
+
* @string brand
|
|
111
|
+
* @number pageNumber
|
|
112
|
+
* @number contentPerPage
|
|
113
|
+
* @returns {Promise<Object|null>}
|
|
114
|
+
*/
|
|
115
|
+
export async function fetchComingSoon(
|
|
116
|
+
brand,
|
|
117
|
+
{ pageNumber = 1, contentPerPage = 20 } = {}) {
|
|
118
|
+
const filterString = `brand == '${brand}' && _type == 'song'`;
|
|
119
|
+
const startEndOrder = getQueryFromPage(pageNumber, contentPerPage);
|
|
120
|
+
const sortOrder = {sortOrder: "published_on desc, id desc", start: startEndOrder['start'], end: startEndOrder['end']};
|
|
121
|
+
const query = await buildQuery(filterString, {getFutureContentOnly: true}, getFieldsForContentType(), sortOrder);
|
|
122
|
+
return fetchSanity(query, true);
|
|
123
|
+
}
|
|
91
124
|
|
|
92
|
-
|
|
125
|
+
/**
|
|
126
|
+
*
|
|
127
|
+
* @number page
|
|
128
|
+
* @returns {number[]}
|
|
129
|
+
*/
|
|
130
|
+
function getQueryFromPage(pageNumber, contentPerPage) {
|
|
131
|
+
const start = contentPerPage*(pageNumber-1);
|
|
132
|
+
const end = contentPerPage*pageNumber;
|
|
133
|
+
let result = [];
|
|
134
|
+
result['start'] = start;
|
|
135
|
+
result['end'] = end;
|
|
136
|
+
return result;
|
|
93
137
|
}
|
|
94
138
|
|
|
95
139
|
/**
|
|
@@ -97,7 +141,7 @@ export async function fetchQuarterPublished(brand) {
|
|
|
97
141
|
*
|
|
98
142
|
* @returns {*[]}
|
|
99
143
|
*/
|
|
100
|
-
|
|
144
|
+
function getNextAndPreviousQuarterDates() {
|
|
101
145
|
const january = 1;
|
|
102
146
|
const april = 4;
|
|
103
147
|
const july = 7;
|
|
@@ -1913,7 +1957,7 @@ function checkSanityConfig(config) {
|
|
|
1913
1957
|
function buildRawQuery(
|
|
1914
1958
|
filter = '',
|
|
1915
1959
|
fields = '...',
|
|
1916
|
-
{ sortOrder = 'published_on desc', start = 0, end = 10, isSingle = false
|
|
1960
|
+
{ sortOrder = 'published_on desc', start = 0, end = 10, isSingle = false}
|
|
1917
1961
|
) {
|
|
1918
1962
|
const sortString = sortOrder ? `order(${sortOrder})` : ''
|
|
1919
1963
|
const countString = isSingle ? '[0...1]' : `[${start}...${end}]`
|
|
@@ -1927,10 +1971,10 @@ async function buildQuery(
|
|
|
1927
1971
|
baseFilter = '',
|
|
1928
1972
|
filterParams = { pullFutureContent: false },
|
|
1929
1973
|
fields = '...',
|
|
1930
|
-
{ sortOrder = 'published_on desc', start = 0, end = 10, isSingle = false
|
|
1974
|
+
{ sortOrder = 'published_on desc', start = 0, end = 10, isSingle = false}
|
|
1931
1975
|
) {
|
|
1932
1976
|
const filter = await new FilterBuilder(baseFilter, filterParams).buildFilter()
|
|
1933
|
-
return buildRawQuery(filter, fields, { sortOrder, start, end, isSingle
|
|
1977
|
+
return buildRawQuery(filter, fields, { sortOrder, start, end, isSingle})
|
|
1934
1978
|
}
|
|
1935
1979
|
|
|
1936
1980
|
function buildEntityAndTotalQuery(
|