feat: implement edit meeting functionality#14
Merged
Conversation
- Add MeetingFormComponent with comprehensive form validation and tooltips - Create backend endpoints for meeting CRUD operations (POST/PUT/GET) - Add TypeScript interfaces for CreateMeetingRequest and UpdateMeetingRequest - Implement proper datetime conversion from 12-hour format to ISO - Integrate meeting form into modal component with create/edit modes - Add meeting creation functionality to dashboard with form modal - Update SupabaseService with meeting management methods - Fix time picker integration and validation Generated with [Claude Code](https://claude.ai/code) Signed-off-by: Asitha de Silva <asithade@gmail.com>
- Add comprehensive timezone list with 80+ timezones covering all regions - Implement form validation to ensure meetings are scheduled in the future - Add calendar date restriction to only allow dates from yesterday onwards - Default start date/time to current time + 1 hour (rounded to 15 min) - Show all validation errors when submit is clicked - Add minDate/maxDate support to calendar component wrapper - Create timezone constants in shared package with helper functions - Fix nested ternary expressions per linting rules - Update meeting type validation and default values Generated with [Claude Code](https://claude.ai/code) Signed-off-by: Asitha de Silva <asithade@gmail.com>
- Fix meeting_type default value to use 'None' instead of empty string - Ensure consistent default values across create and edit modes - Update form patchValue to handle meeting data properly Generated with [Claude Code](https://claude.ai/code) Signed-off-by: Asitha de Silva <asithade@gmail.com>
Implement comprehensive recurring meeting functionality with 6 predefined recurrence patterns: - Does not repeat (default) - Daily - Weekly on [current day] - Monthly on the [nth] [day] - Monthly on the last [day] - Every weekday Key features: - Dynamic options based on selected meeting date - Smart UI that only shows relevant options (no duplicate monthly options) - Proper memory management with takeUntilDestroyed() - Full TypeScript support with new MeetingRecurrence interface - Generates correct Zoom API recurrence objects - Edit support for existing recurring meetings Technical implementation: - Added RecurrenceType enum to shared enums package - Enhanced MeetingRecurrence interface with proper typing - Updated CreateMeetingRequest and UpdateMeetingRequest interfaces - Intelligent date calculation for monthly recurrence patterns - Subscription cleanup to prevent memory leaks Addresses LFXV2-138: Add Recurring Meeting Options to Meeting Form Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Asitha de Silva <asithade@gmail.com>
…nums folder Move MeetingVisibility and MeetingType enums from interfaces to the proper shared enums folder structure for better organization and consistency. 🤖 Generated with [Claude Code](https://claude.ai/code) Signed-off-by: Asitha de Silva <asithade@gmail.com>
- Add DELETE endpoint with recurrence handling support - Enhanced confirmation dialog with meeting details preview - Options for recurring meetings (single occurrence vs entire series) - Dynamic menu items that exclude edit option for past meetings - Proper loading states and error handling throughout deletion flow - Complete backend and frontend integration with proper validation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Asitha de Silva <asithade@gmail.com>
- Create MeetingDeleteConfirmationComponent for better HTML control - Add shared RadioButtonComponent following checkbox pattern - Replace inline HTML confirmation with structured component - Implement form-controlled radio buttons for recurring meeting options - Clean up meeting dashboard by removing multiple helper methods - Add proper TypeScript interfaces for component data/results 🤖 Generated with [Claude Code](https://claude.ai/code) Signed-off-by: Asitha de Silva <asithade@gmail.com>
- Move meeting deletion logic from dashboard to confirmation component - Add comprehensive error handling with specific HTTP status messages - Implement loading states with disabled buttons and spinner icons - Add success/error toast notifications for user feedback - Keep dialog open on error to allow retry, close only on success - Simplify meeting dashboard by removing deletion state management - Improve separation of concerns and component self-containment 🤖 Generated with [Claude Code](https://claude.ai/code) Signed-off-by: Asitha de Silva <asithade@gmail.com>
- Add 'future' delete type for recurring meetings to delete from current date forward - Hide radio button options for past meetings (only show single delete option implicitly) - Update backend and frontend services to support new 'future' delete type - Add conditional UI logic based on meeting start_time vs current time - Enhanced warning messages for different delete scenarios - Improved UX by showing only relevant options based on meeting timing 🤖 Generated with [Claude Code](https://claude.ai/code) Signed-off-by: Asitha de Silva <asithade@gmail.com>
Signed-off-by: Asitha de Silva <asithade@gmail.com>
…port - Add edit meeting functionality to meeting dashboard component - Create RecurringMeetingEditOptionsComponent for two-step edit flow - Support editing single occurrence vs future occurrences for recurring meetings - Hide recurrence and meeting settings when editing single occurrence only - Fix interface alignment between Create/Update requests and database schema - Remove end_time field and calculate from start_time + duration - Add recording_access field to meeting form and interfaces - Fix AI summary field initialization with nullish coalescing - Update backend routes and services to support editType parameter - Improve form field visibility based on edit context 🤖 Generated with [Claude Code](https://claude.ai/code) Signed-off-by: Asitha de Silva <asithade@gmail.com>
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR implements comprehensive edit meeting functionality, including create, update, and delete operations for both single and recurring meetings. The implementation includes proper handling of recurrence patterns, timezone support, and user-friendly interfaces for managing meeting lifecycle operations.
- Adds complete CRUD operations for meetings with proper API endpoints and service methods
- Implements recurring meeting edit options with single occurrence vs. series editing capabilities
- Introduces comprehensive meeting form with validation, timezone support, and recurrence configuration
Reviewed Changes
Copilot reviewed 30 out of 30 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/shared/src/interfaces/meeting.interface.ts | Defines meeting interfaces, recurrence structure, and CRUD request/response types |
| packages/shared/src/enums/meeting-enums.ts | Adds meeting-related enums for visibility, type, and recurrence patterns |
| packages/shared/src/constants/timezones.ts | Provides comprehensive timezone options and utility functions |
| apps/lfx-pcc/src/server/services/supabase.service.ts | Implements backend service methods for meeting CRUD operations |
| apps/lfx-pcc/src/server/routes/meetings.ts | Adds REST API endpoints for meeting management |
| apps/lfx-pcc/src/app/shared/services/meeting.service.ts | Implements frontend service methods for meeting operations |
| apps/lfx-pcc/src/app/shared/components/meeting-form/ | Complete meeting creation/editing form with validation and recurrence handling |
| apps/lfx-pcc/src/app/shared/components/recurring-meeting-edit-options/ | Dialog for choosing edit scope in recurring meetings |
| apps/lfx-pcc/src/app/shared/components/meeting-delete-confirmation/ | Comprehensive delete confirmation with recurring meeting options |
| apps/lfx-pcc/src/app/modules/project/components/meeting-dashboard/ | Integration of meeting CRUD operations into the dashboard |
Comments suppressed due to low confidence (3)
packages/shared/src/interfaces/meeting.interface.ts:56
- The removal of the 'end_time' field may break existing code that depends on this property. Consider adding a deprecation notice or migration strategy if this field is used elsewhere in the codebase.
duration: number | null;
packages/shared/src/interfaces/meeting.interface.ts:57
- The removal of the 'status' field may break existing code that depends on this property. Consider adding a deprecation notice or migration strategy if this field is used elsewhere in the codebase.
early_join_time?: number;
apps/lfx-pcc/src/app/shared/components/meeting-form/meeting-form.component.ts:104
- The empty catch block in getUserTimezone() silently handles all errors. Consider logging the error for debugging purposes while still returning the fallback value.
public recordingAccessOptions = [
apps/lfx-pcc/src/app/shared/components/meeting-form/meeting-form.component.ts
Show resolved
Hide resolved
apps/lfx-pcc/src/app/shared/components/meeting-form/meeting-form.component.ts
Show resolved
Hide resolved
- Add restricted field as a boolean toggle in meeting settings - Update form group to include restricted control - Add restricted field to meeting data submission - Initialize restricted field when editing existing meetings - Hide restricted toggle when editing single occurrence only The restricted toggle allows marking meetings with limited access where only authorized participants can join. 🤖 Generated with [Claude Code](https://claude.ai/code) Signed-off-by: Asitha de Silva <asithade@gmail.com>
Signed-off-by: Asitha de Silva <asithade@gmail.com>
andrest50
approved these changes
Jul 29, 2025
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.
Implement edit meeting functionality for LFXV2-114