Skip to content

Commit 25e166b

Browse files
committed
Merge pull request topcoder-platform#231 from topcoder-platform/issue-4575
community-app#4575 - Sub community filter not working
1 parent 69f0308 commit 25e166b

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

src/services/members.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
/* global XMLHttpRequest */
88
import _ from 'lodash';
99
import qs from 'qs';
10+
import { decodeToken } from 'tc-accounts';
1011
import logger from '../utils/logger';
1112
import { getApiResponsePayload } from '../utils/tc';
1213
import { getApi } from './api';
@@ -329,7 +330,8 @@ class MembersService {
329330
* @param {Array} challengeId the challenge id
330331
*/
331332
async getChallengeResources(challengeId) {
332-
const url = `/resources?challengeId=${challengeId}`;
333+
const user = decodeToken(this.private.tokenV3);
334+
const url = `/resources?challengeId=${challengeId}&memberId=${user.userId}`;
333335
let res = null;
334336

335337
try {
@@ -346,14 +348,14 @@ class MembersService {
346348
* @param {Array} memberId the member id
347349
*/
348350
async getUserResources(memberId) {
349-
const url = `/resources/${memberId}/challenges`;
351+
const url = `/challenges?status=Active&memberId=${memberId}`;
350352
const res = await this.private.apiV5.get(url);
351353
const challenges = await res.json();
352354
const roles = await this.getResourceRoles();
353355
const calls = [];
354356

355357
challenges.forEach(async (ch) => {
356-
calls.push(this.getChallengeResources(ch));
358+
calls.push(this.getChallengeResources(ch.id));
357359
});
358360

359361
return Promise.all(calls).then((resources) => {

src/utils/challenge/filter.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,9 @@ import { COMPETITION_TRACKS, REVIEW_OPPORTUNITY_TYPES } from '../tc';
7171
*/
7272

7373
function filterByGroupIds(challenge, state) {
74-
if (!state.groupIds) return true;
75-
return state.groupIds.some(id => challenge.groups[id]);
74+
if (_.isEmpty(state.groupIds)) return true;
75+
if (_.isEmpty(challenge.groups)) return false;
76+
return state.groupIds.some(id => challenge.groups.find(gId => gId === id));
7677
}
7778

7879
function filterByRegistrationOpen(challenge, state) {
@@ -144,12 +145,18 @@ function filterByStatus(challenge, state) {
144145
}
145146

146147
function filterByTags(challenge, state) {
147-
if (!state.tags) return true;
148+
if (_.isEmpty(state.tags)) return true;
148149
const { platforms, tags } = challenge;
149150
const str = `${platforms} ${tags}`.toLowerCase();
150151
return state.tags.some(tag => str.includes(tag.toLowerCase()));
151152
}
152153

154+
function filterByEvents(challenge, state) {
155+
if (_.isEmpty(state.events)) return true;
156+
if (_.isEmpty(challenge.events)) return false;
157+
return state.events.some(key => challenge.events.find(e => e.key === key));
158+
}
159+
153160
function filterByText(challenge, state) {
154161
if (!state.text) return true;
155162
const str = `${challenge.name} ${challenge.tags} ${challenge.platforms} ${challenge.tags}`
@@ -214,6 +221,7 @@ export function getFilterFunction(state) {
214221
&& filterByGroupIds(challenge, state)
215222
&& filterByText(challenge, state)
216223
&& filterByTags(challenge, state)
224+
&& filterByEvents(challenge, state)
217225
&& filterByTypes(challenge, state)
218226
&& filterByUsers(challenge, state)
219227
&& filterByEndDate(challenge, state)
@@ -343,7 +351,7 @@ export function combine(...filters) {
343351
const res = {};
344352
filters.forEach((filter) => {
345353
combineEndDate(res, filter);
346-
combineArrayRules(res, filter, 'groups');
354+
combineArrayRules(res, filter, 'groupIds');
347355
/* TODO: The registrationOpen rule is just ignored for now. */
348356
combineStartDate(res, filter);
349357
combineArrayRules(res, filter, 'or', true);
@@ -380,7 +388,7 @@ export function combine(...filters) {
380388
*/
381389
export function mapToBackend(filter) {
382390
const res = {};
383-
if (filter.groups) res.groups = filter.groups;
391+
if (filter.groupIds) res.groups = filter.groupIds;
384392
return res;
385393
}
386394

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy