From fb8f18c21268b56373d1bab438df0931d2cfee7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Thu, 23 Apr 2026 18:29:25 -0300 Subject: [PATCH] fix: adjust query for attendee, return promise and catch error on promise MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/actions/attendee-actions.js | 32 +++++++++++++++++++ src/components/mui/mui-qr-badge-popup.js | 4 +-- .../tabs/sponsor-badge-scans/index.js | 3 +- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/src/actions/attendee-actions.js b/src/actions/attendee-actions.js index fc5f47ea4..f434ca647 100644 --- a/src/actions/attendee-actions.js +++ b/src/actions/attendee-actions.js @@ -835,3 +835,35 @@ export const queryAttendees = _.debounce(async (input, summitId, callback) => { }) .catch(fetchErrorHandler); }, DEBOUNCE_WAIT); + +export const queryAttendeesWithTickets = _.debounce( + async (input, summitId, callback) => { + const accessToken = await getAccessTokenSafely(); + + const endpoint = URI( + `${window.API_BASE_URL}/api/v1/summits/${summitId}/attendees` + ); + + input = escapeFilterValue(input); + endpoint.addQuery("access_token", accessToken); + endpoint.addQuery("order", "first_name,last_name"); + endpoint.addQuery("page", 1); + endpoint.addQuery("per_page", DEFAULT_PER_PAGE); + + if (input) { + endpoint.addQuery("filter[]", `full_name=@${input},email=@${input}`); + } + + endpoint.addQuery("filter[]", "has_tickets==true"); + endpoint.addQuery("filter[]", "has_member==true"); + + fetch(endpoint) + .then(fetchResponseHandler) + .then((json) => { + const options = [...json.data]; + callback(options); + }) + .catch(fetchErrorHandler); + }, + DEBOUNCE_WAIT +); diff --git a/src/components/mui/mui-qr-badge-popup.js b/src/components/mui/mui-qr-badge-popup.js index 894fd45cf..1a227423a 100644 --- a/src/components/mui/mui-qr-badge-popup.js +++ b/src/components/mui/mui-qr-badge-popup.js @@ -38,7 +38,7 @@ import MuiFormikTextField from "./formik-inputs/mui-formik-textfield"; import QrReader from "../qr-reader"; import { getTypeValue, toSlug } from "../../utils/extra-questions"; import MuiFormikAsyncAutocomplete from "./formik-inputs/mui-formik-async-select"; -import { queryAttendees } from "../../actions/attendee-actions"; +import { queryAttendeesWithTickets } from "../../actions/attendee-actions"; const buildInitialValues = (extraQuestions) => { const values = { notes: "", attendee_email: "" }; @@ -189,7 +189,7 @@ const MuiQrBadgePopup = ({ placeholder={T.translate( "sponsor_badge_scans.scan_popup.attendee_placeholder" )} - queryFunction={queryAttendees} + queryFunction={queryAttendeesWithTickets} queryParams={[summitId]} formatOption={(attendee) => ({ value: attendee.email.toString(), diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/index.js index 8dfa79781..81cacbd5f 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/index.js @@ -109,7 +109,7 @@ const SponsorBadgeScans = ({ setShowManualBadgeScanPopup(true); }; - const handleManualScanSubmit = (entity) => { + const handleManualScanSubmit = (entity) => addBadgeScan(entity).then(() => { setShowManualBadgeScanPopup(false); return getBadgeScans( @@ -121,7 +121,6 @@ const SponsorBadgeScans = ({ orderDir ); }); - }; const handleExportBadgeScans = () => { exportBadgeScans(sponsor);