Merged
Conversation
…arCreateEvent, SidebarCustomEvent, and SidebarWelcome components
Fix/frontend naming
… improving attendee handling
feat: add Google Calendar sync functionality for event creation and a…
There was a problem hiding this comment.
Pull request overview
This PR refines the calendar UX (layout + inline event actions), adjusts various French UI labels, and adds backend support to sync accepted events to an admin Google Calendar.
Changes:
- Frontend: adds custom FullCalendar event rendering with an inline delete button and updates calendar styling (slot height, text truncation).
- Backend: introduces a Google Calendar sync service and triggers sync when events are accepted/approved.
- Cleanup/copy: removes some inline comments and updates sidebar/modification labels; removes unused calendar CSS file.
Reviewed changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| frontend/src/services/cardScanListener.ts | Removes an inline comment around socket initialization. |
| frontend/src/pages/Calendar/FullCalendar.css | Updates timegrid slot height; adds styles for custom event content + delete button; truncation rules. |
| frontend/src/pages/Calendar/CalendarComponent.css | Removes a comment; retains external events + container styling. |
| frontend/src/pages/Calendar/Calendar.tsx | Adds eventContent renderer with delete button; wires deletion via useEventActions; refactors refresh callback. |
| frontend/src/pages/Calendar/Calendar.css | Deletes old calendar stylesheet (now covered elsewhere). |
| frontend/src/hooks/useModalManager.ts | Removes a comment in modal effect section. |
| frontend/src/components/SidebarWelcome/SidebarWelcome.tsx | Updates greeting text (“Bienvenue” → “Bonjour”). |
| frontend/src/components/SidebarCustomEvent/SidebarCustomEvent.tsx | Updates sidebar label for predefined events. |
| frontend/src/components/SidebarCreateEvent/SidebarCreateEvent.tsx | Updates sidebar label for custom event creation. |
| frontend/src/components/Modification/Modification.tsx | Capitalizes/accents form labels. |
| frontend/src/components/CreateCustomEvent/CreateCustomEvent.tsx | Adds simple client-side validation for end time after start; appends creator name to event title; shows error message. |
| frontend/src/components/CreateCustomEvent/CreateCustomEvent.css | Adds styling for the new inline error message. |
| frontend/src/App.css | Removes an inline comment; keeps same layout rule. |
| backend/services/google_calendar_service.py | New service to create events in Google Calendar using refresh-token OAuth. |
| backend/services/email_service.py | Removes docstrings from acceptance/rejection email methods. |
| backend/routes/users.py | Removes some inline comments; keeps scan-expiration logic unchanged. |
| backend/routes/events.py | Calls Google Calendar sync after event acceptance/approval; improves reject flow by checking delete result. |
| backend/main.py | Removes an inline comment on SECRET_KEY. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
314
to
+316
| if result.data: | ||
| # Send notification email to the event creator | ||
| sync_event_to_google_calendar(event_data) | ||
|
|
Comment on lines
+162
to
+193
| .calendar-event-content { | ||
| position: relative; | ||
| display: flex; | ||
| flex-direction: column; | ||
| height: 100%; | ||
| width: 100%; | ||
| box-sizing: border-box; | ||
| padding-right: 14px; | ||
| overflow: hidden; | ||
| } | ||
|
|
||
| .calendar-event-text { | ||
| display: flex; | ||
| flex-direction: column; | ||
| gap: 2px; | ||
| min-width: 0; | ||
| } | ||
|
|
||
| .calendar-event-delete { | ||
| position: absolute; | ||
| top: -5px; | ||
| right: -1px; | ||
| width: 14px; | ||
| height: 14px; | ||
| border: none; | ||
| background: transparent; | ||
| color: #1a1a1a; | ||
| font-size: 20px; | ||
| line-height: 1; | ||
| cursor: pointer; | ||
| padding: 0; | ||
| } |
Comment on lines
+16
to
+23
| def _get_invitee_email() -> str | None: | ||
| invitee_email = os.getenv("GOOGLE_CALENDAR_INVITEE_EMAIL", "").strip() | ||
| return invitee_email or None | ||
|
|
||
|
|
||
| def _build_attendees(event_data: dict) -> list[dict]: | ||
| attendees: list[dict] = [] | ||
| seen: set[str] = set() |
Comment on lines
225
to
229
| supabase.table("CreaLab_events").update({"accepted": True}).eq("id", event_id).execute() | ||
| message = "Événement approuvé avec succès" | ||
|
|
||
| sync_event_to_google_calendar(event_data) | ||
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.