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
…sses in SchedulePickTime component
…sking for sensitive data
…r and actor participants in ScheduleMain component
… filter out null and undefined values
…with into feat/new-group-scheduling
…ion checks in ScheduleBase component
…heduleMain component
Feat/new-group-scheduling
refactor: conditionally sort participant display names based on guest list visibility
…in error handling
Wallet & Scheduling QA fixes
…se it for currency selection
refactor: separate CurrencySelector component and reset state in send funds modal on close
… for Stripe onboarding
…upported countries API
Feat/stripe-payments
- 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
…diting availability state
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 { |
There was a problem hiding this comment.
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.
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.
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.
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}` | |||
There was a problem hiding this comment.
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}` |
| 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.
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
d677b2e to
a492afd
Compare