@@ -16,6 +16,7 @@ import { WeeklyCalendar } from './weekly-calendar'
1616import slotifyClient from '@/hooks/fetch'
1717import { toast } from '@/hooks/use-toast'
1818import * as ScrollArea from '@radix-ui/react-scroll-area'
19+ import { User , AttendeeBase , CalendarEvent } from '@/types/types'
1920
2021interface CreateEventProps {
2122 open : boolean
@@ -33,28 +34,23 @@ export function CreateEvent({ open, onOpenChangeAction }: CreateEventProps) {
3334 // Create a local open state so that child components can update it.
3435 const [ isOpen , setIsOpen ] = useState ( open )
3536
36- // Sync local state if prop changes.
37- useEffect ( ( ) => {
38- setIsOpen ( open )
39- } , [ open ] )
40-
4137 // Callback to update open in both local state and parent state.
4238 const handleUpdateOpen = useCallback (
4339 ( newOpen : boolean ) => {
4440 setIsOpen ( newOpen )
45- onOpenChangeAction ( newOpen )
41+ onOpenChangeAction ( isOpen )
4642 } ,
4743 [ onOpenChangeAction ] ,
4844 )
4945
50- const [ myEvents , setMyEvents ] = useState < any [ ] > ( [ ] )
46+ const [ myEvents , setMyEvents ] = useState < CalendarEvent [ ] > ( [ ] )
5147 const [ title , setTitle ] = useState ( '' )
5248 const [ location , setLocation ] = useState ( '' )
5349 const [ duration , setDuration ] = useState ( '1hr' )
5450
5551 const [ userSearchQuery , setUserSearchQuery ] = useState ( '' )
56- const [ searchResults , setSearchResults ] = useState < any [ ] > ( [ ] )
57- const [ selectedParticipants , setSelectedParticipants ] = useState < any [ ] > ( [ ] )
52+ const [ searchResults , setSearchResults ] = useState < User [ ] > ( [ ] )
53+ const [ selectedParticipants , setSelectedParticipants ] = useState < User [ ] > ( [ ] )
5854
5955 const [ selectedDate , setSelectedDate ] = useState < Date | null > ( null )
6056 const [ selectedRange , setSelectedRange ] = useState < {
@@ -144,7 +140,7 @@ export function CreateEvent({ open, onOpenChangeAction }: CreateEventProps) {
144140 } , [ userSearchQuery ] )
145141
146142 // Add a user from search results to selected participants
147- const handleAddParticipant = ( user : any ) => {
143+ const handleAddParticipant = ( user : User ) => {
148144 if (
149145 currentUser &&
150146 user . email . toLowerCase ( ) === currentUser . email . toLowerCase ( )
@@ -164,7 +160,7 @@ export function CreateEvent({ open, onOpenChangeAction }: CreateEventProps) {
164160 }
165161
166162 // Remove a selected participant
167- const handleRemoveParticipant = ( userId : string ) => {
163+ const handleRemoveParticipant = ( userId : number ) => {
168164 setSelectedParticipants ( selectedParticipants . filter ( u => u . id !== userId ) )
169165 }
170166
@@ -212,13 +208,19 @@ export function CreateEvent({ open, onOpenChangeAction }: CreateEventProps) {
212208 setIsLoading ( true )
213209 try {
214210 // Build attendees array from selected participants for scheduling suggestions
215- const attendees = selectedParticipants . map ( user => ( {
216- emailAddress : {
217- address : user . email ,
218- name : user . name || user . email ,
219- } ,
220- attendeeType : 'required' as const ,
221- } ) )
211+
212+ let attendees : AttendeeBase [ ] = [ ]
213+
214+ for ( const user of selectedParticipants ) {
215+ attendees . push ( {
216+ emailAddress : {
217+ address : user . email ,
218+ name : user . firstName + ' ' + user . lastName ,
219+ } ,
220+ attendeeType : 'required' as const ,
221+ } )
222+ }
223+
222224 console . log ( 'Attendees:' , attendees )
223225
224226 const durationInMinutes = durationMapping [ duration ] || 60
@@ -387,7 +389,7 @@ export function CreateEvent({ open, onOpenChangeAction }: CreateEventProps) {
387389 key = { user . id }
388390 className = 'flex items-center gap-1 bg-blue-100 text-blue-800 rounded px-2 py-1'
389391 >
390- < span > { user . name ? user . name : user . email } </ span >
392+ < span > { user . firstName ? user . firstName : user . email } </ span >
391393 < button
392394 onClick = { ( ) => handleRemoveParticipant ( user . id ) }
393395 className = 'text-blue-500 hover:text-blue-700'
0 commit comments