-
Notifications
You must be signed in to change notification settings - Fork 1
Fix/rescheduling update #1034
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Fix/rescheduling update #1034
Conversation
vineyy17
commented
Dec 4, 2025
- include reschedule and cancel links for both hosts and guests in email invite
- include reschedule and cancel links for both hosts and guests in calendar event
- disable irrelevant fields during rescheduling
- fix cancel logic for hosts
- fix reschedule logic for hosts and guests
…intent checks - Removed references to the update meeting intent from various form controls, streamlining the logic for enabling/disabling fields. - Updated conditions for form controls to focus solely on meeting edit permissions and scheduling state, enhancing clarity and maintainability.
- Updated calendar management functions to include separate reschedule and cancel URLs for meetings. - Modified email generation to incorporate the new cancel URL for better user guidance. - Adjusted Google and Office365 services to utilize the new URL structure for meeting updates and cancellations. - Improved the meeting summary generation to reflect the changes in URL handling for rescheduling and cancellation.
- Disabled a button in ScheduleBase to prevent user interaction. - Enhanced ScheduleForm button logic to disable based on conferenceId in addition to isCancelling, improving user experience and preventing unintended actions.
… error handling - Added support for conferenceId in the Meetings component to manage dashboard meetings more effectively. - Implemented logic to fetch meeting slots based on conferenceId, improving user experience for guests. - Enhanced error handling with user-friendly toast notifications for meeting loading and invalid meeting scenarios. - Updated ScheduleForm to disable fields when rescheduling a meeting, ensuring a smoother user interaction.
- Enhanced meeting update process by prioritizing conferenceId for single calendar events, streamlining guest rescheduling. - Implemented legacy support for meetingSlotId to maintain compatibility with older guest meetings. - Improved error handling by providing detailed error messages in JSON format for better debugging and user feedback. - Ensured all meeting slots have consistent keys during updates, enhancing data integrity.
- Simplified the meeting update process by directly comparing the decrypted meeting version with the existing database slot version. - Removed unnecessary decryption step for existing meetings, enhancing performance and clarity. - Maintained robust error handling for meeting change conflicts to ensure data integrity during updates.
| if (slot.user_type === 'account') { | ||
| meeting = slot as ExtendedDBSlot | ||
| decodedMeeting = await decodeMeeting(meeting, currentAccount!) | ||
| } else { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The meeting can, I've already implemented this, make reference to the ScheduleMain component
| openMeetingDialog( | ||
| meeting, | ||
| decodedMeeting, | ||
| decodedMeeting ?? undefined, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The modal shouldn't be open if decodedMeerting is null
| setCancelling(false) | ||
| afterCancel && afterCancel(removed) | ||
| onClose() | ||
| afterCancel && afterCancel(removed) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
onClose could navigate to a new page so the afterCancel should run before that
| const { isOpen, onClose, onOpen } = useDisclosure() | ||
| const [autoGeneratedTitle, setAutoGeneratedTitle] = useState('') | ||
| // When conferenceId is present, guest is rescheduling - disable all fields except date/time | ||
| const isRescheduling = !!conferenceId |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, all meeting participants share the same link; both accounts and guests have a conferenceId. The fields should only be disabled if the actor doesn't have permission to edit the meeting, not if there's a conference ID.
| baseUrl += `&text=${title}` | ||
| } | ||
| if (content || meeting_url) { | ||
| const changeUrl = `${appUrl}/dashboard/schedule?conferenceId=${meeting_id}&intent=${Intents.UPDATE_MEETING}` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The user can cancel the meeting here so why is the cancel url being included ?
| message += `\n\nTo reschedule the meeting, please go to: ${rescheduleUrl}` | ||
| } | ||
| if (cancelUrl) { | ||
| message += `\n\nTo cancel the meeting, please go to: ${cancelUrl}` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remove
| message += `\n\nTo reschedule or cancel the meeting, please go to ${meetingChangeLink}` | ||
| if (rescheduleUrl || cancelUrl) { | ||
| if (rescheduleUrl) { | ||
| message += `\n\nTo reschedule the meeting, please go to: ${rescheduleUrl}` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead, we could say to reschedule or cancel the meeting, go to: reschedule link because a user can also cancel the meeting there so there's no need to make the copy any longer