From d7e336ea391ebf3c950cf09f999a48a00db7402a Mon Sep 17 00:00:00 2001 From: LieutenantRoger Date: Mon, 24 Aug 2020 22:13:15 +0800 Subject: [PATCH 01/31] Refactor challenge list --- src/services/challenges.js | 46 ++++++++++++++++++++++++++++------- src/utils/challenge/filter.js | 46 ++++++++++++++++++++++++----------- src/utils/tc.js | 6 ++--- 3 files changed, 72 insertions(+), 26 deletions(-) diff --git a/src/services/challenges.js b/src/services/challenges.js index f24bdf5e..430c091c 100644 --- a/src/services/challenges.js +++ b/src/services/challenges.js @@ -15,6 +15,36 @@ import { getApi } from './api'; import { getService as getMembersService } from './members'; import { getService as getSubmissionsService } from './submissions'; +export function getFilterUrl(backendFilter, frontFilter) { + const ff = _.clone(frontFilter); + const { tags, tracks, types } = ff; + delete ff.tags; + delete ff.tracks; + delete ff.types; + delete ff.communityId; + + console.log(ff); + + let urlFilter = qs.stringify(_.reduce(ff, (result, value, key) => { + // eslint-disable-next-line no-param-reassign + if (value) result[key] = value; + return result; + }, {})); + console.log(urlFilter); + + const ftags = _.map(tags, val => `tags[]=${val}`).join('&'); + const ftracks = _.map(_.reduce(tracks, (result, value, key) => { + // eslint-disable-next-line no-unused-expressions + tracks[key] && result.push(key); + return result; + }, []), val => `tracks[]=${val}`).join('&'); + const ftypes = _.map(types, val => `types[]=${val}`).join('&'); + if (ftags.length > 0) urlFilter += `&${ftags}`; + if (ftracks.length > 0) urlFilter += `&${ftracks}`; + if (ftypes.length > 0) urlFilter += `&${ftypes}`; + return urlFilter; +} + export const ORDER_BY = { SUBMISSION_END_DATE: 'submissionEndDate', }; @@ -133,14 +163,12 @@ class ChallengesService { */ const getChallenges = async ( endpoint, - filters = {}, - params = {}, + filter, ) => { - const query = { - ...filters, - ...params, - }; - const url = `${endpoint}?${qs.stringify(query)}`; + console.log(filter); + const query = getFilterUrl(filter.backendFilter, filter.frontFilter); + const url = `${endpoint}?${query}`; + console.log(url); const res = await this.private.apiV5.get(url).then(checkErrorV5); return { challenges: res.result || [], @@ -462,8 +490,8 @@ class ChallengesService { * @param {Object} params Optional. * @return {Promise} Resolves to the api response. */ - async getChallenges(filters, params) { - return this.private.getChallenges('/challenges/', filters, params) + async getChallenges(filter) { + return this.private.getChallenges('/challenges/', filter) .then((res) => { res.challenges.forEach(item => normalizeChallenge(item)); return res; diff --git a/src/utils/challenge/filter.js b/src/utils/challenge/filter.js index 36e91e6f..b547c687 100644 --- a/src/utils/challenge/filter.js +++ b/src/utils/challenge/filter.js @@ -144,22 +144,23 @@ function filterByStatus(challenge, state) { } function filterByTags(challenge, state) { - if (!state.tags) return true; + if (!state.tags || state.tags.length === 0) return true; const { platforms, tags } = challenge; - const str = `${platforms} ${tags}`.toLowerCase(); + const str = `${platforms.join(' ')} ${tags.join(' ')}`.toLowerCase(); return state.tags.some(tag => str.includes(tag.toLowerCase())); } function filterByText(challenge, state) { - if (!state.text) return true; + if (!state.name) return true; const str = `${challenge.name} ${challenge.tags} ${challenge.platforms} ${challenge.tags}` .toLowerCase(); - return str.includes(state.text.toLowerCase()); + return str.includes(state.name.toLowerCase()); } function filterByTrack(challenge, state) { - if (!state.tracks) return true; - return _.keys(state.tracks).some(track => challenge.track === track); + // if (!state.tracks) return true; + // eslint-disable-next-line max-len + return state.tracks[challenge.track] === true; } function filterByTypes(challenge, state) { @@ -239,7 +240,13 @@ export function getFilterFunction(state) { */ export function getReviewOpportunitiesFilterFunction(state, validTypes) { return (opp) => { - const newType = _.find(validTypes, { name: opp.challenge.type }) || {}; + const trackAbbr = { + DATA_SCIENCE: 'DS', + DEVELOP: 'Dev', + DESIGN: 'Des', + QA: 'QA', + }; + // const newType = _.find(validTypes, { name: opp.challenge.type }) || {}; // Review Opportunity objects have a challenge field which // is largely compatible with many of the existing filter functions @@ -248,16 +255,27 @@ export function getReviewOpportunitiesFilterFunction(state, validTypes) { ...opp.challenge, // This allows filterByText to search for Review Types and Challenge Titles name: `${opp.challenge.title} ${REVIEW_OPPORTUNITY_TYPES[opp.type]}`, - registrationStartDate: opp.startDate, // startDate of Review, not Challenge - submissionEndDate: opp.startDate, // Currently uses startDate for both date comparisons - communities: new Set([ // Used to filter by Track, and communities at a future date - opp.challenge.track.toLowerCase(), - ]), - typeId: newType.id, + // registrationStartDate: opp.startDate, // startDate of Review, not Challenge + // submissionEndDate: opp.startDate, // Currently uses startDate for both date comparisons + // communities: new Set([ // Used to filter by Track, and communities at a future date + // opp.challenge.track === 'QA' ? 'Dev' : trackAbbr[opp.challenge.track], + // ]), + track: trackAbbr[opp.challenge.track], + // typeId: newType.id, tags: opp.challenge.technologies || [], platforms: opp.challenge.platforms || [], }; - + /** + console.log(challenge); + console.log(`=====`); + console.log(`11111`); + console.log(filterByTrack(challenge, state)); + console.log(filterByText(challenge, state)); + console.log(filterByTags(challenge, state)); + console.log(filterByEndDate(challenge, state)); + console.log(filterByStartDate(challenge, state)); + console.log(filterByReviewOpportunityType(opp, state)); + */ return ( filterByTrack(challenge, state) && filterByText(challenge, state) diff --git a/src/utils/tc.js b/src/utils/tc.js index 5388d4bb..01842493 100644 --- a/src/utils/tc.js +++ b/src/utils/tc.js @@ -11,9 +11,9 @@ * uses upper-case literals to encode the tracks. At some point, we should * update it in this code as well! */ export const COMPETITION_TRACKS = { - DATA_SCIENCE: 'Data Science', - DESIGN: 'Design', - DEVELOP: 'Development', + DS: 'Data Science', + DES: 'Design', + DEV: 'Development', QA: 'Quality Assurance', }; From 43800997dcad2b14ba6e22f78447cdec4d11d609 Mon Sep 17 00:00:00 2001 From: LieutenantRoger Date: Sun, 30 Aug 2020 23:52:51 +0800 Subject: [PATCH 02/31] Fix test issues in lib --- __tests__/__snapshots__/index.js.snap | 7 ++++--- src/services/challenges.js | 8 ++++---- src/utils/challenge/filter.js | 4 ++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/__tests__/__snapshots__/index.js.snap b/__tests__/__snapshots__/index.js.snap index 53d2317a..bc9914b9 100644 --- a/__tests__/__snapshots__/index.js.snap +++ b/__tests__/__snapshots__/index.js.snap @@ -303,6 +303,7 @@ Object { "SUBMISSION_END_DATE": "submissionEndDate", }, "default": undefined, + "getFilterUrl": [Function], "getService": [Function], "normalizeChallenge": [Function], }, @@ -372,9 +373,9 @@ Object { }, "tc": Object { "COMPETITION_TRACKS": Object { - "DATA_SCIENCE": "Data Science", - "DESIGN": "Design", - "DEVELOP": "Development", + "DES": "Design", + "DEV": "Development", + "DS": "Data Science", "QA": "Quality Assurance", }, "REVIEW_OPPORTUNITY_TYPES": Object { diff --git a/src/services/challenges.js b/src/services/challenges.js index 430c091c..17def6e2 100644 --- a/src/services/challenges.js +++ b/src/services/challenges.js @@ -23,14 +23,14 @@ export function getFilterUrl(backendFilter, frontFilter) { delete ff.types; delete ff.communityId; - console.log(ff); + // console.log(ff); let urlFilter = qs.stringify(_.reduce(ff, (result, value, key) => { // eslint-disable-next-line no-param-reassign if (value) result[key] = value; return result; }, {})); - console.log(urlFilter); + // console.log(urlFilter); const ftags = _.map(tags, val => `tags[]=${val}`).join('&'); const ftracks = _.map(_.reduce(tracks, (result, value, key) => { @@ -165,10 +165,10 @@ class ChallengesService { endpoint, filter, ) => { - console.log(filter); + // console.log(filter); const query = getFilterUrl(filter.backendFilter, filter.frontFilter); const url = `${endpoint}?${query}`; - console.log(url); + // console.log(url); const res = await this.private.apiV5.get(url).then(checkErrorV5); return { challenges: res.result || [], diff --git a/src/utils/challenge/filter.js b/src/utils/challenge/filter.js index b547c687..176d1d3e 100644 --- a/src/utils/challenge/filter.js +++ b/src/utils/challenge/filter.js @@ -238,7 +238,7 @@ export function getFilterFunction(state) { * @param {Object} state * @return {Function} */ -export function getReviewOpportunitiesFilterFunction(state, validTypes) { +export function getReviewOpportunitiesFilterFunction(state) { return (opp) => { const trackAbbr = { DATA_SCIENCE: 'DS', @@ -280,7 +280,7 @@ export function getReviewOpportunitiesFilterFunction(state, validTypes) { filterByTrack(challenge, state) && filterByText(challenge, state) && filterByTags(challenge, state) - // && filterByTypes(challenge, state) + && filterByTypes(challenge, state) && filterByEndDate(challenge, state) && filterByStartDate(challenge, state) && filterByReviewOpportunityType(opp, state) From 86571d7e5172ac95a832fb51f1e6320b846bff32 Mon Sep 17 00:00:00 2001 From: LieutenantRoger Date: Tue, 1 Sep 2020 00:21:30 +0800 Subject: [PATCH 03/31] restore the old filterByType operation --- src/utils/challenge/filter.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/utils/challenge/filter.js b/src/utils/challenge/filter.js index 176d1d3e..654e5ed5 100644 --- a/src/utils/challenge/filter.js +++ b/src/utils/challenge/filter.js @@ -164,7 +164,7 @@ function filterByTrack(challenge, state) { } function filterByTypes(challenge, state) { - if (!state.types) return true; + if (state.types.length === 0) return true; return state.types.includes(challenge.typeId); } @@ -173,10 +173,10 @@ function filterByUpcoming(challenge, state) { return moment().isBefore(challenge.registrationStartDate); } -function filterByUsers(challenge, state) { - if (!state.userChallenges) return true; - return state.userChallenges.find(ch => challenge.id === ch); -} +// function filterByUsers(challenge, state) { +// if (!state.userChallenges) return true; +// return state.userChallenges.find(ch => challenge.id === ch); +// } /** * Returns clone of the state with the specified competition track added. @@ -216,7 +216,7 @@ export function getFilterFunction(state) { && filterByText(challenge, state) && filterByTags(challenge, state) && filterByTypes(challenge, state) - && filterByUsers(challenge, state) + // && filterByUsers(challenge, state) && filterByEndDate(challenge, state) && filterByStartDate(challenge, state) && filterByStarted(challenge, state) @@ -238,7 +238,7 @@ export function getFilterFunction(state) { * @param {Object} state * @return {Function} */ -export function getReviewOpportunitiesFilterFunction(state) { +export function getReviewOpportunitiesFilterFunction(state, validTypes) { return (opp) => { const trackAbbr = { DATA_SCIENCE: 'DS', @@ -247,6 +247,7 @@ export function getReviewOpportunitiesFilterFunction(state) { QA: 'QA', }; // const newType = _.find(validTypes, { name: opp.challenge.type }) || {}; + const newType = _.find(validTypes, { name: opp.challenge.subTrack === 'FIRST_2_FINISH' ? 'First2Finish' : 'Challenge' }) || {}; // Review Opportunity objects have a challenge field which // is largely compatible with many of the existing filter functions @@ -261,7 +262,7 @@ export function getReviewOpportunitiesFilterFunction(state) { // opp.challenge.track === 'QA' ? 'Dev' : trackAbbr[opp.challenge.track], // ]), track: trackAbbr[opp.challenge.track], - // typeId: newType.id, + typeId: newType.abbreviation, tags: opp.challenge.technologies || [], platforms: opp.challenge.platforms || [], }; From f2793564f3ce4dfa289d908718aac302f89bce06 Mon Sep 17 00:00:00 2001 From: LieutenantRoger Date: Sun, 13 Sep 2020 00:25:57 +0800 Subject: [PATCH 04/31] change groups param --- src/services/challenges.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/services/challenges.js b/src/services/challenges.js index 17def6e2..86f31942 100644 --- a/src/services/challenges.js +++ b/src/services/challenges.js @@ -17,11 +17,13 @@ import { getService as getSubmissionsService } from './submissions'; export function getFilterUrl(backendFilter, frontFilter) { const ff = _.clone(frontFilter); - const { tags, tracks, types } = ff; + // eslint-disable-next-line object-curly-newline + const { tags, tracks, types, groups } = ff; delete ff.tags; delete ff.tracks; delete ff.types; delete ff.communityId; + delete ff.groups; // console.log(ff); @@ -39,9 +41,11 @@ export function getFilterUrl(backendFilter, frontFilter) { return result; }, []), val => `tracks[]=${val}`).join('&'); const ftypes = _.map(types, val => `types[]=${val}`).join('&'); + const fgroups = _.map(groups, val => `groups[]=${val}`).join('&'); if (ftags.length > 0) urlFilter += `&${ftags}`; if (ftracks.length > 0) urlFilter += `&${ftracks}`; if (ftypes.length > 0) urlFilter += `&${ftypes}`; + if (fgroups.length > 9) urlFilter += `&${fgroups}`; return urlFilter; } From d89ff66972d064a2354ada0d2e6232405f378824 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Mon, 21 Sep 2020 02:19:43 -0300 Subject: [PATCH 05/31] fix: for #4594 Issues: https://github.com/topcoder-platform/community-app/issues/4594 https://github.com/topcoder-platform/community-app/issues/4595 https://github.com/topcoder-platform/community-app/issues/4596 https://github.com/topcoder-platform/community-app/issues/4597 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6559a5cf..83c20aab 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.19.44", + "version": "1000.22.8", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From ef1be9f31a9d31a53b0be1d7eebecf15f99961b4 Mon Sep 17 00:00:00 2001 From: narekcat Date: Wed, 23 Sep 2020 13:59:29 +0400 Subject: [PATCH 06/31] fix: for issue #4784 --- src/services/terms.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/services/terms.js b/src/services/terms.js index 82184f1b..1a24e734 100644 --- a/src/services/terms.js +++ b/src/services/terms.js @@ -95,10 +95,21 @@ class TermsService { * @param {Number|String} termId id of the term * @return {Promise} promise of the request result */ - getTermDetails(termId) { - // looks like server cache responses, to prevent it we add nocache param with always new value - return this.private.api.get(`/terms/${termId}`) - .then(res => (res.ok ? res.json() : Promise.reject(res.json()))); + async getTermDetails(termId) { + let termDetails = {}; + let isLegacyTerm = false; + if (/^[\d]{5,8}$/.test(termId)) { + isLegacyTerm = true; + termDetails = await this.private.api.get(`/terms?legacyId=${termId}`) + .then(res => (res.ok ? res.json() : Promise.reject(res.json()))); + } else { + termDetails = await this.private.api.get(`/terms/${termId}`) + .then(res => (res.ok ? res.json() : Promise.reject(res.json()))); + } + return { + ...termDetails, + isLegacyTerm, + }; } /** From 3cb3059db78c0ea38396b1e90267011f0d0bbc02 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Wed, 23 Sep 2020 21:23:55 -0300 Subject: [PATCH 07/31] Terms: update result pass from legacyId call --- src/services/terms.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/services/terms.js b/src/services/terms.js index 1a24e734..affd8ad9 100644 --- a/src/services/terms.js +++ b/src/services/terms.js @@ -101,7 +101,8 @@ class TermsService { if (/^[\d]{5,8}$/.test(termId)) { isLegacyTerm = true; termDetails = await this.private.api.get(`/terms?legacyId=${termId}`) - .then(res => (res.ok ? res.json() : Promise.reject(res.json()))); + .then(res => (res.ok ? res.json() : Promise.reject(res.json()))) + .then(res => (res.result ? res.result[0] : Promise.reject(res.json()))); } else { termDetails = await this.private.api.get(`/terms/${termId}`) .then(res => (res.ok ? res.json() : Promise.reject(res.json()))); From 750c049b4e0252894acb1d4be4f64eb24f6942a7 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Wed, 23 Sep 2020 21:50:41 -0300 Subject: [PATCH 08/31] fix: for issue #4784 Issue: https://github.com/topcoder-platform/community-app/issues/4784 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3cf11723..1f19bda0 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.22.6", + "version": "1000.22.9", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From 9e5459ecc00f156da7ac0b19af27034342845220 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Thu, 24 Sep 2020 03:04:07 -0300 Subject: [PATCH 09/31] Version: Sync with develop --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1f19bda0..20f49c6f 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.22.9", + "version": "1.0.5", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From e1c7225f270507a7edaf4e3712f6aedd75a25c77 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Thu, 24 Sep 2020 03:07:08 -0300 Subject: [PATCH 10/31] Sync milestone-20200917 with develop: Test Release --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 20f49c6f..16989639 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1.0.5", + "version": "1000.22.10", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From d3c2f9efc382fe7ea77278ff88c3a7a0481d1235 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Thu, 24 Sep 2020 03:09:30 -0300 Subject: [PATCH 11/31] ci: Add dist tag --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0e161844..e8eac28e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -28,7 +28,7 @@ jobs: - attach_workspace: at: . - run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - - run: npm publish + - run: npm publish --tag test-release # dont change anything workflows: version: 2 From b1a1c1b07887d990448b797eb25c3608208248d4 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Thu, 24 Sep 2020 05:38:04 -0300 Subject: [PATCH 12/31] Fix: for issue #4784 Issue: https://github.com/topcoder-platform/community-app/issues/4784 Dependency: https://github.com/topcoder-platform/community-app/pull/4998 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 16989639..5b11eae1 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.22.10", + "version": "1000.22.11", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From ee0255d3641d394d994a58592ed98771da6b53c4 Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Thu, 24 Sep 2020 17:33:44 +0530 Subject: [PATCH 13/31] removed dist tag --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e8eac28e..0e161844 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -28,7 +28,7 @@ jobs: - attach_workspace: at: . - run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - - run: npm publish --tag test-release + - run: npm publish # dont change anything workflows: version: 2 From c9032ffe6f4f6d4c986df3ff88536c163b5a9aa6 Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Thu, 24 Sep 2020 17:36:08 +0530 Subject: [PATCH 14/31] upgrade npm package for milestone v1.2.3 https://github.com/topcoder-platform/community-app/milestone/70 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5b11eae1..cc678ced 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.22.11", + "version": "1.0.6", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From 6ab57cc1a7150a048acf6c43454a92108c45b9cb Mon Sep 17 00:00:00 2001 From: LieutenantRoger Date: Sat, 26 Sep 2020 19:21:32 +0800 Subject: [PATCH 15/31] fix challenge detail screen --- src/services/challenges.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/services/challenges.js b/src/services/challenges.js index 86f31942..80fd86c2 100644 --- a/src/services/challenges.js +++ b/src/services/challenges.js @@ -186,6 +186,22 @@ class ChallengesService { }, }; }; + + const getChallengeDetails = async ( + endpoint, + legacyInfo, + ) => { + let query = ''; + if (legacyInfo) { + query = `legacyId=${legacyInfo.legacyId}`; + } + const url = `${endpoint}?${query}`; + const res = await this.private.apiV5.get(url).then(checkErrorV5); + return { + challenges: res.result || [], + }; + }; + /** * Private function being re-used in all methods related to getting * challenges. It handles query-related arguments in the uniform way: @@ -221,6 +237,7 @@ class ChallengesService { apiV2: getApi('V2', tokenV2), apiV3: getApi('V3', tokenV3), getChallenges, + getChallengeDetails, getMemberChallenges, tokenV2, tokenV3, @@ -359,10 +376,10 @@ class ChallengesService { // condition based on ROUTE used for Review Opportunities, change if needed if (/^[\d]{5,8}$/.test(challengeId)) { isLegacyChallenge = true; - challenge = await this.private.getChallenges('/challenges/', { legacyId: challengeId }) + challenge = await this.private.getChallengeDetails('/challenges/', { legacyId: challengeId }) .then(res => res.challenges[0]); } else { - challenge = await this.private.getChallenges(`/challenges/${challengeId}`) + challenge = await this.private.getChallengeDetails(`/challenges/${challengeId}`) .then(res => res.challenges); } From a6fb1955e3710784e639f46d13b0466640553137 Mon Sep 17 00:00:00 2001 From: "Luiz R. Rodrigues" Date: Mon, 28 Sep 2020 16:52:37 -0300 Subject: [PATCH 16/31] utils/tc - Added CHALLENGE_STATUS --- __tests__/__snapshots__/index.js.snap | 6 ++++++ src/utils/tc.js | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/__tests__/__snapshots__/index.js.snap b/__tests__/__snapshots__/index.js.snap index d8bdd649..e518ab25 100644 --- a/__tests__/__snapshots__/index.js.snap +++ b/__tests__/__snapshots__/index.js.snap @@ -371,6 +371,12 @@ Object { "processMMSubmissions": [Function], }, "tc": Object { + "CHALLENGE_STATUS": Object { + "ACTIVE": "Active", + "CANCELLED": "Cancelled", + "COMPLETED": "Completed", + "DRAFT": "Draft", + }, "COMPETITION_TRACKS": Object { "DATA_SCIENCE": "Data Science", "DESIGN": "Design", diff --git a/src/utils/tc.js b/src/utils/tc.js index ca97ace3..4ea44255 100644 --- a/src/utils/tc.js +++ b/src/utils/tc.js @@ -31,6 +31,16 @@ export const OLD_SUBTRACKS = { TESTING_COMPETITION: 'TESTING_COMPETITION', }; +/* + * Challenge Status + */ +export const CHALLENGE_STATUS = { + ACTIVE: 'Active', + CANCELLED: 'Cancelled', + COMPLETED: 'Completed', + DRAFT: 'Draft', +}; + /** * Review Opportunity types */ From 148f3500b3c7d909879caa4fd9b6ebe28777a5e6 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Mon, 28 Sep 2020 17:50:55 -0300 Subject: [PATCH 17/31] ci: added dist tag Isuse: https://github.com/topcoder-platform/community-app/issues/4948 PRs: https://github.com/topcoder-platform/community-app/pull/5013 https://github.com/topcoder-platform/topcoder-react-lib/pull/262 --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0e161844..e8eac28e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -28,7 +28,7 @@ jobs: - attach_workspace: at: . - run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - - run: npm publish + - run: npm publish --tag test-release # dont change anything workflows: version: 2 From 29cfc284e288eafb020d643a6a3776d440ce0447 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Mon, 28 Sep 2020 17:51:53 -0300 Subject: [PATCH 18/31] fix: for issue #4948 Issue: https://github.com/topcoder-platform/community-app/issues/4948 PRs: https://github.com/topcoder-platform/community-app/pull/5013 https://github.com/topcoder-platform/topcoder-react-lib/pull/262 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cc678ced..69b8bcbe 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1.0.6", + "version": "1000.22.12", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From 3deb718a5b0258ebe1ceab8abafdce418e14181c Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Wed, 30 Sep 2020 21:30:53 -0300 Subject: [PATCH 19/31] fix: for issue #4965 Issue: https://github.com/topcoder-platform/community-app/issues/4965 PRs: https://github.com/topcoder-platform/community-app/pull/5008 https://github.com/topcoder-platform/topcoder-react-lib/pull/259 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 83c20aab..013d2c0e 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.22.8", + "version": "1000.24.0", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From 0e5d98f3da3f48de3580bbc7e4751c9fb9d56fd0 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Thu, 1 Oct 2020 02:56:34 -0300 Subject: [PATCH 20/31] Test Release 2020-10-01 Issue: https://github.com/topcoder-platform/community-app/issues/4948 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 69b8bcbe..9f943e3f 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.22.12", + "version": "1000.22.13", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From bfa1b4a91fe94b2a31e33a3d4d0bf131fea7b7ce Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Thu, 1 Oct 2020 18:27:25 +0530 Subject: [PATCH 21/31] ci: removed dist tag --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e8eac28e..0e161844 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -28,7 +28,7 @@ jobs: - attach_workspace: at: . - run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - - run: npm publish --tag test-release + - run: npm publish # dont change anything workflows: version: 2 From b06ca4fe2e5637d5cf41ca8c5e232f658a599667 Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Thu, 1 Oct 2020 18:31:57 +0530 Subject: [PATCH 22/31] release: upgrade npm package for release tag v1.2.4 https://github.com/topcoder-platform/community-app/milestone/74 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9f943e3f..fcee4bb2 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.22.13", + "version": "1.0.7", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From 5dc91875f60c6138041c4738c3c40b253351f489 Mon Sep 17 00:00:00 2001 From: narekcat Date: Sat, 3 Oct 2020 18:47:51 +0400 Subject: [PATCH 23/31] fix: for issue #5036 --- src/services/challenges.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/services/challenges.js b/src/services/challenges.js index 80fd86c2..0076a96a 100644 --- a/src/services/challenges.js +++ b/src/services/challenges.js @@ -169,20 +169,21 @@ class ChallengesService { endpoint, filter, ) => { - // console.log(filter); - const query = getFilterUrl(filter.backendFilter, filter.frontFilter); - const url = `${endpoint}?${query}`; - // console.log(url); - const res = await this.private.apiV5.get(url).then(checkErrorV5); + let res = {}; + if (_.some(filter.frontFilter.tracks, val => val)) { + const query = getFilterUrl(filter.backendFilter, filter.frontFilter); + const url = `${endpoint}?${query}`; + res = await this.private.apiV5.get(url).then(checkErrorV5); + } return { challenges: res.result || [], - totalCount: res.headers.get('x-total'), + totalCount: res.headers ? res.headers.get('x-total') : 0, meta: { - allChallengesCount: res.headers.get('x-total'), + allChallengesCount: res.headers ? res.headers.get('x-total') : 0, myChallengesCount: 0, ongoingChallengesCount: 0, openChallengesCount: 0, - totalCount: res.headers.get('x-total'), + totalCount: res.headers ? res.headers.get('x-total') : 0, }, }; }; From d7c16afc9244890c8a4914b85f3d051197f40e96 Mon Sep 17 00:00:00 2001 From: "Luiz R. Rodrigues" Date: Sun, 4 Oct 2020 23:21:52 -0300 Subject: [PATCH 24/31] Challengelist sync missing COMPETITION_TRACKS rename --- package.json | 2 +- src/reducers/challenge.js | 2 +- src/services/challenges.js | 4 ++-- src/services/reviewOpportunities.js | 8 ++++---- src/utils/challenge/filter.js | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index e53c61d8..89bf779d 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.24.1", + "version": "1000.24.2", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", diff --git a/src/reducers/challenge.js b/src/reducers/challenge.js index 7fb1dbd9..e706cb07 100644 --- a/src/reducers/challenge.js +++ b/src/reducers/challenge.js @@ -471,7 +471,7 @@ export function factory(options = {}) { const challengeDetails = _.get(res, 'payload', {}); const track = _.get(challengeDetails, 'track', ''); let checkpointsPromise = null; - if (track === COMPETITION_TRACKS.DESIGN) { + if (track === COMPETITION_TRACKS.DES) { const p = _.get(challengeDetails, 'phases', []) .filter(x => x.name === 'Checkpoint Review'); if (p.length && !p[0].isOpen) { diff --git a/src/services/challenges.js b/src/services/challenges.js index 61305d13..d70372c9 100644 --- a/src/services/challenges.js +++ b/src/services/challenges.js @@ -691,7 +691,7 @@ class ChallengesService { let contentType; let url; - if (track === COMPETITION_TRACKS.DESIGN) { + if (track === COMPETITION_TRACKS.DES) { ({ api } = this.private); contentType = 'application/json'; url = '/submissions/'; // The submission info is contained entirely in the JSON body @@ -709,7 +709,7 @@ class ChallengesService { }, onProgress).then((res) => { const jres = JSON.parse(res); // Return result for Develop submission - if (track === COMPETITION_TRACKS.DEVELOP) { + if (track === COMPETITION_TRACKS.DEV) { return jres; } // Design Submission requires an extra "Processing" POST diff --git a/src/services/reviewOpportunities.js b/src/services/reviewOpportunities.js index 9f3cdf31..6e255a95 100644 --- a/src/services/reviewOpportunities.js +++ b/src/services/reviewOpportunities.js @@ -17,10 +17,10 @@ export function normalizeChallenges(opportunities) { * until receive API V5 update. */ _.map(opportunities, (opportunity) => { const { challenge } = opportunity; - challenge.track = COMPETITION_TRACKS.DEVELOP; + challenge.track = COMPETITION_TRACKS.DEV; if (challenge.technologies) { - if (challenge.technologies.includes(COMPETITION_TRACKS.DATA_SCIENCE)) { - challenge.track = COMPETITION_TRACKS.DATA_SCIENCE; + if (challenge.technologies.includes(COMPETITION_TRACKS.DS)) { + challenge.track = COMPETITION_TRACKS.DS; } } else if (challenge.subTrack === OLD_SUBTRACKS.TEST_SUITES || challenge.subTrack === OLD_SUBTRACKS.BUG_HUNT @@ -28,7 +28,7 @@ export function normalizeChallenges(opportunities) { || challenge.subTrack === OLD_COMPETITION_TRACKS.TESTING_COMPETITION) { challenge.track = COMPETITION_TRACKS.QA; } else if (challenge.track === OLD_COMPETITION_TRACKS.DESIGN) { - challenge.track = COMPETITION_TRACKS.DESIGN; + challenge.track = COMPETITION_TRACKS.DES; } return _.defaults(opportunity, { challenge }); }); diff --git a/src/utils/challenge/filter.js b/src/utils/challenge/filter.js index 1b09b1d6..5812559f 100644 --- a/src/utils/challenge/filter.js +++ b/src/utils/challenge/filter.js @@ -90,7 +90,7 @@ function filterByRegistrationOpen(challenge, state) { if (!registrationPhase || !registrationPhase.isOpen) { return false; } - if (challenge.track === COMPETITION_TRACKS.DESIGN) { + if (challenge.track === COMPETITION_TRACKS.DES) { const checkpointPhase = challengePhases.find(item => item.name === 'Checkpoint Submission')[0]; return !checkpointPhase || !checkpointPhase.isOpen; } From 534fb7cc7b22bc54213092deb5e9bd56cab5f149 Mon Sep 17 00:00:00 2001 From: Cagdas U Date: Mon, 5 Oct 2020 18:50:54 +0300 Subject: [PATCH 25/31] fix: update track abbreviations --- src/utils/challenge/filter.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/utils/challenge/filter.js b/src/utils/challenge/filter.js index 5812559f..0728dc15 100644 --- a/src/utils/challenge/filter.js +++ b/src/utils/challenge/filter.js @@ -249,10 +249,10 @@ export function getFilterFunction(state) { export function getReviewOpportunitiesFilterFunction(state, validTypes) { return (opp) => { const trackAbbr = { - DATA_SCIENCE: 'DS', - DEVELOP: 'Dev', - DESIGN: 'Des', - QA: 'QA', + 'Data Science': 'DS', + Development: 'Dev', + Design: 'Des', + 'Quality Assurance': 'QA', }; // const newType = _.find(validTypes, { name: opp.challenge.type }) || {}; const newType = _.find(validTypes, { name: opp.challenge.subTrack === 'FIRST_2_FINISH' ? 'First2Finish' : 'Challenge' }) || {}; From 79acf3d6a2deebb1531b8812d779c3ab060cefb5 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Mon, 5 Oct 2020 19:07:21 -0300 Subject: [PATCH 26/31] fix: for issue #5045 #5045 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 89bf779d..f50b33db 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.24.2", + "version": "1000.24.3", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From 88f86f2558178285aeea77798ce3f00494f860fb Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Mon, 5 Oct 2020 19:11:07 -0300 Subject: [PATCH 27/31] ci: added dist tag --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0e161844..e8eac28e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -28,7 +28,7 @@ jobs: - attach_workspace: at: . - run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - - run: npm publish + - run: npm publish --tag test-release # dont change anything workflows: version: 2 From 732c9e004b4e05941d1e64c990c4dfdbfe032308 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Tue, 6 Oct 2020 22:27:36 -0300 Subject: [PATCH 28/31] fix: for issue #5036 Issue: https://github.com/topcoder-platform/community-app/issues/5036 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f50b33db..e14602c8 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.24.3", + "version": "1000.24.4", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From fb8099307b236d5e9908ce897e06b798be54244b Mon Sep 17 00:00:00 2001 From: "Luiz R. Rodrigues" Date: Thu, 8 Oct 2020 20:47:35 -0300 Subject: [PATCH 29/31] Implement TCO filter to Challenge Listing page --- src/services/challenges.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/services/challenges.js b/src/services/challenges.js index f035a394..e232274b 100644 --- a/src/services/challenges.js +++ b/src/services/challenges.js @@ -18,12 +18,13 @@ import { getService as getSubmissionsService } from './submissions'; export function getFilterUrl(backendFilter, frontFilter) { const ff = _.clone(frontFilter); // eslint-disable-next-line object-curly-newline - const { tags, tracks, types, groups } = ff; + const { tags, tracks, types, groups, events } = ff; delete ff.tags; delete ff.tracks; delete ff.types; delete ff.communityId; delete ff.groups; + delete ff.events; // console.log(ff); @@ -42,10 +43,12 @@ export function getFilterUrl(backendFilter, frontFilter) { }, []), val => `tracks[]=${val}`).join('&'); const ftypes = _.map(types, val => `types[]=${val}`).join('&'); const fgroups = _.map(groups, val => `groups[]=${val}`).join('&'); + const fevents = _.map(events, val => `events[]=${val}`).join('&'); if (ftags.length > 0) urlFilter += `&${ftags}`; if (ftracks.length > 0) urlFilter += `&${ftracks}`; if (ftypes.length > 0) urlFilter += `&${ftypes}`; if (fgroups.length > 9) urlFilter += `&${fgroups}`; + if (fevents.length > 0) urlFilter += `&${fevents}`; return urlFilter; } From de74fea015185030eb0a07b98b1113e689509ba0 Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Thu, 8 Oct 2020 22:18:51 -0300 Subject: [PATCH 30/31] fix: for issue #5056 Issue: https://github.com/topcoder-platform/community-app/issues/5056 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e14602c8..1bf653d3 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.24.4", + "version": "1000.24.5", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0", From 7c653ab0c1161cdbf0383e9cecc8a73ce9ab26ce Mon Sep 17 00:00:00 2001 From: Luiz Ricardo Rodrigues Date: Fri, 9 Oct 2020 02:12:01 -0300 Subject: [PATCH 31/31] Smoke Testing 2020-10-09 Issue: https://github.com/topcoder-platform/community-app/issues/5080 PRs: https://github.com/topcoder-platform/topcoder-react-lib/pull/271 https://github.com/topcoder-platform/community-app/pull/5079/ --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1bf653d3..a19edae2 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lint:js": "./node_modules/.bin/eslint --ext .js,.jsx .", "test": "npm run lint && npm run jest" }, - "version": "1000.24.5", + "version": "1000.24.6", "dependencies": { "auth0-js": "^6.8.4", "config": "^3.2.0",