Fixed some minor bugs that caused console errors#3
Merged
pumfleet merged 1 commit intocalcom:mainfrom Apr 10, 2021
emrysal:main
Merged
Fixed some minor bugs that caused console errors#3pumfleet merged 1 commit intocalcom:mainfrom emrysal:main
pumfleet merged 1 commit intocalcom:mainfrom
emrysal:main
Conversation
…a to accomodate best practises
|
@emrysal is attempting to deploy a commit to the calendso Team on Vercel. To accomplish this, @emrysal needs to request access to the Team. Afterwards, an owner of the Team is required to accept their membership request. |
KATT
added a commit
that referenced
this pull request
Sep 3, 2021
emrysal
added a commit
that referenced
this pull request
Sep 29, 2021
3 times is a charm.. can't believe this took 3 tries.
PeerRich
pushed a commit
that referenced
this pull request
Sep 29, 2021
Herbak
added a commit
to Herbak/calendso
that referenced
this pull request
Oct 14, 2021
Update profile.tsx
emrysal
pushed a commit
that referenced
this pull request
Oct 30, 2022
zomars
pushed a commit
that referenced
this pull request
May 23, 2023
Tests: add testing for api keys endpoints
Udit-takkar
added a commit
that referenced
this pull request
Jun 28, 2024
keithwillcode
added a commit
that referenced
this pull request
Jul 8, 2024
* refactor: handleNewBooking #3 * fix: type error * fix: type err * fix: type err * refactor: create booking factor * chore: refactor availusers * chore: type err --------- Co-authored-by: Hariom Balhara <hariombalhara@gmail.com> Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Udit-takkar
added a commit
that referenced
this pull request
Jul 10, 2024
p6l-richard
pushed a commit
to p6l-richard/cal.com-fork
that referenced
this pull request
Jul 22, 2024
* refactor: handleNewBooking calcom#3 * fix: type error * fix: type err * fix: type err * refactor: create booking factor * chore: refactor availusers * chore: type err --------- Co-authored-by: Hariom Balhara <hariombalhara@gmail.com> Co-authored-by: Keith Williams <keithwillcode@gmail.com>
3 tasks
Udit-takkar
added a commit
that referenced
this pull request
Sep 12, 2024
Udit-takkar
added a commit
that referenced
this pull request
Sep 26, 2024
CarinaWolli
pushed a commit
that referenced
this pull request
Oct 2, 2024
* refactor: handleNewBooking #3 * refactor: create booking factor * refactor: handleNewBooking * refactor: seats and rescheduleUId * chore: remove comment * fix: type err * chore: add missing statement * chore: use less params and other improvements * chore: name * chore: improvement * fix: type err * Typo fix * chore: fix type err * refactor: more readable * refactor: improve code * fix: conflicts --------- Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com> Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
3 tasks
3 tasks
CarinaWolli
added a commit
that referenced
this pull request
Oct 21, 2025
* allow routing forms for activeOn * use repository function to get routing forms * remove unnecessary code * adjust logic in update handler * add triggers to api v2 * remvoe unused file * rename to getAcitveOnOptions handler * remove routingFormOptions handler * clean up getActiveOnOptions * refactor WorkflowService * remove logs * remove unused * fix: type check * fix: missed before after events for recurring * fix: calendarEvent handleMarkNoShow * fix error message Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * don't query disabled routing forms * create tasker function * add tasker code * move isFormTrigger function * small adjustments + todo comments * remove email to host action for form triggers * throw trpc error if email to host is added as step * fix dialog on how to use form responses as variables * remove add variable dropdown for form triggers * remove form workfows in event workflows tab * improvements for workflow logic on form submission * review fixes * base setup for seperate schedule functions (evt and form) * add missing BOOKING_PAID workflow trigger * fix pathname * fix: test for BOOKING_REQUESTED * fix activeOn ids * pass hideBranding and smsReminderNumber * adjustments to reminderScheduler * create empty scheduelForForm functions * pass locale and timezone with form user * pass formData instead of responses * pass timeFormat and locale * reusable function for email sending and reminder creation * implement scheduleEmailReminderForForm * remove added editor field from merge conflict * don't support cal.ai action with form triggers * throw bad request if form trigger and cal.ai is combined * add tests for scheduleFormWorkflows * add form submission tests * remove form response varibe info * clean up workflow actions * fixes for getting template options * pass triggerType to getAllWorkflows * move reusable logic to scheduleSMSReminder * add formdata to param type * type fixes for text reminder managers * implement scheduleSMSReminderForForm * fix import * fix isAuthorizedToAddActiveOnIds * disble whatsapp action * implement triggerFormSubmittedNoEventWorkflow * code clean up * Merge branch 'devin/1755107037-add-workflow-triggers' into feat/routing-form-workflow-triggers * fix type errors * remove async from getSubmitterEmail * fix type errors * revert cal.ai changes * fix type error * add sublogger * code clean up * fix type errors * remove label for attendee whatsapp action * code clean up * fixes saving teams on org workflows * fix type error * code improvements for activeOn ids * Revert "code improvements for activeOn ids" This reverts commit 0a3590a. * improve variable name * fix unit tests * small fixes * type fixes * remove unused translation keys * fix merge conflict issues * code clean up * remove SMS action support * remove more SMS code * add missing imports * set custom template for form action * type fixes * fix tasker endpoint * fix duplicate check * fix workfows.test.ts * use repository funciton to getHideBranding * add back SMS action * add back changes to smsReminderManager * code clean up * fix hasDuplicateSubmission * code clean up * select only needed properties * remove repository functions * Revert "remove repository functions" This reverts commit 7aa47b1. * add scheduleWorkflows function * Revert "add scheduleWorkflows function" This reverts commit fe5db4f. * move type to /types * Revert "move type to /types" This reverts commit 91e0152. * revert changes causing type errors * remove import * remove unused import * Revert "remove unused import" This reverts commit 1916768. * revert changed from attempt to fix type errors * pass object to gt all workflows * fix isAuthorized check * trigger filtering * remove form submitted no event booked code * remove form submitted no event from schema * remove more code * remove test * fixes * add getSubmitterEmail function * add trigger * small fixes * add missing workflow DTOs * small fixes * use activeOnWithChildren * fix active on when switching trigger type * remove add variable dropdown * add getAllWorkflowsFromRoutingForm to WorkflowService * fix error caused by undefined evt * fix type error * fix type error * fix tests * code clean up * final fixes and clean up * remove console.log * remove template text form from triggers * add routing form repoditory function * fix bug with key * add comments * fix test * add missing await * use predefined FormSubmissionData type * add .trim() to sms message * pass contextData instead * add missing trigger in update-workflow.input.ts * ForEvt and ForForm function for aiPhoneCallManager * chore: add support for form workflows on api v2 * fixup! chore: add support for form workflows on api v2 * use only repository functions in update handler * move all prisma queries from list.handler * review suggestions * chore: handle workflows api v2 * chore: handle workflows api v2, split in 2 endpoints * fix workflow step creation * remove connect agent and fixes types * add type to workflow * chore: use workflow type in apiv2 WorkflowsOutputService * update worklfow type on update * chore: use workflow type in apiv2 WorkflowsOutputService * fix template body for torm trigger * some UI fixes for email subject/body * resetting email body when changing form triggers * use type field to query workflows * clean up all old active on values * remove responseId from all funciton calls * remove undefined from updateTemplate * refactor: split routing form and event-type workflows code * refactor: split routing form and event-type workflows code * fix template text when adding action * chore: don't rename WorkflowActivationDto to avoid ci blocking * refine update schedule to use only allowed actions * fix type error * don't allow whatsapp action with form trigger * fix type error * return early if activeOn array is empty * fix: from step type in BaseFormWorkflowStepDto * fixup! fix: from step type in BaseFormWorkflowStepDto * api v2 updates * move all prisma calls to repository (service/workflows.ts) * use FORM_TRIGGER_WORKFLOW_EVENTS for form queries * use userRepository * use FORM_TRIGGER_WORKFLOW_EVENTS in isFormTrigger * code clean up * code clean up * use repository functions in formSubmissionValidation.ts * remove action check in update handler * add back trpc import * fix agent repository functions * add SMS actions to allowed form action constants * remove unsued import * fixes for offset api v2 * add missing responseId * fix failing test * fix failing test * remove unused imports * chore: handle sms step action for form worklfow in dtos --------- Co-authored-by: CarinaWolli <wollencarina@gmail.com> Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Co-authored-by: Benny Joo <sldisek783@gmail.com> Co-authored-by: cal.com <morgan@cal.com> Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
KartikLabhshetwar
pushed a commit
to KartikLabhshetwar/cal.com
that referenced
this pull request
Oct 25, 2025
* allow routing forms for activeOn * use repository function to get routing forms * remove unnecessary code * adjust logic in update handler * add triggers to api v2 * remvoe unused file * rename to getAcitveOnOptions handler * remove routingFormOptions handler * clean up getActiveOnOptions * refactor WorkflowService * remove logs * remove unused * fix: type check * fix: missed before after events for recurring * fix: calendarEvent handleMarkNoShow * fix error message Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * don't query disabled routing forms * create tasker function * add tasker code * move isFormTrigger function * small adjustments + todo comments * remove email to host action for form triggers * throw trpc error if email to host is added as step * fix dialog on how to use form responses as variables * remove add variable dropdown for form triggers * remove form workfows in event workflows tab * improvements for workflow logic on form submission * review fixes * base setup for seperate schedule functions (evt and form) * add missing BOOKING_PAID workflow trigger * fix pathname * fix: test for BOOKING_REQUESTED * fix activeOn ids * pass hideBranding and smsReminderNumber * adjustments to reminderScheduler * create empty scheduelForForm functions * pass locale and timezone with form user * pass formData instead of responses * pass timeFormat and locale * reusable function for email sending and reminder creation * implement scheduleEmailReminderForForm * remove added editor field from merge conflict * don't support cal.ai action with form triggers * throw bad request if form trigger and cal.ai is combined * add tests for scheduleFormWorkflows * add form submission tests * remove form response varibe info * clean up workflow actions * fixes for getting template options * pass triggerType to getAllWorkflows * move reusable logic to scheduleSMSReminder * add formdata to param type * type fixes for text reminder managers * implement scheduleSMSReminderForForm * fix import * fix isAuthorizedToAddActiveOnIds * disble whatsapp action * implement triggerFormSubmittedNoEventWorkflow * code clean up * Merge branch 'devin/1755107037-add-workflow-triggers' into feat/routing-form-workflow-triggers * fix type errors * remove async from getSubmitterEmail * fix type errors * revert cal.ai changes * fix type error * add sublogger * code clean up * fix type errors * remove label for attendee whatsapp action * code clean up * fixes saving teams on org workflows * fix type error * code improvements for activeOn ids * Revert "code improvements for activeOn ids" This reverts commit 0a3590a. * improve variable name * fix unit tests * small fixes * type fixes * remove unused translation keys * fix merge conflict issues * code clean up * remove SMS action support * remove more SMS code * add missing imports * set custom template for form action * type fixes * fix tasker endpoint * fix duplicate check * fix workfows.test.ts * use repository funciton to getHideBranding * add back SMS action * add back changes to smsReminderManager * code clean up * fix hasDuplicateSubmission * code clean up * select only needed properties * remove repository functions * Revert "remove repository functions" This reverts commit 7aa47b1. * add scheduleWorkflows function * Revert "add scheduleWorkflows function" This reverts commit fe5db4f. * move type to /types * Revert "move type to /types" This reverts commit 91e0152. * revert changes causing type errors * remove import * remove unused import * Revert "remove unused import" This reverts commit 1916768. * revert changed from attempt to fix type errors * pass object to gt all workflows * fix isAuthorized check * trigger filtering * remove form submitted no event booked code * remove form submitted no event from schema * remove more code * remove test * fixes * add getSubmitterEmail function * add trigger * small fixes * add missing workflow DTOs * small fixes * use activeOnWithChildren * fix active on when switching trigger type * remove add variable dropdown * add getAllWorkflowsFromRoutingForm to WorkflowService * fix error caused by undefined evt * fix type error * fix type error * fix tests * code clean up * final fixes and clean up * remove console.log * remove template text form from triggers * add routing form repoditory function * fix bug with key * add comments * fix test * add missing await * use predefined FormSubmissionData type * add .trim() to sms message * pass contextData instead * add missing trigger in update-workflow.input.ts * ForEvt and ForForm function for aiPhoneCallManager * chore: add support for form workflows on api v2 * fixup! chore: add support for form workflows on api v2 * use only repository functions in update handler * move all prisma queries from list.handler * review suggestions * chore: handle workflows api v2 * chore: handle workflows api v2, split in 2 endpoints * fix workflow step creation * remove connect agent and fixes types * add type to workflow * chore: use workflow type in apiv2 WorkflowsOutputService * update worklfow type on update * chore: use workflow type in apiv2 WorkflowsOutputService * fix template body for torm trigger * some UI fixes for email subject/body * resetting email body when changing form triggers * use type field to query workflows * clean up all old active on values * remove responseId from all funciton calls * remove undefined from updateTemplate * refactor: split routing form and event-type workflows code * refactor: split routing form and event-type workflows code * fix template text when adding action * chore: don't rename WorkflowActivationDto to avoid ci blocking * refine update schedule to use only allowed actions * fix type error * don't allow whatsapp action with form trigger * fix type error * return early if activeOn array is empty * fix: from step type in BaseFormWorkflowStepDto * fixup! fix: from step type in BaseFormWorkflowStepDto * api v2 updates * move all prisma calls to repository (service/workflows.ts) * use FORM_TRIGGER_WORKFLOW_EVENTS for form queries * use userRepository * use FORM_TRIGGER_WORKFLOW_EVENTS in isFormTrigger * code clean up * code clean up * use repository functions in formSubmissionValidation.ts * remove action check in update handler * add back trpc import * fix agent repository functions * add SMS actions to allowed form action constants * remove unsued import * fixes for offset api v2 * add missing responseId * fix failing test * fix failing test * remove unused imports * chore: handle sms step action for form worklfow in dtos --------- Co-authored-by: CarinaWolli <wollencarina@gmail.com> Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Co-authored-by: Benny Joo <sldisek783@gmail.com> Co-authored-by: cal.com <morgan@cal.com> Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
3 tasks
devin-ai-integration bot
added a commit
that referenced
this pull request
Nov 12, 2025
Fixes identified issues while maintaining PR objective of removing @calcom/web dependencies from packages via dependency injection: 1. Code Duplication (Comment #2): - Extracted buildLegacyRequest to packages/lib/legacy-request.ts - Uses generic interfaces (HeadersLike, CookiesLike) instead of Next.js types - Both apps/web and packages can now import from shared location - Removed unused NextApiRequest import from calcomHandler.ts 2. Missing Cache Revalidation (Comments #3, #5, #8): - Added onInvalidate prop to NewWebhookView and wired from webhooks/new page - Added onInvalidate prop to EventWebhooksTab (needs wiring from apps/web) - Added onInvalidate prop to DuplicateDialog (needs wiring from apps/web) - Pattern: server actions with revalidatePath at call sites 3. Promise Handling Bug (Comments #6, #12): - Fixed MemberInvitationModal clipboard promise to handle rejections - Added reject handler to prevent promise hanging on mutateAsync failure Note: EventWebhooksTab and DuplicateDialog onInvalidate props are added but not yet wired from apps/web pages. This requires threading through multiple component layers and will be completed in follow-up commits. Platform DI changes (UserDropdown, PlatformMembersView, InviteMemberModal) were reverted in previous commit to prevent regressions. Co-Authored-By: Volnei Munhoz <volnei.munhoz@gmail.com>
7 tasks
devin-ai-integration bot
pushed a commit
that referenced
this pull request
Jan 14, 2026
- Fix #1: Weekly schedule now shows multiple time slots per day in AvailabilityTab - Fix #2: Allow numeric input fields to be empty with proper validation - Fix #3: Add native iOS date picker for date range in Limits tab - Fix #4: Change 'Email verification' to 'Booker email verification' in Advanced tab - Fix #5: Fix Requires confirmation comparison logic in buildPartialUpdatePayload - Fix #6: Forward parameters toggle already working, verified wiring - Fix #7: Add toggles for redirect booking URL and interface language in Advanced tab - Fix #8: Increase scroll padding at bottom from 200 to 350 for better keyboard access
dhairyashiil
added a commit
that referenced
this pull request
Jan 14, 2026
* fix(companion): iOS event type detail fixes - Fix #1: Weekly schedule now shows multiple time slots per day in AvailabilityTab - Fix #2: Allow numeric input fields to be empty with proper validation - Fix #3: Add native iOS date picker for date range in Limits tab - Fix #4: Change 'Email verification' to 'Booker email verification' in Advanced tab - Fix #5: Fix Requires confirmation comparison logic in buildPartialUpdatePayload - Fix #6: Forward parameters toggle already working, verified wiring - Fix #7: Add toggles for redirect booking URL and interface language in Advanced tab - Fix #8: Increase scroll padding at bottom from 200 to 350 for better keyboard access * fix(companion): conditional scroll padding for limits and advanced tabs only * fix(companion): remove static date text from iOS date picker, keep only picker * fix(companion): simplify iOS date picker to match RescheduleScreen pattern * update code
devin-ai-integration bot
added a commit
that referenced
this pull request
Feb 9, 2026
Co-Authored-By: hariom@cal.com <hariombalhara@gmail.com>
19 tasks
akarsh-jain-790
pushed a commit
to akarsh-jain-790/cal.com
that referenced
this pull request
Mar 8, 2026
* allow routing forms for activeOn * use repository function to get routing forms * remove unnecessary code * adjust logic in update handler * add triggers to api v2 * remvoe unused file * rename to getAcitveOnOptions handler * remove routingFormOptions handler * clean up getActiveOnOptions * refactor WorkflowService * remove logs * remove unused * fix: type check * fix: missed before after events for recurring * fix: calendarEvent handleMarkNoShow * fix error message Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * don't query disabled routing forms * create tasker function * add tasker code * move isFormTrigger function * small adjustments + todo comments * remove email to host action for form triggers * throw trpc error if email to host is added as step * fix dialog on how to use form responses as variables * remove add variable dropdown for form triggers * remove form workfows in event workflows tab * improvements for workflow logic on form submission * review fixes * base setup for seperate schedule functions (evt and form) * add missing BOOKING_PAID workflow trigger * fix pathname * fix: test for BOOKING_REQUESTED * fix activeOn ids * pass hideBranding and smsReminderNumber * adjustments to reminderScheduler * create empty scheduelForForm functions * pass locale and timezone with form user * pass formData instead of responses * pass timeFormat and locale * reusable function for email sending and reminder creation * implement scheduleEmailReminderForForm * remove added editor field from merge conflict * don't support cal.ai action with form triggers * throw bad request if form trigger and cal.ai is combined * add tests for scheduleFormWorkflows * add form submission tests * remove form response varibe info * clean up workflow actions * fixes for getting template options * pass triggerType to getAllWorkflows * move reusable logic to scheduleSMSReminder * add formdata to param type * type fixes for text reminder managers * implement scheduleSMSReminderForForm * fix import * fix isAuthorizedToAddActiveOnIds * disble whatsapp action * implement triggerFormSubmittedNoEventWorkflow * code clean up * Merge branch 'devin/1755107037-add-workflow-triggers' into feat/routing-form-workflow-triggers * fix type errors * remove async from getSubmitterEmail * fix type errors * revert cal.ai changes * fix type error * add sublogger * code clean up * fix type errors * remove label for attendee whatsapp action * code clean up * fixes saving teams on org workflows * fix type error * code improvements for activeOn ids * Revert "code improvements for activeOn ids" This reverts commit 0a3590a. * improve variable name * fix unit tests * small fixes * type fixes * remove unused translation keys * fix merge conflict issues * code clean up * remove SMS action support * remove more SMS code * add missing imports * set custom template for form action * type fixes * fix tasker endpoint * fix duplicate check * fix workfows.test.ts * use repository funciton to getHideBranding * add back SMS action * add back changes to smsReminderManager * code clean up * fix hasDuplicateSubmission * code clean up * select only needed properties * remove repository functions * Revert "remove repository functions" This reverts commit 7aa47b1. * add scheduleWorkflows function * Revert "add scheduleWorkflows function" This reverts commit fe5db4f. * move type to /types * Revert "move type to /types" This reverts commit 91e0152. * revert changes causing type errors * remove import * remove unused import * Revert "remove unused import" This reverts commit 1916768. * revert changed from attempt to fix type errors * pass object to gt all workflows * fix isAuthorized check * trigger filtering * remove form submitted no event booked code * remove form submitted no event from schema * remove more code * remove test * fixes * add getSubmitterEmail function * add trigger * small fixes * add missing workflow DTOs * small fixes * use activeOnWithChildren * fix active on when switching trigger type * remove add variable dropdown * add getAllWorkflowsFromRoutingForm to WorkflowService * fix error caused by undefined evt * fix type error * fix type error * fix tests * code clean up * final fixes and clean up * remove console.log * remove template text form from triggers * add routing form repoditory function * fix bug with key * add comments * fix test * add missing await * use predefined FormSubmissionData type * add .trim() to sms message * pass contextData instead * add missing trigger in update-workflow.input.ts * ForEvt and ForForm function for aiPhoneCallManager * chore: add support for form workflows on api v2 * fixup! chore: add support for form workflows on api v2 * use only repository functions in update handler * move all prisma queries from list.handler * review suggestions * chore: handle workflows api v2 * chore: handle workflows api v2, split in 2 endpoints * fix workflow step creation * remove connect agent and fixes types * add type to workflow * chore: use workflow type in apiv2 WorkflowsOutputService * update worklfow type on update * chore: use workflow type in apiv2 WorkflowsOutputService * fix template body for torm trigger * some UI fixes for email subject/body * resetting email body when changing form triggers * use type field to query workflows * clean up all old active on values * remove responseId from all funciton calls * remove undefined from updateTemplate * refactor: split routing form and event-type workflows code * refactor: split routing form and event-type workflows code * fix template text when adding action * chore: don't rename WorkflowActivationDto to avoid ci blocking * refine update schedule to use only allowed actions * fix type error * don't allow whatsapp action with form trigger * fix type error * return early if activeOn array is empty * fix: from step type in BaseFormWorkflowStepDto * fixup! fix: from step type in BaseFormWorkflowStepDto * api v2 updates * move all prisma calls to repository (service/workflows.ts) * use FORM_TRIGGER_WORKFLOW_EVENTS for form queries * use userRepository * use FORM_TRIGGER_WORKFLOW_EVENTS in isFormTrigger * code clean up * code clean up * use repository functions in formSubmissionValidation.ts * remove action check in update handler * add back trpc import * fix agent repository functions * add SMS actions to allowed form action constants * remove unsued import * fixes for offset api v2 * add missing responseId * fix failing test * fix failing test * remove unused imports * chore: handle sms step action for form worklfow in dtos --------- Co-authored-by: CarinaWolli <wollencarina@gmail.com> Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Co-authored-by: Benny Joo <sldisek783@gmail.com> Co-authored-by: cal.com <morgan@cal.com> Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
3 tasks
devin-ai-integration bot
pushed a commit
that referenced
this pull request
Mar 13, 2026
… leak tests - Item 3: Add 7 comprehensive delegation auth integration tests covering JWT creation params, email cleaning, fallback scenarios, and error handling - Item 7: Document why virtual mocks are necessary in all test files (workspace packages with DB dependencies cannot resolve in Jest) - Cubic #1: Document getCalendarsForConnection caching and upstream limitation - Cubic #2+#3: Make credential key leak tests non-vacuous by including actual key fields in mocks and verifying they don't leak - Remove unused BadRequestException import from freebusy service
Ryukemeister
pushed a commit
that referenced
this pull request
Mar 18, 2026
…reebusy, and list connections (#28387) * feat(unified-cal): connection-based unified calendar API with CRUD, freebusy, and list connections - New GET /v2/calendars/connections endpoint returning all calendar connections with connectionId - Connection-scoped CRUD: GET/POST/PATCH/DELETE /v2/calendars/connections/{connectionId}/events/* - Connection-scoped free/busy: GET /v2/calendars/connections/{connectionId}/freebusy - Legacy calendar-type endpoints: GET/POST/DELETE /v2/calendars/{calendar}/events, GET /{calendar}/freebusy - Backward compat: dual @patch decorators for singular /event/ (deprecated) and plural /events/ - ConnectedCalendarEntry interface to eliminate inline type annotations - DRY service layer with shared private helpers (listEventsWithClient, createEventWithClient, etc.) - Input validation: @isdefined() on start/end, @IsTimeZone() on timezone fields, cross-field to >= from validation - All-day event support: Google Calendar date-only events converted to midnight UTC - New findCredentialByIdAndUserId method in CredentialsRepository for connection-scoped lookups * style: apply biome formatting to unified calendar API files * fix: use @IsTimeZone() validator for timeZone field in CreateEventDateTimeWithZone * fix: add delegation auth support, extract freebusy service layer - Comment 3: getCalendarClientForUser and getCalendarClientByCredentialId now use getAuthorizedCalendarInstance with delegated-auth fallback instead of requiring credential.key directly. Added findCredentialWithDelegationByTypeAndUserId and expanded findCredentialByIdAndUserId to include delegationCredentialId. - Comment 5: Extracted freebusy and connections logic from controller into UnifiedCalendarsFreebusyService, keeping the controller thin (HTTP-only). Moved ConnectedCalendarEntry type and INTEGRATION_TYPE_TO_API mapping into the service layer. - Biome auto-formatting applied to touched files. * test: add unit and integration tests for unified calendar API - GoogleCalendarService: 30 tests covering delegation auth, client creation, CRUD - UnifiedCalendarsFreebusyService: 21 tests covering connections, busy times, filtering - CalUnifiedCalendarsController: 31 tests covering all endpoints (connection-scoped + legacy) - Pipe specs: 37 existing tests continue to pass Total: 98 tests across 5 suites * fix: address Devin Review feedback - fix JSDoc and validator pattern - Fix incorrect JSDoc on listEventsForUser (all-day events ARE included, not skipped) - Fix IsAfterFrom validator to return false instead of throwing BadRequestException (preserves standard ValidationPipe error format) * fix: revert IsAfterFrom to throw BadRequestException per team convention Cubic AI (confidence 9/10, team feedback): validators should throw BadRequestException to preserve the API's standard bad-request response structure, per team convention. * fix: add calendarId query param to createConnectionEvent for API consistency All other connection-scoped endpoints accept calendarId; this was the only one hardcoding 'primary'. Added @apiquery decorator and @query parameter with ?? 'primary' fallback, plus a test for custom calendarId. * Update apps/api/v2/src/modules/cal-unified-calendars/controllers/cal-unified-calendars.controller.ts Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Revert "Update apps/api/v2/src/modules/cal-unified-calendars/controllers/cal-unified-calendars.controller.ts" This reverts commit e18e462. * feat: enhance calendar service with connection-specific methods and improve API documentation * test: complete delegation auth tests, document virtual mocks, fix key leak tests - Item 3: Add 7 comprehensive delegation auth integration tests covering JWT creation params, email cleaning, fallback scenarios, and error handling - Item 7: Document why virtual mocks are necessary in all test files (workspace packages with DB dependencies cannot resolve in Jest) - Cubic #1: Document getCalendarsForConnection caching and upstream limitation - Cubic #2+#3: Make credential key leak tests non-vacuous by including actual key fields in mocks and verifying they don't leak - Remove unused BadRequestException import from freebusy service * fix: add defense-in-depth key stripping in listConnections controller Controller now destructures only { connectionId, type, email } from each connection before returning, so credential.key can never leak even if the service layer has a future regression. Test updated to verify stripping. * feat: add unified calendar API endpoints for connections and events management * fix: add try/catch error handling to CRUD helper methods Wrap Google Calendar API calls in listEventsWithClient, createEventWithClient, getEventWithClient, updateEventWithClient, and deleteEventWithClient with try/catch blocks matching the legacy getEventDetails/updateEventDetails pattern. This ensures proper NestJS exceptions (NotFoundException, BadRequestException) are returned instead of raw 500 errors when the Google API throws. * fix: map Google API errors to correct HTTP status codes Replace blanket NotFoundException/BadRequestException in CRUD catch blocks with mapGoogleApiError() that inspects the GaxiosError status code and returns the appropriate NestJS exception (404→NotFoundException, 401/403→UnauthorizedException, 400→BadRequestException, else→500). * fix: preserve upstream Google API status codes in error mapping Separate 403 (ForbiddenException) from 401 (UnauthorizedException) and add 429 rate-limit handling. This ensures permission-denied and throttling errors are not misreported to API clients. * fix: distinguish Google quota/rate-limit 403 from permission 403 Check GaxiosError reason field for rateLimitExceeded, userRateLimitExceeded, and dailyLimitExceeded before mapping 403 to ForbiddenException. Quota errors are now correctly mapped to 429 (retriable) instead. * fix: keep dailyLimitExceeded as 403 (non-retriable quota exhaustion) dailyLimitExceeded is a daily quota cap, not transient throttling. Only rateLimitExceeded and userRateLimitExceeded are remapped to 429. * fix: add missing @apiquery decorators for calendarId on get/update/delete endpoints getConnectionEvent, updateConnectionEvent, and deleteConnectionEvent were missing @apiquery({ name: 'calendarId', required: false }) which caused OpenAPI spec to incorrectly mark calendarId as required. * ci: retry flaky vitest worker test * fix: update calendarId query parameter to be optional in OpenAPI specification * fix: swap dual decorator order so plural /events/ path appears in OpenAPI spec NestJS Swagger only picks up the first HTTP method decorator. Swapping the order ensures the preferred plural path (/events/:eventUid) is generated in the OpenAPI spec, while the deprecated singular path (/event/:eventUid) still works at runtime. * fix: split dual decorators into separate methods so both paths appear in OpenAPI spec NestJS Swagger only picks up the first HTTP method decorator per handler. Split getCalendarEventDetails and updateCalendarEvent into separate methods for the singular /event/ (deprecated) and plural /events/ paths, each delegating to a shared private helper. Both routes now appear in the generated OpenAPI spec. * fix: update openapi.json with split dual-decorator paths for GET/PATCH event endpoints * fix: mapGoogleApiError - coerce string code to number and read errors from response.data * fix: mapGoogleApiError - guard against NaN from non-numeric error codes * fix: use read replica for findCredentialWithDelegationByTypeAndUserId query * refactor: address review comments - UnifiedCalendarService, ParseConnectionIdPipe, thin controller - Comment 70 (Ryukemeister): Remove 'what' JSDoc from calendars.service.ts - Comment 71 (Ryukemeister): Use array syntax for dual paths instead of separate methods - Comments 73-78 (ThyMinimalDev): Create ParseConnectionIdPipe for connectionId validation - Comments 79-84 (ThyMinimalDev): Create UnifiedCalendarService with strategy pattern - Comment 85 (ThyMinimalDev): Move getConnections from freebusy to UnifiedCalendarService - Controller now only handles HTTP concerns, delegates all logic to UnifiedCalendarService - Updated all test specs to match refactored architecture * chore: regenerate openapi.json after controller refactor to array syntax paths --------- Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
devin-ai-integration bot
added a commit
that referenced
this pull request
Mar 21, 2026
…eturning null - Replace username interpolation in log message with generic text (Cubic violation #2, confidence 9/10) - On P2002, fetch the existing user from DB and return it with membership data instead of returning null, which was dropping users from org setup on retries (Cubic violation #3, confidence 9/10) Co-Authored-By: bot_apk <apk@cognition.ai>
7 tasks
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.
loadingwas false, causing availableTimes to be rendered whilst hidden. Then promptly removed when loading started, then re-added after load complete. This also was throwing missing key in the list item, which after fixing, was throwing duplicate key errors as all availableTimes were rendered with {time} set to"invalid date".