Skip to content

Commit 25e166b

Browse files
committed
Merge pull request #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

+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}`
@@ -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)