diff --git a/package.json b/package.json index 9465b75ee..b2386e1b6 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "moment-duration-format": "^2.3.2", "moment-timezone": "^0.5.33", "node-sass": "^7.0.1", - "openstack-uicore-foundation": "4.2.21", + "openstack-uicore-foundation": "4.2.22", "p-limit": "^6.1.0", "path-browserify": "^1.0.1", "postcss-loader": "^6.2.1", @@ -130,7 +130,7 @@ "style-loader": "^3.3.1", "superagent": "^6.1.0", "sweetalert2": "^8.15.2", - "urijs": "^1.19.1", + "urijs": "1.19.11", "url-loader": "^4.1.1", "validator": "^9.4.1", "video.js": "^7.8.2", diff --git a/src/actions/attendee-actions.js b/src/actions/attendee-actions.js index f78b6e8e9..5383c9a67 100644 --- a/src/actions/attendee-actions.js +++ b/src/actions/attendee-actions.js @@ -50,6 +50,8 @@ import { TEN } from "../utils/constants"; +URI.escapeQuerySpace = false; + export const REQUEST_ATTENDEES = "REQUEST_ATTENDEES"; export const RECEIVE_ATTENDEES = "RECEIVE_ATTENDEES"; export const RECEIVE_ATTENDEE = "RECEIVE_ATTENDEE"; diff --git a/src/actions/badge-actions.js b/src/actions/badge-actions.js index c2f01bd98..5715785c9 100644 --- a/src/actions/badge-actions.js +++ b/src/actions/badge-actions.js @@ -28,6 +28,7 @@ import { fetchErrorHandler, getCSV } from "openstack-uicore-foundation/lib/utils/actions"; +import URI from "urijs"; import pLimit from "p-limit"; import history from "../history"; import { saveMarketingSetting } from "./marketing-actions"; @@ -41,6 +42,8 @@ import { TEN } from "../utils/constants"; +URI.escapeQuerySpace = false; + export const BADGE_DELETED = "BADGE_DELETED"; export const FEATURE_BADGE_REMOVED = "FEATURE_BADGE_REMOVED"; export const FEATURE_BADGE_ADDED = "FEATURE_BADGE_ADDED"; @@ -889,12 +892,15 @@ const normalizeBadgeType = (entity) => { export const queryBadgeFeatures = _.debounce( async (summitId, input, callback) => { const accessToken = await getAccessTokenSafely(); - + const endpoint = URI( + `${window.API_BASE_URL}/api/v1/summits/${summitId}/badge-feature-types` + ); input = escapeFilterValue(input); - - fetch( - `${window.API_BASE_URL}/api/v1/summits/${summitId}/badge-feature-types?filter=name=@${input}&access_token=${accessToken}` - ) + endpoint.addQuery("access_token", accessToken); + if (input) { + endpoint.addQuery("filter", `name=@${input}`); + } + fetch(endpoint) .then(fetchResponseHandler) .then((json) => { const options = [...json.data]; diff --git a/src/actions/company-actions.js b/src/actions/company-actions.js index 499411c34..645abf5f8 100644 --- a/src/actions/company-actions.js +++ b/src/actions/company-actions.js @@ -27,6 +27,7 @@ import { fetchResponseHandler, fetchErrorHandler } from "openstack-uicore-foundation/lib/utils/actions"; +import URI from "urijs"; import history from "../history"; import { getAccessTokenSafely } from "../utils/methods"; import { @@ -36,6 +37,8 @@ import { DEFAULT_PER_PAGE } from "../utils/constants"; +URI.escapeQuerySpace = false; + export const REQUEST_COMPANIES = "REQUEST_COMPANIES"; export const RECEIVE_COMPANIES = "RECEIVE_COMPANIES"; export const RECEIVE_COMPANY = "RECEIVE_COMPANY"; @@ -268,16 +271,18 @@ const normalizeEntity = (entity) => { export const queryCompanies = _.debounce(async (input, callback) => { const accessToken = await getAccessTokenSafely(); - + const endpoint = URI(`${window.API_BASE_URL}/api/v1/companies`); input = escapeFilterValue(input); - - fetch( - `${window.API_BASE_URL}/api/v1/companies?filter=name=@${input}&access_token=${accessToken}&fields=id,name&relations=none` - ) + endpoint.addQuery("access_token", accessToken); + endpoint.addQuery("fields", "id,name"); + endpoint.addQuery("relations", "none"); + if (input) { + endpoint.addQuery("filter", `name=@${input}`); + } + fetch(endpoint) .then(fetchResponseHandler) .then((json) => { const options = [...json.data]; - callback(options); }) .catch(fetchErrorHandler); diff --git a/src/actions/email-actions.js b/src/actions/email-actions.js index 99a11f928..3aede418d 100644 --- a/src/actions/email-actions.js +++ b/src/actions/email-actions.js @@ -39,6 +39,8 @@ import { HUNDRED_PER_PAGE } from "../utils/constants"; +URI.escapeQuerySpace = false; + export const REQUEST_TEMPLATES = "REQUEST_TEMPLATES"; export const RECEIVE_TEMPLATES = "RECEIVE_TEMPLATES"; export const RECEIVE_TEMPLATE = "RECEIVE_TEMPLATE"; @@ -334,7 +336,8 @@ export const getSentEmails = }); }; -export const updateTemplateJsonData = (data) => async (dispatch) => dispatch(createAction(UPDATE_JSON_DATA)(data)); +export const updateTemplateJsonData = (data) => async (dispatch) => + dispatch(createAction(UPDATE_JSON_DATA)(data)); /** ********************************************************************************************************* */ /* CLIENTS */ @@ -391,7 +394,8 @@ export const getMarketingEmailSettings = }; export const saveMarketingEmailSettings = - (emailMarketingSettings) => async (dispatch) => Promise.all( + (emailMarketingSettings) => async (dispatch) => + Promise.all( Object.keys(emailMarketingSettings).map((m) => { let value = emailMarketingSettings[m].value ?? ""; const file = emailMarketingSettings[m].file ?? null; @@ -421,15 +425,15 @@ export const customErrorHandler = (err, res) => (dispatch) => { case ERROR_CODE_412: if (Array.isArray(err.response.body)) { err.response.body.forEach((er) => { - msg += `${er }
`; + msg += `${er}
`; }); } else { for (const [key, value] of Object.entries(err.response.body)) { if (isNaN(key)) { - msg += `${key }: `; + msg += `${key}: `; } - msg += `${value }
`; + msg += `${value}
`; } } diff --git a/src/actions/event-actions.js b/src/actions/event-actions.js index 382d90b78..d2f845a70 100644 --- a/src/actions/event-actions.js +++ b/src/actions/event-actions.js @@ -33,6 +33,7 @@ import { fetchErrorHandler } from "openstack-uicore-foundation/lib/utils/actions"; import { epochToMomentTimeZone } from "openstack-uicore-foundation/lib/utils/methods"; +import URI from "urijs"; import history from "../history"; import { checkOrFilter, @@ -49,11 +50,14 @@ import { DEFAULT_ORDER_DIR, DEFAULT_PER_PAGE, EXPORT_PAGE_SIZE_200, + FIVE_PER_PAGE, HOUR_AND_HALF, SECONDS_TO_MINUTES } from "../utils/constants"; import { getIdValue } from "../utils/summitUtils"; +URI.escapeQuerySpace = false; + export const REQUEST_EVENTS = "REQUEST_EVENTS"; export const RECEIVE_EVENTS = "RECEIVE_EVENTS"; export const RECEIVE_EVENT = "RECEIVE_EVENT"; @@ -1481,16 +1485,18 @@ export const getEventComments = export const queryEvents = _.debounce(async (summitId, input, callback) => { const accessToken = await getAccessTokenSafely(); - + const endpoint = URI( + `${window.API_BASE_URL}/api/v1/summits/${summitId}/events` + ); input = escapeFilterValue(input); - - fetch( - `${window.API_BASE_URL}/api/v1/summits/${summitId}/events?filter=title=@${input}&access_token=${accessToken}` - ) + endpoint.addQuery("access_token", accessToken); + if (input) { + endpoint.addQuery("filter", `title=@${input}`); + } + fetch(endpoint) .then(fetchResponseHandler) .then((json) => { const options = [...json.data]; - callback(options); }) .catch(fetchErrorHandler); @@ -1499,20 +1505,19 @@ export const queryEvents = _.debounce(async (summitId, input, callback) => { export const queryEventsWithPrivateRSVP = _.debounce( async (summitId, input, callback) => { const accessToken = await getAccessTokenSafely(); - + const endpoint = URI( + `${window.API_BASE_URL}/api/v1/summits/${summitId}/events` + ); input = escapeFilterValue(input); - - fetch( - `${window.API_BASE_URL}/api/v1/summits/${summitId}/events${ - input - ? `?filter[]=title=@${input}&filter[]=rsvp_type==Private` - : "?filter[]=rsvp_type==Private" - }&access_token=${accessToken}` - ) + endpoint.addQuery("access_token", accessToken); + endpoint.addQuery("filter[]", "rsvp_type==Private"); + if (input) { + endpoint.addQuery("filter[]", `title=@${input}`); + } + fetch(endpoint) .then(fetchResponseHandler) .then((json) => { const options = [...json.data]; - callback(options); }) .catch(fetchErrorHandler); @@ -1521,11 +1526,15 @@ export const queryEventsWithPrivateRSVP = _.debounce( ); export const querySpeakerCompany = _.debounce(async (input, callback) => { + const endpoint = URI( + `${window.API_BASE_URL}/api/public/v1/speakers/all/companies` + ); input = escapeFilterValue(input); - - fetch( - `${window.API_BASE_URL}/api/public/v1/speakers/all/companies?filter[]=company@@${input}&order=company` - ) + endpoint.addQuery("order", "company"); + if (input) { + endpoint.addQuery("filter[]", `company@@${input}`); + } + fetch(endpoint) .then(fetchResponseHandler) .then((json) => { const options = [...json.data].map(({ company }) => ({ @@ -1538,11 +1547,15 @@ export const querySpeakerCompany = _.debounce(async (input, callback) => { }, DEBOUNCE_WAIT); export const querySubmitterCompany = _.debounce(async (input, callback) => { + const endpoint = URI( + `${window.API_BASE_URL}/api/public/v1/members/all/companies` + ); input = escapeFilterValue(input); - - fetch( - `${window.API_BASE_URL}/api/public/v1/members/all/companies?filter[]=company@@${input}&order=company` - ) + endpoint.addQuery("order", "company"); + if (input) { + endpoint.addQuery("filter[]", `company@@${input}`); + } + fetch(endpoint) .then(fetchResponseHandler) .then((json) => { const options = [...json.data].map(({ company }) => ({ @@ -1559,10 +1572,35 @@ export const queryAllCompanies = _.debounce(async (input, callback) => { const accessToken = await getAccessTokenSafely(); + const speakerEndpoint = URI( + `${window.API_BASE_URL}/api/public/v1/speakers/all/companies` + ); + speakerEndpoint.addQuery("order", "company"); + if (input) { + speakerEndpoint.addQuery("filter[]", `company@@${input}`); + } + + const submitterEndpoint = URI( + `${window.API_BASE_URL}/api/public/v1/members/all/companies` + ); + submitterEndpoint.addQuery("order", "company"); + if (input) { + submitterEndpoint.addQuery("filter[]", `company@@${input}`); + } + + const companyEndpoint = URI(`${window.API_BASE_URL}/api/v1/companies`); + companyEndpoint.addQuery("access_token", accessToken); + companyEndpoint.addQuery("order", "name"); + companyEndpoint.addQuery("page", 1); + companyEndpoint.addQuery("per_page", FIVE_PER_PAGE); + if (input) { + companyEndpoint.addQuery("filter[]", `name@@${input}`); + } + const urls = [ - `${window.API_BASE_URL}/api/public/v1/speakers/all/companies?filter[]=company@@${input}&order=company`, - `${window.API_BASE_URL}/api/public/v1/members/all/companies?filter[]=company@@${input}&order=company`, - `${window.API_BASE_URL}/api/v1/companies?filter[]=name@@${input}&order=name&page=1&per_page=5&access_token=${accessToken}` + speakerEndpoint.toString(), + speakerEndpoint.toString(), + submitterEndpoint.toString() ]; try { diff --git a/src/actions/filter-criteria-actions.js b/src/actions/filter-criteria-actions.js index b4119223b..34212910e 100644 --- a/src/actions/filter-criteria-actions.js +++ b/src/actions/filter-criteria-actions.js @@ -34,6 +34,8 @@ import { FIFTEEN_PER_PAGE } from "../utils/constants"; +URI.escapeQuerySpace = false; + export const FILTER_CRITERIA_ADDED = "FILTER_CRITERIA_ADDED"; export const FILTER_CRITERIA_DELETED = "FILTER_CRITERIA_DELETED"; diff --git a/src/actions/media-upload-actions.js b/src/actions/media-upload-actions.js index 055292280..dbeef0f2e 100644 --- a/src/actions/media-upload-actions.js +++ b/src/actions/media-upload-actions.js @@ -31,6 +31,8 @@ import history from "../history"; import { getAccessTokenSafely } from "../utils/methods"; import { DEBOUNCE_WAIT, DEFAULT_PER_PAGE } from "../utils/constants"; +URI.escapeQuerySpace = false; + export const REQUEST_MEDIA_UPLOADS = "REQUEST_MEDIA_UPLOADS"; export const RECEIVE_MEDIA_UPLOADS = "RECEIVE_MEDIA_UPLOADS"; export const RECEIVE_MEDIA_UPLOAD = "RECEIVE_MEDIA_UPLOAD"; diff --git a/src/actions/selection-plan-actions.js b/src/actions/selection-plan-actions.js index 92237fdba..3c24ec0fb 100644 --- a/src/actions/selection-plan-actions.js +++ b/src/actions/selection-plan-actions.js @@ -26,6 +26,7 @@ import { authErrorHandler, postFile } from "openstack-uicore-foundation/lib/utils/actions"; +import URI from "urijs"; import history from "../history"; import { getAccessTokenSafely, @@ -34,7 +35,9 @@ import { fetchErrorHandler } from "../utils/methods"; import { saveMarketingSetting } from "./marketing-actions"; -import { DEFAULT_PER_PAGE } from "../utils/constants"; +import { DEBOUNCE_WAIT, DEFAULT_PER_PAGE } from "../utils/constants"; + +URI.escapeQuerySpace = false; export const REQUEST_SELECTION_PLANS = "REQUEST_SELECTION_PLANS"; export const RECEIVE_SELECTION_PLANS = "RECEIVE_SELECTION_PLANS"; @@ -62,8 +65,6 @@ export const SELECTION_PLAN_PROGRESS_FLAG_REMOVED = export const SELECTION_PLAN_PROGRESS_FLAG_ORDER_UPDATED = "SELECTION_PLAN_PROGRESS_FLAG_ORDER_UPDATED"; -const callDelay = 500; // milliseconds - export const getSelectionPlans = (term = "", page = 1, order = "id", orderDir = 1) => async (dispatch, getState) => { @@ -698,21 +699,23 @@ export const deleteRatingType = export const querySelectionPlanExtraQuestions = _.debounce( async (summitId, input, callback) => { const accessToken = await getAccessTokenSafely(); + const endpoint = URI( + `${window.API_BASE_URL}/api/v1/summits/${summitId}/selection-plan-extra-questions` + ); input = escapeFilterValue(input); - const filters = encodeURIComponent(`name=@${input}`); - - fetch( - `${window.API_BASE_URL}/api/v1/summits/${summitId}/selection-plan-extra-questions?filter=${filters}&&access_token=${accessToken}` - ) + endpoint.addQuery("access_token", accessToken); + if (input) { + endpoint.addQuery("filter", `name=@${input}`); + } + fetch(endpoint) .then(fetchResponseHandler) .then((json) => { const options = [...json.data]; - callback(options); }) .catch(fetchErrorHandler); }, - callDelay + DEBOUNCE_WAIT ); export const assignExtraQuestion2SelectionPlan = diff --git a/src/actions/sponsor-actions.js b/src/actions/sponsor-actions.js index c48e8a77f..64db0917a 100644 --- a/src/actions/sponsor-actions.js +++ b/src/actions/sponsor-actions.js @@ -30,6 +30,7 @@ import { postFile } from "openstack-uicore-foundation/lib/utils/actions"; import _ from "lodash"; +import URI from "urijs"; import { getAccessTokenSafely } from "../utils/methods"; import { normalizeLeadReportSettings } from "../models/lead-report-settings"; import history from "../history"; @@ -43,6 +44,8 @@ import { } from "../utils/constants"; import { snackbarErrorHandler, snackbarSuccessHandler } from "./base-actions"; +URI.escapeQuerySpace = false; + export const REQUEST_SPONSORS = "REQUEST_SPONSORS"; export const RECEIVE_SPONSORS = "RECEIVE_SPONSORS"; export const RECEIVE_SPONSOR = "RECEIVE_SPONSOR"; @@ -175,19 +178,24 @@ export const SPONSOR_LEAD_REPORT_SETTINGS_UPDATED = export const querySponsors = _.debounce(async (input, summitId, callback) => { const accessToken = await getAccessTokenSafely(); - + const endpoint = URI( + `${window.API_BASE_URL}/api/v2/summits/${summitId}/sponsors` + ); const escapedInput = escapeFilterValue(input); - - fetch( - `${window.API_BASE_URL}/api/v2/summits/${summitId}/sponsors?filter=company_name=@${escapedInput}&access_token=${accessToken}&fields=id,company.name,company.id&relations=company&expand=company` - ) + endpoint.addQuery("access_token", accessToken); + endpoint.addQuery("fields", "id,company.name,company.id"); + endpoint.addQuery("relations", "company"); + endpoint.addQuery("expand", "company"); + if (escapedInput) { + endpoint.addQuery("filter", `company_name=@${escapedInput}`); + } + fetch(endpoint) .then(fetchResponseHandler) .then((json) => { const options = [...json.data].map((sp) => ({ id: sp.id, name: sp.company.name })); - callback(options); }) .catch(fetchErrorHandler); @@ -2251,16 +2259,19 @@ export const deleteSponsorSocialNetwork = export const querySummitSponsorships = _.debounce( async (summitId, input, callback) => { const accessToken = await getAccessTokenSafely(); - + const endpoint = URI( + `${window.API_BASE_URL}/api/v1/summits/${summitId}/sponsorships-types` + ); input = escapeFilterValue(input); - - fetch( - `${window.API_BASE_URL}/api/v1/summits/${summitId}/sponsorships-types?filter=name=@${input}&access_token=${accessToken}&expand=type` - ) + endpoint.addQuery("access_token", accessToken); + endpoint.addQuery("expand", "type"); + if (input) { + endpoint.addQuery("filter", `name=@${input}`); + } + fetch(endpoint) .then(fetchResponseHandler) .then((json) => { const options = [...json.data]; - callback(options); }) .catch(fetchErrorHandler); @@ -2271,12 +2282,11 @@ export const querySummitSponsorships = _.debounce( export const querySummitAddons = _.debounce( async (input, summitId, callback) => { const accessToken = await getAccessTokenSafely(); - - input = escapeFilterValue(input); - - fetch( - `${window.API_BASE_URL}/api/v1/summits/${summitId}/add-ons/metadata?access_token=${accessToken}` - ) + const endpoint = URI( + `${window.API_BASE_URL}/api/v1/summits/${summitId}/add-ons/metadata` + ); + endpoint.addQuery("access_token", accessToken); + fetch(endpoint) .then(fetchResponseHandler) .then((data) => { callback(data); @@ -2293,12 +2303,22 @@ export const querySponsorAddons = async ( callback ) => { const accessToken = await getAccessTokenSafely(); - try { const promises = sponsorshipIds.map((sponsorshipId) => { - const url = `${window.API_BASE_URL}/api/v1/summits/${summitId}/sponsors/${sponsorId}/sponsorships/${sponsorshipId}/add-ons?access_token=${accessToken}&fields=id,name,sponsorship.type,sponsorship.type.id,sponsorship.type.type.name&expand=sponsorship,sponsorship.type,sponsorship.type.type&relations=sponsorship.none`; - - return fetch(url) + const endpoint = URI( + `${window.API_BASE_URL}/api/v1/summits/${summitId}/sponsors/${sponsorId}/sponsorships/${sponsorshipId}/add-ons` + ); + endpoint.addQuery("access_token", accessToken); + endpoint.addQuery( + "fields", + "id,name,sponsorship.type,sponsorship.type.id,sponsorship.type.type.name" + ); + endpoint.addQuery( + "expand", + "sponsorship,sponsorship.type,sponsorship.type.type" + ); + endpoint.addQuery("relations", "sponsorship.none"); + return fetch(endpoint) .then(fetchResponseHandler) .then((json) => json.data) .catch((error) => { @@ -2306,7 +2326,6 @@ export const querySponsorAddons = async ( return []; }); }); - const results = await Promise.all(promises); const allAddons = results.flat(); callback(allAddons); diff --git a/src/actions/sponsorship-actions.js b/src/actions/sponsorship-actions.js index 456ea92c4..e2d6d0721 100644 --- a/src/actions/sponsorship-actions.js +++ b/src/actions/sponsorship-actions.js @@ -27,9 +27,16 @@ import { fetchResponseHandler, fetchErrorHandler } from "openstack-uicore-foundation/lib/utils/actions"; +import URI from "urijs"; import history from "../history"; import { getAccessTokenSafely } from "../utils/methods"; -import { DEBOUNCE_WAIT, DEFAULT_PER_PAGE } from "../utils/constants"; +import { + DEBOUNCE_WAIT, + DEFAULT_PER_PAGE, + MAX_PER_PAGE +} from "../utils/constants"; + +URI.escapeQuerySpace = false; export const REQUEST_SPONSORSHIPS = "REQUEST_SPONSORSHIPS"; export const RECEIVE_SPONSORSHIPS = "RECEIVE_SPONSORSHIPS"; @@ -169,16 +176,16 @@ const normalizeSponsorship = (entity) => { export const querySponsorships = _.debounce(async (input, callback) => { const accessToken = await getAccessTokenSafely(); - + const endpoint = URI(`${window.API_BASE_URL}/api/v1/sponsorship-types`); input = escapeFilterValue(input); - - fetch( - `${window.API_BASE_URL}/api/v1/sponsorship-types?filter=name=@${input}&access_token=${accessToken}` - ) + endpoint.addQuery("access_token", accessToken); + if (input) { + endpoint.addQuery("filter", `name=@${input}`); + } + fetch(endpoint) .then(fetchResponseHandler) .then((json) => { const options = [...json.data]; - callback(options); }) .catch(fetchErrorHandler); @@ -187,20 +194,22 @@ export const querySponsorships = _.debounce(async (input, callback) => { export const querySponsorshipsBySummit = _.debounce( async (input, summitId, callback) => { const accessToken = await getAccessTokenSafely(); - + const endpoint = URI( + `${window.API_BASE_URL}/api/v1/summits/${summitId}/sponsorships-types` + ); input = escapeFilterValue(input); - - const url = `${ - window.API_BASE_URL - }/api/v1/summits/${summitId}/sponsorships-types?page=1&per_page=100&access_token=${accessToken}&expand=type&order=%2Bname${ - input ? `&filter=name=@${input}` : "" - }`; - - fetch(url) + endpoint.addQuery("access_token", accessToken); + endpoint.addQuery("page", 1); + endpoint.addQuery("per_page", MAX_PER_PAGE); + endpoint.addQuery("expand", "type"); + endpoint.addQuery("order", "+name"); + if (input) { + endpoint.addQuery("filter", `name=@${input}`); + } + fetch(endpoint) .then(fetchResponseHandler) .then((json) => { const options = [...json.data]; - callback(options); }) .catch(fetchErrorHandler); diff --git a/src/actions/track-chair-actions.js b/src/actions/track-chair-actions.js index 1b80fc506..db99e0c26 100644 --- a/src/actions/track-chair-actions.js +++ b/src/actions/track-chair-actions.js @@ -22,17 +22,21 @@ import { startLoading, stopLoading } from "openstack-uicore-foundation/lib/utils/actions"; +import URI from "urijs"; import { fetchErrorHandler, fetchResponseHandler, getAccessTokenSafely } from "../utils/methods"; import { + DEBOUNCE_WAIT, DEFAULT_ORDER_DIR, DEFAULT_PER_PAGE, DOUBLE_PER_PAGE } from "../utils/constants"; +URI.escapeQuerySpace = false; + export const REQUEST_TRACK_CHAIRS = "REQUEST_TRACK_CHAIRS"; export const RECEIVE_TRACK_CHAIRS = "RECEIVE_TRACK_CHAIRS"; export const TRACK_CHAIR_UPDATED = "TRACK_CHAIR_UPDATED"; @@ -55,8 +59,6 @@ export const REORDER_LIST = "REORDER_LIST"; export const REVERT_LISTS = "REVERT_LISTS"; export const TEAM_LIST_UPDATED = "TEAM_LIST_UPDATED"; -const callDelay = 500; // miliseconds - export const getTrackChairs = ( trackId = null, @@ -284,21 +286,23 @@ export const getProgressFlags = () => async (dispatch, getState) => { export const querySummitProgressFlags = _.debounce( async (summitId, input, callback) => { const accessToken = await getAccessTokenSafely(); + const endpoint = URI( + `${window.API_BASE_URL}/api/v1/summits/${summitId}/presentation-action-types` + ); input = escapeFilterValue(input); - const filters = encodeURIComponent(`label=@${input}`); - - fetch( - `${window.API_BASE_URL}/api/v1/summits/${summitId}/presentation-action-types?filter=${filters}&&access_token=${accessToken}` - ) + endpoint.addQuery("access_token", accessToken); + if (input) { + endpoint.addQuery("filter", `label=@${input}`); + } + fetch(endpoint) .then(fetchResponseHandler) .then((json) => { const options = [...json.data.map((d) => ({ ...d, name: d.label }))]; - callback(options); }) .catch(fetchErrorHandler); }, - callDelay + DEBOUNCE_WAIT ); export const addProgressFlag = (flagName) => async (dispatch, getState) => { diff --git a/yarn.lock b/yarn.lock index 67e9b2c50..12344284d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10342,10 +10342,10 @@ open@^8.0.9: is-docker "^2.1.1" is-wsl "^2.2.0" -openstack-uicore-foundation@4.2.21: - version "4.2.21" - resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-4.2.21.tgz#8bb505db7559890c902ea7b3d634d46f879287e1" - integrity sha512-KOFIJnh4swsIAn5L/DV7I70cPtdgZxl47Kp7oX05uET7mqdFUVp5M08ysgMWXQRaoKqjpZnOzERLFxPNfKpqvg== +openstack-uicore-foundation@4.2.22: + version "4.2.22" + resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-4.2.22.tgz#57feb259931bedf7b314d510c5a230f668074918" + integrity sha512-yfxxy2fXotyGEy2HuMpp05CJMmscfYDDYPUk+63rSiU7v5q6uopqL1NHkqBnxAlb6K4SrU88eP4B0aYaYmGHog== optionator@^0.9.1: version "0.9.4" @@ -13442,7 +13442,7 @@ uri-js@^4.2.2, uri-js@^4.4.1: dependencies: punycode "^2.1.0" -urijs@^1.19.1: +urijs@1.19.11: version "1.19.11" resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.11.tgz#204b0d6b605ae80bea54bea39280cdb7c9f923cc" integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==