Skip to content

Commit 5f2748c

Browse files
authored
Merge pull request #231 from topcoder-platform/issue-4575
community-app#4575 - Sub community filter not working
2 parents 8fe8d9e + e42f65a commit 5f2748c

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

src/services/members.js

+5-3
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

+13-5
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}`
@@ -217,6 +224,7 @@ export function getFilterFunction(state) {
217224
&& filterByGroupIds(challenge, state)
218225
&& filterByText(challenge, state)
219226
&& filterByTags(challenge, state)
227+
&& filterByEvents(challenge, state)
220228
&& filterByTypes(challenge, state)
221229
&& filterByUsers(challenge, state)
222230
&& filterByEndDate(challenge, state)
@@ -346,7 +354,7 @@ export function combine(...filters) {
346354
const res = {};
347355
filters.forEach((filter) => {
348356
combineEndDate(res, filter);
349-
combineArrayRules(res, filter, 'groups');
357+
combineArrayRules(res, filter, 'groupIds');
350358
/* TODO: The registrationOpen rule is just ignored for now. */
351359
combineStartDate(res, filter);
352360
combineArrayRules(res, filter, 'or', true);
@@ -383,7 +391,7 @@ export function combine(...filters) {
383391
*/
384392
export function mapToBackend(filter) {
385393
const res = {};
386-
if (filter.groups) res.groups = filter.groups;
394+
if (filter.groupIds) res.groups = filter.groupIds;
387395
return res;
388396
}
389397

0 commit comments

Comments
 (0)