From 282cbfc80e32d7991f27914c7bd7226121e40cbe Mon Sep 17 00:00:00 2001 From: Camille Moussu Date: Thu, 28 Aug 2025 16:27:08 +0200 Subject: [PATCH] [#7] fixed attendee search in full display --- src/components/Attendees/AttendeeSearch.tsx | 28 +++++++++++++++------ src/features/Events/EventDisplay.tsx | 10 +++++++- src/features/Events/EventModal.tsx | 2 +- src/features/User/userAPI.ts | 14 +++++------ 4 files changed, 36 insertions(+), 18 deletions(-) diff --git a/src/components/Attendees/AttendeeSearch.tsx b/src/components/Attendees/AttendeeSearch.tsx index 6e17588..44636b5 100644 --- a/src/components/Attendees/AttendeeSearch.tsx +++ b/src/components/Attendees/AttendeeSearch.tsx @@ -9,6 +9,7 @@ import { } from "@mui/material"; import { useEffect, useState } from "react"; import { searchUsers } from "../../features/User/userAPI"; +import { userAttendee } from "../../features/User/userDataTypes"; interface User { email: string; @@ -17,9 +18,13 @@ interface User { } export default function UserSearch({ + attendees, setAttendees, + disabled, }: { + attendees: userAttendee[]; setAttendees: Function; + disabled?: boolean; }) { const [query, setQuery] = useState(""); const [options, setOptions] = useState([]); @@ -40,6 +45,7 @@ export default function UserSearch({ x} fullWidth @@ -75,14 +81,20 @@ export default function UserSearch({ }} /> )} - renderOption={(props, option) => ( - - - - - - - )} + renderOption={(props, option) => { + if (attendees.find((a) => a.cal_address === option.email)) return; + return ( + + + + + + + ); + }} /> ); } diff --git a/src/features/Events/EventDisplay.tsx b/src/features/Events/EventDisplay.tsx index ecf3bd6..0c7199a 100644 --- a/src/features/Events/EventDisplay.tsx +++ b/src/features/Events/EventDisplay.tsx @@ -360,7 +360,15 @@ export default function EventDisplayModal({ rows={2} /> - + {isOwn && ( + { + const newAttendeeList = attendees.concat(value); + setAttendees(newAttendeeList); + }} + /> + )} - + {/* Extended options */} {showMore && ( <> diff --git a/src/features/User/userAPI.ts b/src/features/User/userAPI.ts index 9c042ac..d6bc2a8 100644 --- a/src/features/User/userAPI.ts +++ b/src/features/User/userAPI.ts @@ -16,14 +16,12 @@ export async function searchUsers(query: string) { }) .json(); - return response - .filter((user) => user.objectType === "user") - .map((user) => ({ - email: user.emailAddresses?.[0]?.value || "", - displayName: - user.names?.[0]?.displayName || user.emailAddresses?.[0]?.value, - avatarUrl: user.photos?.[0]?.url || "", - })); + return response.map((user) => ({ + email: user.emailAddresses?.[0]?.value || "", + displayName: + user.names?.[0]?.displayName || user.emailAddresses?.[0]?.value, + avatarUrl: user.photos?.[0]?.url || "", + })); } export async function getUserDetails(id: string) {