Skip to content

Fix/rescheduling update#1034

Open
vineyy17 wants to merge 3831 commits intodevelopfrom
fix/rescheduling-update
Open

Fix/rescheduling update#1034
vineyy17 wants to merge 3831 commits intodevelopfrom
fix/rescheduling-update

Conversation

@vineyy17
Copy link
Copy Markdown
Collaborator

@vineyy17 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

Onyelaudochukwuka and others added 30 commits October 27, 2025 19:02
…r and actor participants in ScheduleMain component
refactor: conditionally sort participant display names based on guest list visibility
refactor: separate CurrencySelector component and reset state in send funds modal on close
vineyy17 and others added 28 commits November 26, 2025 20:02
- Updated participant handling in CreatePoll to ensure an empty array is set when no participants are selected.
- Improved user feedback in QuickPollTimeSlot by adding availability status messages during editing.
- Made participants optional in CreateQuickPollRequest interface for better flexibility.
- Adjusted database utility functions to handle optional participants gracefully.
- Refined quickPollSchema to allow for an empty participants array, enhancing validation logic.
feat: enhance QuickPoll participant handling and availability messaging
fix: conditionally render user states in QuickPollTimeSlot based on editing availability state
- Introduced a new Pricing component that displays Free and Pro plans with features and pricing details.
- Integrated the Pricing component into the homepage layout.
- Updated AccountPlansAndBilling to reflect changes in Pro plan features.
feat: add Pricing component to landing page
- Added logic to determine if the current action is an update meeting.
- Updated various form controls to be conditionally disabled based on the update meeting intent, improving user experience during meeting modifications.
feat: enhance ScheduleBase to handle update meeting intent
- Updated Pricing component to include redirect paths for Pro plan subscription.
- Added a new 'Pricing' item to the navigation bar for improved accessibility.
- Modified AccountPlansAndBilling to handle subscription intents and open dialogs accordingly.
- Introduced SUBSCRIBE_PRO intent in Dashboard types for better intent management.
feat: enhance Pricing functionality and navigation
- Modified the redirect path for the Pro plan subscription to include a hash for subscriptions, improving navigation consistency.
fix: update redirect path for Pro plan subscription in Pricing component
…o slots

- Changed the data structure for guest slots to use the 'slots' table instead of 'guest_slots'.
- Removed the guestSlots array and related database insertions from both saveMeeting and updateMeeting functions.
- Updated the logic to push all slot data into a single slots array for database operations.
…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.
- Implemented shallow routing to the subscriptions section when the Pro plan subscription intent is triggered, enhancing user experience and navigation flow.
feat: add shallow routing for Pro plan subscription dialog
…PollTimeSlot components

- Updated effectiveAvailableSlots and effectiveMeetingMembers to account for hasAvailability state during editing.
- Enhanced conditional rendering in QuickPollTimeSlot to ensure proper handling of user states when no users are selected.
show all users availability when adding availability
…ailability

- Introduced an accordion component to display detailed instructions on how to participate in the poll.
- Added structured participation instructions to enhance user guidance and experience.
- Included icons for better visual representation of the accordion state.
…idance

- Added a new component to provide detailed instructions on participating in polls.
- Replaced inline participation instructions in QuickPollPickAvailability with the new component for better code organization and reusability.
- Enhanced user experience by clearly outlining steps for adding availability and importing from calendars.
feat: add accordion for participation instructions in QuickPollPickAvailability
- 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 {
Copy link
Copy Markdown
Collaborator

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,
Copy link
Copy Markdown
Collaborator

@Onyelaudochukwuka Onyelaudochukwuka Dec 6, 2025

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)
Copy link
Copy Markdown
Collaborator

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
Copy link
Copy Markdown
Collaborator

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.

@@ -1894,10 +1898,12 @@ const generateGoogleCalendarUrl = async (
}
if (content || meeting_url) {
const changeUrl = `${appUrl}/dashboard/schedule?conferenceId=${meeting_id}&intent=${Intents.UPDATE_MEETING}`
Copy link
Copy Markdown
Collaborator

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}`
Copy link
Copy Markdown
Collaborator

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}`
Copy link
Copy Markdown
Collaborator

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants