3
3
* @desc Actions related to members data.
4
4
*/
5
5
6
+ import qs from 'qs' ;
6
7
import { createActions } from 'redux-actions' ;
7
8
import { getService } from '../services/members' ;
8
9
import { getService as getUserService } from '../services/user' ;
@@ -200,6 +201,144 @@ async function getStatsDistributionDone(handle, track, subTrack, uuid, tokenV3)
200
201
return { data, handle, uuid } ;
201
202
}
202
203
204
+ /**
205
+ * @static
206
+ * @desc Create an action that signals beginning of subtrack challenges loading.
207
+ * @param {String } handle Member handle.
208
+ * @param {String } uuid Operation UUID.
209
+ * @return {Action }
210
+ */
211
+ async function getSubtrackChallengesInit ( handle , uuid ) {
212
+ return { handle, uuid } ;
213
+ }
214
+
215
+ /**
216
+ * @static
217
+ * @desc Create an action that loads the member subtrack challenges.
218
+ * @param {String } uuid Operation UUID.
219
+ * @param {String } handle Member handle.
220
+ * @param {String } tokenV3 v3 auth token.
221
+ * @param {String } track Main track name.
222
+ * @param {String } subTrack Subtrack name.
223
+ * @param {Number } start page.
224
+ * @param {Number } page size.
225
+ * @param {Boolean } whether to refresh.
226
+ * @return {Action }
227
+ */
228
+ async function getSubtrackChallengesDone (
229
+ uuid , handle , tokenV3 , track , subTrack , pageNum , pageSize ,
230
+ refresh ,
231
+ ) {
232
+ const filter = {
233
+ status : 'completed' ,
234
+ hasUserSubmittedForReview : 'true' ,
235
+ track,
236
+ subTrack,
237
+ } ;
238
+
239
+ const params = { } ;
240
+ params . orderBy = 'submissionEndDate desc' ;
241
+ params . limit = pageSize ;
242
+ params . offset = pageNum * pageSize ;
243
+
244
+ const service = getChallengesService ( tokenV3 ) ;
245
+ return service . getUserChallenges ( handle , filter , params )
246
+ . then ( res => ( {
247
+ uuid,
248
+ challenges : res . challenges ,
249
+ refresh,
250
+ handle,
251
+ } ) ) ;
252
+ }
253
+
254
+ /**
255
+ * @static
256
+ * @desc Create an action that signals beginning of member SRM loading.
257
+ * @param {String } handle Member handle.
258
+ * @param {String } uuid Operation UUID.
259
+ * @return {Action }
260
+ */
261
+ async function getUserSRMInit ( handle , uuid ) {
262
+ return { handle, uuid } ;
263
+ }
264
+
265
+ /**
266
+ * @static
267
+ * @desc Create an action that loads the member SRM.
268
+ * @param {String } uuid Operation UUID.
269
+ * @param {String } handle Member handle.
270
+ * @param {String } tokenV3 v3 auth token.
271
+ * @param {Number } start page.
272
+ * @param {Number } page size.
273
+ * @param {Boolean } whether to refresh.
274
+ * @return {Action }
275
+ */
276
+ async function getUserSRMDone (
277
+ uuid , handle , tokenV3 , pageNum , pageSize ,
278
+ refresh ,
279
+ ) {
280
+ const filter = {
281
+ status : 'past' ,
282
+ isRatedForSRM : 'true' ,
283
+ } ;
284
+
285
+ const params = {
286
+ filter : qs . stringify ( filter , { encode : false } ) ,
287
+ limit : pageSize ,
288
+ offset : pageNum * pageSize ,
289
+ } ;
290
+
291
+ const service = getChallengesService ( tokenV3 ) ;
292
+ return service . getUserSrms ( handle , params ) . then ( res => ( {
293
+ uuid,
294
+ srms : res ,
295
+ refresh,
296
+ handle,
297
+ } ) ) ;
298
+ }
299
+
300
+ /**
301
+ * @static
302
+ * @desc Create an action that signals beginning of member marathon loading.
303
+ * @param {String } handle Member handle.
304
+ * @param {String } uuid Operation UUID.
305
+ * @return {Action }
306
+ */
307
+ async function getUserMarathonInit ( handle , uuid ) {
308
+ return { handle, uuid } ;
309
+ }
310
+
311
+ /**
312
+ * @static
313
+ * @desc Create an action that loads the member marathon.
314
+ * @param {String } uuid Operation UUID.
315
+ * @param {String } handle Member handle.
316
+ * @param {String } tokenV3 v3 auth token.
317
+ * @param {Number } start page.
318
+ * @param {Number } page size.
319
+ * @param {Boolean } whether to refresh.
320
+ * @return {Action }
321
+ */
322
+ async function getUserMarathonDone (
323
+ uuid , handle , tokenV3 , pageNum , pageSize ,
324
+ refresh ,
325
+ ) {
326
+ const filter = { status : 'PAST' , isRatedForMM : 'true' } ;
327
+ const params = { } ;
328
+ params . orderBy = 'endDate desc' ;
329
+ params . limit = pageSize ;
330
+ params . offset = pageNum * pageSize ;
331
+
332
+ const service = getChallengesService ( tokenV3 ) ;
333
+ return service . getUserMarathonMatches ( handle , filter , params )
334
+ . then ( res => ( {
335
+ uuid,
336
+ marathons : res ,
337
+ refresh,
338
+ handle,
339
+ } ) ) ;
340
+ }
341
+
203
342
export default createActions ( {
204
343
MEMBERS : {
205
344
DROP : drop ,
@@ -216,5 +355,11 @@ export default createActions({
216
355
GET_STATS_DISTRIBUTION_DONE : getStatsDistributionDone ,
217
356
GET_ACTIVE_CHALLENGES_INIT : getActiveChallengesInit ,
218
357
GET_ACTIVE_CHALLENGES_DONE : getActiveChallengesDone ,
358
+ GET_SUBTRACK_CHALLENGES_INIT : getSubtrackChallengesInit ,
359
+ GET_SUBTRACK_CHALLENGES_DONE : getSubtrackChallengesDone ,
360
+ GET_USER_SRM_INIT : getUserSRMInit ,
361
+ GET_USER_SRM_DONE : getUserSRMDone ,
362
+ GET_USER_MARATHON_INIT : getUserMarathonInit ,
363
+ GET_USER_MARATHON_DONE : getUserMarathonDone ,
219
364
} ,
220
365
} ) ;
0 commit comments