* fix: Use WEBAPP_URL_FOR_OAUTH to be able to use http://localhost:3000
for local testing
* In case of JSON.parse crash that could happen if zoom reponsed with xml
* Fix cases where auto_recording and default_password_for_scheduled_meetings could be nullish
* perf: optimize slot conflict checking from O(n²) to O(n log n)
- Replace nested mapping with pre-sorted busy slots for faster lookups
- Use early termination when busy slots are sorted by start time
- Maintain exact same interface and behavior as original checkForConflicts
- All existing tests pass, preserving edge case handling
- Reduces complexity from O(available slots × busy slots) to O(n log n)
Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>
* refactor: move O(n log n) optimization to checkForConflicts function
- Replace inline optimization with optimized checkForConflicts function
- Maintain same performance while improving code architecture
- Avoid duplication of conflict checking logic
- Keep all existing interfaces and behavior unchanged
Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>
* test: add comprehensive unit tests for checkForConflicts function
- Add 20 additional test cases covering edge cases and boundary conditions
- Test multiple busy periods scenarios and complex overlaps
- Comprehensive currentSeats handling scenarios
- Timezone and cross-day boundary testing
- Performance testing with large datasets
- Fix invalid date generation in test data that was causing NaN conflicts
- Achieve near 100% coverage of all conflict scenarios documented in function comments
- Verify behavioral equivalence between original O(n²) and optimized O(n log n) implementations
Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>
* Simple, safe performance tweak
* Explicitly define the input of busy to be either Date or Dayjs, not string
* EventBusyDate must ALWAYS be a type that supports valueOf
* Revert "EventBusyDate must ALWAYS be a type that supports valueOf"
This reverts commit 35b572266219d64c22db3c3e24b0cb6ca7a901a6.
* Revert "Explicitly define the input of busy to be either Date or Dayjs, not string"
This reverts commit 902f29708e4b7990a4e5e2865cab2f18ab3e44f0.
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* only check first slot
* skip test for second slot availability check
* fixing tests in handleNewRecurringBooking.test.ts
* skip test
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* Add `rerouting` to `AssignmentReasonRecorder`
* Pass session email as `rescheduledBy`
* Write reassign reason
* Edit message
* Use `routingFormRoute` when rerouting
* Pass isRerouting & reroutedByEmail to `routingFormRoute` method
* Type fix
* Fix test
* Fix test
* Fix test
* Type fix
* Refactor to use UserRepository
* Show rerouted by email
* Replace isReroutingCase
* Fix rescheduledBy for new tab reschduling
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
* feat: add field type change warning dialog to routing forms
- Add FieldTypeChangeWarningDialog component to prevent field type changes
- Show informative dialog explaining data integrity concerns when users try to change field types
- Provide alternative suggestion to create new field instead of changing existing one
- Add i18n translations for dialog messages
- Integrate dialog into routing form edit page field type selector
- Bypass Teams plan restriction for testing routing forms functionality
- Fix ESLint error by properly handling scrollIntoView in embed mode with disable comment
Prevents data integrity issues by blocking field type changes (e.g. multiselect → text)
that could make existing form responses incompatible and cause data loss.
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fix: make field type dialog more selective to allow legitimate changes during form creation
- Only show warning dialog when there's actual data integrity risk
- Allow field type changes for new fields or fields without meaningful labels
- Fixes E2E test timeout by not blocking legitimate field type changes
- Maintains data protection for existing fields with real data
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fix: complete field type dialog implementation with translations and component
- Add FieldTypeChangeWarningDialog component with proper i18n support
- Add all required translation strings for dialog messages
- Ensure dialog only shows for actual data integrity risks
- Allow legitimate field type changes during form creation
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* simplify field type dialog: one button, button replaces SelectField, remove forms page changes
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* use Button component
* feat: restore SelectField with conditional dialog for field type changes
- Restore original SelectField dropdown to allow users to see available field types
- Add conditional logic to show dialog only when different type is selected AND form has responses
- Prevent field type changes by not calling onChange when dialog is shown
- Pass hasFormResponses prop from FormEdit to Field component
- Maintain data integrity while providing clear user guidance
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* controlled value
* convert dialog to tooltip
* Update common.json
* remove unused texts
* allow type changing for new field
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <hey@eunjae.dev>
* feat: allow setting DAILY VIDEO region via env
* add comments
* Cleaner approach to Daily video region type assertion
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Restart form if admin is not org admin
* Show pricing is admin and hosted
* Only show billing specific fields when enabled
* Create user onboarding only if valid valid license when self hosting
* Reset store when org creation is completed
* Create schema for trpc input when creating an org
* Add `organization.createSelfHosted` trpc endpoint
* `createOrganizationFromOnboarding` do not require stripe data
* Create organization without billing if self-hosted admin
* Update organizationOnboarding record as completed
* Handle updating subscription for self hosters
* Refactor `isBillingEnabled` to store
* Type fix
* Fix admin org creation for hosted
* Hide UI from admin
* Add tests
* fix: Fix LicenseKeySingleton mocking in organization tests
- Add proper vi.mock() module-level mocking for LicenseKeySingleton
- Replace incorrect casting syntax with vi.mocked() approach
- Add LicenseKeySingleton mock to hosted tests in intentToCreateOrg.handler.test.ts
- Fix IS_SELF_HOSTED mocking for hosted vs self-hosted test scenarios
- All organization creation tests now pass locally
Co-Authored-By: joe@cal.com <joe@cal.com>
* Fix tests
* Fix tests
* Test fixes
* Type fix
* Type fix
* Type fix
* Update packages/features/ee/organizations/lib/server/createOrganizationFromOnboarding.test.ts
Fix typo
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
* fix: Add IS_SELF_HOSTED mocking for E2E organization creation tests
Co-Authored-By: joe@cal.com <joe@cal.com>
* Fix E2E test
* Address feedback
* Type fix
* Fix e2e tests
* Remove unused code
* Small fixes
* fix unit tests
* review fixes
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: joe@cal.com <joe@cal.com>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
* refactor(embed-core): update theme class names for consistency
Standardize theme class names to use 'cal-element-embed-dark' and 'cal-element-embed-light' to improve maintainability and clarity.
* refactor(embed-core): replace theme class strings with constants
* fix theme not changing
---------
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
* fix creating user balance
* fix org check if teamId is given
* adjust hasAvailableCredits function
* improve comments
* fix creditBalance.create
* adjust test
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* feat: add integration test for RoutingFormResponseField triggers
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* refactor: remove changing field types test case
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <hey@eunjae.dev>
* [CAL-5926] Add 'onTimeslotsLoaded' prop to 'Booker' atom
* Added 'onTimeslotsLoaded' to BookerPlatformWrapperAtomProps
* fixed type error and added onTimeslotsLoaded prop to doc
---------
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
* add smsSegments to creditExpenseLog
* add download button
* download only data from selected month
* improvements
* improve design
* use repository function
* add tests for credit repository
* fix type error
* fix unit test
* fix type error
* fix unit test
* code clean up
* fix skeleton loader
* remove empty mt
* code clean up
* move csv headers out of function
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* feat: add attendee data to CSV export with seated event support
- Add up to 3 attendees to CSV export in 'name (email)' format
- Use booking.seatsReferences for seated events, booking.attendees for regular events
- Maintain backward compatibility with existing bookerEmail/bookerName fields
- Add attendee1, attendee2, attendee3 columns to CSV output
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fix: restore missing comment as requested in PR review
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* Update packages/features/insights/server/events.ts
* feat: remove duplicate booker columns from CSV export
- Remove bookerEmail and bookerName columns as they duplicate attendee data
- Remove noShowGuest field which was based on booker data
- Remove unused booker field from bookingMap
- Keep only attendee1, attendee2, attendee3 columns with name (email) format
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* feat: restore noShowGuest field to CSV export
- Add noShowGuest field mapping from first attendee's noShow property
- Maintain existing attendee1, attendee2, attendee3 columns
- Default to false when no attendees exist
- Works with both seated events and regular events
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* rename column
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <hey@eunjae.dev>
* Add unit tests to routing flow
* fix: resolve TypeScript errors in routing forms test files
- Fix mock form structure to match TargetRoutingFormForResponse type
- Add missing properties like selectText, deleted, updatedById to form fields
- Correct route action types to use valid RouteActionType enum values
- Fix response objects to include required label property
- Update mock return values for findTeamMembersMatchingAttributeLogic
- Use proper type assertions for complex route objects
Co-Authored-By: hariom@cal.com <hariom@cal.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: hariom@cal.com <hariom@cal.com>
* Add queued booking response table
* Create `RoutingFormResponseRepository`
* Pass `queueFormResponse` param
* Queue up form response if param is passed
* Forward queued form response parma to booker
* Pass `queuedFormResponse` from booker to `handleNewBooking`
* Write queued routing form response
* Type fixes
* Clean up
* Allow dry run to work which wont have any QueuedFormResponse or FormResponse
* Support passing the time when the modal was actually shown to the user and consider that time as the time of form submission
* fix ts error
* Queue -> Response through separate endpoint that would be triggered by
embed
* Make queueResponseId a non-guessable uid
* Change queueFormResponse query param
* fix ts error
* Support useQueuedResponse to record new response data
* revert handleNewBooking
* Remove dead code formResponse
* Refactor use repository
* Unify migration files
* refactor: moved api endpoint to app dir
Signed-off-by: Omar López <zomars@me.com>
* Update formResponse.ts
* Refactor use-queued-response for test
* Add tests
* Fix ts error and unit test. recordFormResponse cant return nullish response
* fix schema
* feat: Support full reuse of preloaded iframe (#21803)
* feat: support updating cal video settings in API v2 (#21784)
* feat: support updating cal video settings in API v2
* chore: update descriptio
* feat: support create event type
* test: add test for updating event type
* test: add test for create event type
* chore: undo openapi
* chore: bump libraries
* Revert "chore: bump libraries"
This reverts commit bdf36d09b021fc531497a7b7ea66ab9c52b7d136.
* chore: bump libraries
---------
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
* fix tests and ts
* Fix tests
* wip-useQueuedResponseEndpoint
* Add one more test
* Change queueFormResponse query param
* wip
* Support useQueuedResponse to record new response data
* Use the update useQueuedResponse endpoint
* self-review addressed
* Use queuedResponse if available in slots/utils
* Add documentation
* Remove use-queued-response from critical-path
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
* Update schema.prisma
* refactor: renamed to avoid react hooks confusion
Signed-off-by: Omar López <zomars@me.com>
---------
Signed-off-by: Omar López <zomars@me.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* feat: optimize Prisma queries by replacing findFirst with findUnique where applicable
- Replace findFirst/findFirstOrThrow with findUnique/findUniqueOrThrow for queries using unique constraints
- Maintain existing functionality and error handling behavior
- Focus on queries using primary keys and unique index fields from schema
- Revert problematic changes that caused test failures to maintain stability
Co-Authored-By: benny@cal.com <benny@cal.com>
* revert: exclude API files from Prisma query optimizations per user request
- Reverted all 55 API-related files to their original state
- Kept all non-API Prisma query optimizations intact
- API files include apps/api/v1, apps/api/v2, apps/web/app/api, and packages/app-store/*/api
- Non-API optimizations remain for packages/lib, packages/features, apps/web (non-api), etc.
Co-Authored-By: benny@cal.com <benny@cal.com>
* feat: optimize membership query in attributeUtils to use findUnique with userId_teamId constraint
Co-Authored-By: benny@cal.com <benny@cal.com>
* revert: exclude test files from Prisma query optimizations per user request
Co-Authored-By: benny@cal.com <benny@cal.com>
* revert: revert attributeUtils.ts to use findFirst for test compatibility
Co-Authored-By: benny@cal.com <benny@cal.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: benny@cal.com <benny@cal.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* fix: getBookings for team admins within orgs
* fixup! fix: getBookings for team admins within orgs
* chore: update getUserIdsAndEmailsWhereUserIsAdminOrOwner and remove unused orgId
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* feat - Restrict same email to create more than 'n' active bookings at a time
* updated checkbookerbookinglimit function
* type fix
* minor change
* import fix
* minor fixes
* back to null on disable
* back
* type check
* managed edge cases
* chore: name changes
* name changes
* fix
* minor change
* changed name
* use default value for maxactivebookingsperbooker, and some minor changes
* disabling bookerbooking limit for recurring event
* disabling bookerbooking limit for recurring event
* type fix
* ui fix and backend eventtype update check
* Add `maxActiveBookingPerBookerOfferReschedule` to schema
* Create `MaxActiveBookingsPerBookerController` and offer reschedule option
* Add offer reschedule to event type form data
* Pass data through to HttpError
* When checking max bookings, return last booking info if applicable
* removed unused code
* minor changes
* update validation
* chore
* Do not check booking limits if rescheduling
* Add data for reschedule
* Add reschedule specific error code
* On maximum booking error, write to booker store reschedule params
* Add translations for error codes
* Write to error message previous booking time
* minor fix
* Write to error message previous booking time
* Type fixes
* Clean up comment
* Refactor eventType update errors
* Typo fix
* Type fix
* Type fix
* Type fix
* Fix test
* Fix test
* Add migration
* Addressed feedback and missed merges
---------
Co-authored-by: romit <romitgabani@icloud.com>
* feat - Restrict same email to create more than 'n' active bookings at a time
* updated checkbookerbookinglimit function
* type fix
* minor change
* import fix
* minor fixes
* back to null on disable
* back
* type check
* managed edge cases
* chore: name changes
* name changes
* fix
* minor change
* changed name
* use default value for maxactivebookingsperbooker, and some minor changes
* disabling bookerbooking limit for recurring event
* disabling bookerbooking limit for recurring event
* type fix
* ui fix and backend eventtype update check
* removed unused code
* minor changes
* update validation
* chore
* Do not check booking limits if rescheduling
* minor fix
* Refactor eventType update errors
* Typo fix
---------
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
* feat: add api v2 endpoints for cal video
* feat: add endpoint for fetching transcripts
* chore: fetch only references
* feat: add cal video and transcript
* chore: undp open api
* chore: move it to service
* chore: bump libraries
---------
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
* feat: support updating cal video settings in API v2
* chore: update descriptio
* feat: support create event type
* test: add test for updating event type
* test: add test for create event type
* chore: undo openapi
* chore: bump libraries
* Revert "chore: bump libraries"
This reverts commit bdf36d09b021fc531497a7b7ea66ab9c52b7d136.
* chore: bump libraries
---------
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
* feat: add API endpoint to fetch Google Calendar meeting details and metrics
* refactor: rename eventId to eventUid and update calendar event details endpoint
* feat: implement Google Calendar service account delegation for event details
* refactor: simplify Google Calendar event response
* refactor: simplify calendar event details endpoint
* feat: add calendar event details endpoint with schema and controller implementation
* chore: reset platform libraries package version to 0.0.0
* refactor: migrate calendar event details to unified calendars module
* Update gcal.service.ts
* refactor: update calendar event schema with title and locations fields replacing summary and conferenceData
* feat: update calendar event source to use enum type for better validation
* update api description
* refactor: make Google Calendar service methods private
* refactor: remove location field from unified calendar event output
* fix: update Google Calendar event location type property to match unified schema
* feat: add CalendarEventStatus enum and map Google Calendar statuses to standardized values
* docs: add property descriptions to calendar event schema and remove organizer field
* fix: change calendar event locations type from null to empty array in unified calendar API
* feat: make calendar source field required
* refactor: replace organizer field with hosts array in Google calendar event mapping
* feat: enhance calendar event location API documentation with detailed property descriptions
* feat: add calendar event details endpoint documentation
* fix: typo
* docs: update calendar event details API description to remove reschedule history reference
* refactor: rename uri to url in calendar event location interfaces and mappings
* refactor: improve calendar event response status handling and code organization
* Update get-unified-calendar-event.ts
* update docs
* chore: update @calcom/platform-libraries to version 0.0.215
* feat: split atoms endpoints and add public event type endpoint
* Update ConnectedDestinationCalendars import path across platform/atoms components
* refactor: update BookingResponse import path from platform-libraries to features/bookings
* Move AvailableSlotsType to util.ts and update imports to use GetAvailableSlotsResponse
* Refactor import path for RecurringBookingCreateBody type from libraries to types
* Fix import path for getBookingForReschedule type from platform-libraries to features
* Refactor PublicEventType export location and update import references
* Remove @calcom/platform-libraries dependency from atoms package.json
* chore(deps): update yarn.lock dependencies
* Remove console.log statements and fix indentation in event type hooks
* Migrate event type transformers from platform/libraries to api/v2 directory
* Remove console.log
* Update BookerPlatformWrapper.tsx
* Add script to populate empty team slugs with slugified team names
* Remove vitest imports
* reset platform libraries version
* Remove unused orgId comment from useAtomGetPublicEvent hook params
* Update useApiV2AvailableSlots.ts
* refactor: remove unused exports from lib package index file
* Undo: @SomayChauhan
Add script to populate empty team slugs with slugified team names
* Update booking.tsx
* chore: upgrade @calcom/platform-libraries from 0.0.202 to 0.0.205
* chore: bump @calcom/platform-libraries from 0.0.205 to 0.0.206
* chore: configure babel and jest for node module transpilation in api v2
* fix: type errors
* Revert "chore: configure babel and jest for node module transpilation in api v2"
This reverts commit b2cf172a84fe8953f9497bf6e43874f476fbc04b.
* Update calendars.service.ts
* chore: bump @calcom/platform-libraries from 0.0.208 to 0.0.209
* fix: add proper type definition for calendar busy times to resolve ts-expect-error
* refactor: deprecate v2 old availability endpoints (#21075)
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* chore: publish platform librareis
* feat: add delegation credential fields to calendar service mock
* chore: update @calcom/platform-libraries from 0.0.211 to 0.0.213
* fix: skip failing calendar integration test
* chore: bump @calcom/platform-libraries from 0.0.213 to 0.0.214
* fix: api/v2 build error
* fix: e2e tests
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
- Add utility function for cascading hideBranding logic
- Update all getServerSideProps files to check organization hideBranding as fallback
- Ensure team queries include parent hideBranding data
- Fix hideBranding not working for organization members and teams
Fixes the issue where organization-level branding settings were not
being applied to user and team event pages when the direct entity
didn't have hideBranding enabled.
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* Create `VerificationTokenRepository`
* Update the verification token expiry when resending the invite
* Handle error
* Fix import
* Get past unique constraint
* Update packages/trpc/server/routers/viewer/teams/resendInvitation.handler.ts
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Update packages/lib/server/repository/verificationToken.ts
Update set expiry time
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
* Type fix
* Update how we're fetching the token
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
* Adds onFormStateChange callback on EventTypeSettings atom
* updated docs for event-type
* added watch all form values
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* feat: return team event type hosts username
* docs: team event types hosts username in return
* fix: ignore cancelled and rejected bookings from slot reservation
* fix: dont allow slot to overlap existing active booking
* refactor: remove log
* Add notes to `EventManager.create`
* Create `CalendarServiceEvent`
* Generate calendar description and remove attendees if event is private in `CalendarManager`
* Process event for reschedule method
* Refactor calendar services
* Clean up comment
* Type fixes
* Type fix
* Type fix
* add virta check for anonymizing host
* move to env var
* move env var to constants
* fix: filter empty string
* fix test
* fix test
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* fix(email): hide organizer info on rescheduled events
* hide organizer email on bookings-single-view
* replace organizer email with name
* sanitize previous booking only
* clean up code
* fix dumb error
* move away from merging twice
* move to use loggedIn Router directly
* fix router outputs types
* fix mocks in create button with teasm tests
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Fix: 'Hide from profile' toggle background not sized correctly on mobile
* fix: changed padding back to original
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* add route filter to inject script
* update middleware for pathname as Referer might not work all time
* move d to (booking-page-wrapper) instead of route filter and change in middleware
* add e2e tests
* feat: store cal video recording on s3
* feat: create new route to fetch download link
* tests: add unit test
* fix: unit test
* fix: type error
* chore: add env var
* fix: open in new tab
* fix: type err
* chore: update test
* fix: import
* chore: use cal video recording token secret
---------
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
* fix: Cannot read properties of undefined (reading 'id')
* docs: managed users dont have cal.com page
* docs: reassign works only for round robin bookings
* refactor: put OAuthClientWebhooksController behind ApiAuthGuard
* fix: tests
* fix: typo
* charge free users for SMS to CA an US
* allow custom template for free users
* fix backend + some UI fixes
* make text editable
* rename back to needsTeamsUpgrade
* add twilio webhook handler tests
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* fix google-meet being used instead of Default Cal Video preference if
set
* Review addressed
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* refactor(e2e): use filter helper methods instead of raw selectors
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* refactor(e2e): rename selectFilter to addFilter and update all usages
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <hey@eunjae.dev>
* fix: implement Airbnb-style date selection in DateRangePicker
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fix: add behavior for clicking on start/end date in DateRangePicker
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <hey@eunjae.dev>
* test: Add unit tests for buildBaseWhereCondition function
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: Export buildBaseWhereCondition function instead of copying it
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: Remove implementation detail checks from tests
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* test: Fix tests to match actual function behavior
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* test: Fix test issues with buildBaseWhereCondition
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* test: Update tests to match actual function behavior
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: Address security issues in buildBaseWhereCondition function
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: Simplify buildBaseWhereCondition function
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: Simplify code and remove isEmptyResponse property
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: Use array of conditions approach for buildBaseWhereCondition
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: Make buildBaseWhereCondition implementation consistent and update tests
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: Fix incorrect usage of buildBaseWhereCondition function
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* chore: Revert yarn.lock changes
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: Comment out non-existent Sentry API method to fix type error
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* Revert "fix: Comment out non-existent Sentry API method to fix type error"
This reverts commit 44c21a7396a518c63047b33967cd8af7e6e4f268.
* remove unnecessary if-statement
* fix: replace bookingTimeStatus with bookingTimeStatusDenormalized
* change column
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <eunjae@cal.com>
* fix deleting reminders
* schedule reminders if iffy is disabled
* fix unit test
* clean up code
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* don't schedule past reminders
* add test
* fix dates in tests
* add early return
* fix sms test
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* remove members page
* refactor to server fetch
* same for /members
* use server fetches for all queires
* fix
* add skeletons
* refactor
* fix loading page
* fix
* fix type checks
* fix details
* refactor platform members page
* inital pbac setup
* fix tests
* docs intro
* more docs
* add comments in docs
* revert pr_todo
* update to use action + custom as defaults
* use enums
* move to change user role + multi check
* add beforeEach import
* docs: add PERMISSIONS.md documenting team/organization role usages
Co-Authored-By: sean@cal.com <sean@cal.com>
* docs: add permission string alternatives for helper functions
Co-Authored-By: sean@cal.com <sean@cal.com>
* feat: enhance permission registry and default role permissions
Co-Authored-By: sean@cal.com <sean@cal.com>
* add routers
* add hooks + rsc. Also adjsuted test to use prismock
* make hooks type safe + add some tests
* add a permission context - trpc router to populate context
* update docs
* explore global and default roles member,admin,owner
* fix tests
* use kysley and abstract uril
* tidy up
* update trpc to use pbac route in endpoint + distinct on teamId
* make transform util
* remove role service dependancy from permission check class
* checkTeamId fall back to orgId if team is parent
* todos
* remove manual migrations to launch softly
* address feedback
* move permission checks to a repo
* move role service database calls to repo. improve mocks
* update tests to have describe import
* fix types
* remove router that is not used to pass build
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* feature eventType specific language or bookingPage language
* chore
* fix type checks
* chore
* chore: remove log
* improvement: this updates in DatePicker is not required with context provider method
* added e2e tests for InterfaceLanguage feature
* corrected prev merge conflict issues
* update to align with hooks usage pattern
* chore
* unrelated auto-formatting changes
* unrelated auto-formatting changes
* unrelated auto-formatting changes
* update to affect interfaceLanguage on success page
* undone prettier changes
* update test for success page translation
* chore
* return null from memo
* fix typecheck error due to atom imports in useLocale
* set default interfaceLanguage as null
* updated to use null instead of constant
* enhancements
* fix latest unit test, use prop instead of useSession hook
* fix build issue
* chore
* fix atom build issue
* fix unit test with reqd mock
* update to use server i18n rendering
* nit
* Move import localeOptions to EventSetupTabWebWrapper
* make sure we only display interface language option in web app
* using customI18nProvider
---------
Co-authored-by: amrit <iamamrit27@gmail.com>
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
Co-authored-by: Tushar <tusharbhatt0135@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Ryukemeister <sahalrajiv6900@gmail.com>
Co-authored-by: Rajiv Sahal <sahalrajiv-extc@atharvacoe.ac.in>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* fix: ensure button text remains visible on hover in forgot password page
Before: Button text turned black on hover, blending with the dark background.
After: Added 'enabled:hover:text-white' to maintain readability.
* Re-update forgot-password-view.tsx
* Update globals.css brand-text
* Update globals.css --cal-brand-text: white
* Reverted globals.css update
* Update forgot-password-view.tsx , change brand-text color
change "--cal-brand-text":
white to Black
* perf: Better perf by going event type first w/o booking
* minor fixup
* Use an IN with children instead of an OR with parent
* Turns out we already had a variable with the right values
* Make sure the right event type is used even for children
* few fixes
* Full select is needed to keep typings working
* Fix last remaining issue
* fix: reserving first seated booking slot
* fix: input type in useReserveSlot
* fix: handleReserveSlot submit bookingUid to api
* null -> undefined
* dont touch web app
* test: Add unit tests for buildBaseWhereCondition function
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: Export buildBaseWhereCondition function instead of copying it
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: Remove implementation detail checks from tests
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* test: Fix tests to match actual function behavior
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* test: Fix test issues with buildBaseWhereCondition
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* test: Update tests to match actual function behavior
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: Address security issues in buildBaseWhereCondition function
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: Simplify buildBaseWhereCondition function
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: Simplify code and remove isEmptyResponse property
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: Use array of conditions approach for buildBaseWhereCondition
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: Make buildBaseWhereCondition implementation consistent and update tests
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: Fix incorrect usage of buildBaseWhereCondition function
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* chore: Revert yarn.lock changes
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: Comment out non-existent Sentry API method to fix type error
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* Revert "fix: Comment out non-existent Sentry API method to fix type error"
This reverts commit 44c21a7396a518c63047b33967cd8af7e6e4f268.
* remove unnecessary if-statement
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <eunjae@cal.com>
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
* Allow zero routingFormResponseId
* fix: conditionally validate routingFormResponseId to allow 0 only for dry run operations
Co-Authored-By: hariom@cal.com <hariom@cal.com>
* fix: pass _isDryRun parameter to API v2 available endpoint
Co-Authored-By: hariom@cal.com <hariom@cal.com>
* fix runtime error and improve message
* Add e2e test to verify the constraint works
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: hariom@cal.com <hariom@cal.com>
* feat: add denormalized table for RoutingFormResponse
* WIP
* improve
* update schema
* update schema
* improvement
* fix type of bookingStatus
* cascading DELETE
* split update trigger
* denormalize fields into a separate table
* error handling
* address feedback
* fix
* fix constraints and relations
* delete rows when rows are deleted in the joined tables
* add tests and make booking nullable in RoutingFormResponseDenormalized
* add tests
* update test
* use e2e tests instead
* fix type error
* address feedback
* move e2e to integration test
* add missing tests
* move index migration to another file
* clean up migrations
* Remove unused return statement
* Fix return from fn instead of continuing the loop
* Ensure userId is set for existing records on update
* ensure that serviceAccountKey is only retrieved whenb assked
* fix: PATCH, POST event-types Address location must have an address
* fix: GET event-types Address location must have an address
* fix: POST /v2/bookings Address location must have an address
* refactor: GET /v2/slots Invalid time range given.
* fix: POST v2/event-types Cannot read properties of null (reading 'type')
* fix: POST /v2/bookings/:bookingUid/mark-absent Failed to update no-show status
* fix: use actual event duration mins for templated names
* fix: use actual event duration mins for templated event name
* fix: use actual event duration for calendar links
* fix: use actual event duration for round robin reassignment
* chore: rm console logs
* fix: use actual event duration for emails and rr reassignment
* chore: remove unnecessary dayjs calls
---------
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* Add credits section to billing
* create seperate router for credits
* add stripe checkout session
* schema changes + code improvements
* rename to creditBalance
* custom quantify input with error message
* add checkout session completed webhook endpoint
* fix typo
* UI fixes
* add payCredits handler
* add error toast message
* allow scheduling sms up as close to 15 minutes in the future
* schedule at most 2 hours in advance
* webhook to pay for sent sms
* continued work on twilio callback
* code clean up
* further implementation for credit handling
* add migration
* object as param for scheduleSMS
* object as param for sendSMS
* fix TrpcSessionUser imports
* fix imports
* add db changes
* add cron job for price setting
* twilio status callback to create expense log
* remove unused code
* set up low credit balance email
* fixes for buying credits
* fixes in api/twilio/webhook
* add test to save credits to credits balance
* fix typos
* add new helper function chargeCredits
* expand twilioProvider
* fix type errors
* adjust tests
* type errors
* clean up
* clean up
* fix subscription active check
* remove some user/org related code
* more changes to remove user/org support
* send emails seperatly to admins
* fixes for team billing page
* fix stripe success url
* fixes to creating expense log
* email imrovements and more
* get monthly team price from stripe
* fix import
* fix monthly credits calculation
* finsih low credit balance warning email
* credit balance limit reached email
* create CreditService
* cancel SMS and send as email instead
* add messageDispatcher
* fix type error
* fix type error
* fix type error
* fix import
* fix unit test
* clean up twilioProvider
* clean up chckSmsPrices/route
* add missing translations
* add skeleton loader
* add admin check to get handler
* code clean up + fixes
* improve scheduling with fallback
* fix type error
* add bookingUid to handleSendingSMS
* add unit tests for creditService
* add more tests to credit-service.test.ts
* add test for cancelScheduledMessagesAndScheduleEmails
* fix test and type error
* add back resolve
* fix empty resolve
* adjust limitReachedAt logic
* address mrge comment on styling
* add getAdminMembership to repository
* twilio/webhook clean up (feedback)
* feedback - clean up
* remove todo comment
* clean up twilio/webhook
* code clean up
* add use client
* add createOneTimeCheckout to stripe service
* refactor repository pattern
* small fixes + clean up
* fix type error
* add missing import
* fix hasAvailableCredits for user
* force-dynamic
* rename credits to creditBalance
* fix stripe import
* remove not needed code
* fix e2e tests
* improve low balance warning email
* dynamic-import CreditService
* index.ts
* add user logic checkSmsPrices endpoint
* fix e2e tests
* remove dynamic import CreditService
* Revert "remove dynamic import CreditService"
This reverts commit e272978a7ff3fc5a04139e656c9f8d2c84a40dda.
* no need to dynamic-import credit service
* Revert "no need to dynamic-import credit service"
This reverts commit ba5ae488d08979a65fb47b5d0722cda9f45d6ea0.
* fix twilio webhook
* add userId support in checkout.session.completed
* clean up code
* only select id in getAdminMembership
* revert billing/package.json
* fix type checks
* fix type checks
* adjust hasAvailableCredits function
* fixes for checkout sessioned completed
* add UI for user
* fix type errors
* adds requires credits badge
* remove team check from update.handler
* clean up inlcude statements
* fix credit-service tests
* add tests
* fix type errors
* fix type errors
* fix and add tests
* imrove badge
* code clean up
* add reminderScheduler test
* add additional credits as title
* fixes for warningSentAt and limitReachedAt
* mock stripe
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: hbjORbj <sldisek783@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* refactor: rename office365-video to msteams across API and platform code
* Revert "refactor: rename office365-video to msteams across API and platform code"
This reverts commit 7a823ab6aa7ecd739da941d3b315735220bd99de.
* Fix: inconsistency in default location values for create and update event-types
* Add credits section to billing
* create seperate router for credits
* add stripe checkout session
* schema changes + code improvements
* rename to creditBalance
* custom quantify input with error message
* add checkout session completed webhook endpoint
* fix typo
* UI fixes
* add payCredits handler
* add error toast message
* allow scheduling sms up as close to 15 minutes in the future
* schedule at most 2 hours in advance
* webhook to pay for sent sms
* continued work on twilio callback
* code clean up
* further implementation for credit handling
* add migration
* object as param for scheduleSMS
* object as param for sendSMS
* fix TrpcSessionUser imports
* fix imports
* add db changes
* add cron job for price setting
* twilio status callback to create expense log
* remove unused code
* set up low credit balance email
* fixes for buying credits
* fixes in api/twilio/webhook
* add test to save credits to credits balance
* fix typos
* add new helper function chargeCredits
* expand twilioProvider
* fix type errors
* adjust tests
* type errors
* clean up
* clean up
* fix subscription active check
* remove some user/org related code
* more changes to remove user/org support
* send emails seperatly to admins
* fixes for team billing page
* fix stripe success url
* fixes to creating expense log
* email imrovements and more
* get monthly team price from stripe
* fix import
* fix monthly credits calculation
* finsih low credit balance warning email
* credit balance limit reached email
* create CreditService
* cancel SMS and send as email instead
* add messageDispatcher
* fix type error
* fix type error
* fix type error
* fix import
* fix unit test
* clean up twilioProvider
* clean up chckSmsPrices/route
* add missing translations
* add skeleton loader
* add admin check to get handler
* code clean up + fixes
* improve scheduling with fallback
* fix type error
* add bookingUid to handleSendingSMS
* add unit tests for creditService
* add more tests to credit-service.test.ts
* add test for cancelScheduledMessagesAndScheduleEmails
* fix test and type error
* add back resolve
* fix empty resolve
* adjust limitReachedAt logic
* address mrge comment on styling
* add getAdminMembership to repository
* twilio/webhook clean up (feedback)
* feedback - clean up
* remove todo comment
* clean up twilio/webhook
* code clean up
* add use client
* add createOneTimeCheckout to stripe service
* refactor repository pattern
* small fixes + clean up
* fix type error
* add missing import
* fix hasAvailableCredits for user
* force-dynamic
* rename credits to creditBalance
* fix stripe import
* remove not needed code
* fix e2e tests
* improve low balance warning email
* dynamic-import CreditService
* index.ts
* fix e2e tests
* remove dynamic import CreditService
* Revert "remove dynamic import CreditService"
This reverts commit e272978a7ff3fc5a04139e656c9f8d2c84a40dda.
* no need to dynamic-import credit service
* Revert "no need to dynamic-import credit service"
This reverts commit ba5ae488d08979a65fb47b5d0722cda9f45d6ea0.
* only select id in getAdminMembership
* revert billing/package.json
* fix type checks
* fix type checks
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: hbjORbj <sldisek783@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: sentry builds
* Update yarn.lock
* Upgrade Sentry
* Breaking changes
* Discard changes to apps/web/modules/connect-and-join/connect-and-join-view.tsx
* Discard changes to apps/web/modules/signup-view.tsx
* Discard changes to packages/app-store/make/pages/setup/index.tsx
* Discard changes to packages/app-store/zapier/pages/setup/index.tsx
* Discard changes to packages/emails/src/templates/AdminOrganizationNotificationEmail.tsx
* Discard changes to packages/features/eventtypes/components/tabs/apps/EventAppsTab.tsx
* Discard changes to packages/features/eventtypes/components/tabs/assignment/EventTeamAssignmentTab.tsx
* Discard changes to packages/features/eventtypes/components/tabs/webhooks/EventWebhooksTab.tsx
* Discard changes to packages/features/eventtypes/components/tabs/advanced/DisableAllEmailsSetting.tsx
* Discard changes to packages/emails/src/templates/BrokenIntegrationEmail.tsx
* Discard changes to packages/emails/src/templates/OrganizationCreationEmail.tsx
* Discard changes to packages/emails/src/templates/SlugReplacementEmail.tsx
* Discard changes to packages/emails/src/templates/TeamInviteEmail.tsx
* Discard changes to packages/features/bookings/Booker/components/BookEventForm/BookEventForm.tsx
* Discard changes to packages/features/bookings/Booker/components/OutOfOfficeInSlots.tsx
* Discard changes to packages/features/ee/teams/components/MemberInvitationModal.tsx
* Discard changes to packages/features/eventtypes/components/EditWeightsForAllTeamMembers.tsx
* Discard changes to packages/features/eventtypes/components/Locations.tsx
* Discard changes to packages/features/eventtypes/components/dialogs/ManagedEventDialog.tsx
* Discard changes to packages/features/eventtypes/components/tabs/advanced/RequiresConfirmationController.tsx
* Discard changes to packages/features/eventtypes/components/tabs/workflows/EventWorkfowsTab.tsx
* Discard changes to packages/features/settings/BookerLayoutSelector.tsx
* Discard changes to packages/features/settings/outOfOffice/OutOfOfficeEntriesList.tsx
* chore: upgrade dependencies and improve Sentry configuration
- Upgrade @sentry/nextjs to 9.13.0
- Upgrade next.js to 15.3.0
- Upgrade sharp to 0.34.1
- Update Sentry configuration files
- Add Sentry example files for testing
* chore: upgrade dependencies
- Upgrade next.js to 15.3.0
- Upgrade sharp to 0.34.1
* Update next.config.js
* Discard changes to packages/platform/atoms/connect/apple/AppleConnect.tsx
* build(apps/web): enabled Sentry source maps uploading.
* Create sentry-sourcemaps.yml
* fix: buggy skeleton rendering for month view (#20744)
* fix: trigger lingo.dev by removing duplicate value
* fix: buggy skeleton monthly view
* fix: Wrong schedule ID set for child managed event (#20745)
* fix: wrong schule id set for managed event
* Update handleChildrenEventTypes.ts
* feat: v2 book team events using teamSlug & eventTypeSlug (#20585)
* feat: v2 book team events using teamSlug & eventTypeSlug
* fix: tests
* fix: failing e2e test (#20751)
* feat: filter users by assigned attribute options (#20659)
* feat: assigned attributes options base
* feat: assigned attributes options base e2e
* feat: filter assigned options by other assigned options
* feat: filter assigned options by other assigned options
* fixup! feat: filter assigned options by other assigned options
* feat: get org users by assigned attributes
* adding missing input file
* push generated docs
* feat: add filter org users by teamIds
* feat: add filter assigned attribute options by teamIds
* chore; update doc
* chore: remove console log
* chore: minor e2e fix
* chore: minor e2e fix
* chore: improve docs
* fix: assigned options by teamIds + optionIds
* fix: Admin/owner unable to confirm managed bookings (#20743)
* fix: Admin/owner can't confirm managed booking
* Update confirm.handler.ts
* fix: v2 automatic round robin reassign error message (#20755)
* fix: return react fragment from all layout.tsx
* feat: add guards to stripe teams controller (#20540)
* feat: add guards to stripe teams controller
* remove logs and comments
* fix return type status
* refactor: move PlatformSubscription to a dedicated module
* reroute to `organizations/stripe/save` for teams
* fix: type errors
* feat: fixed it for conferencing apps
* feat: Add error handling and fallback URL support in Stripe callback
* Refactor OAuth callback handling and move token validation to service layer
* Add documentation for OAuth callback proxying in conferencing and stripe controllers
* Move OAuthCallbackState type from organizations to stripe service module
* chore: release v5.2.2
* perf: slim down middleware matcher (#20735)
* wip
* wip
* refactor
* add pathname
* fix
* fix: manually construct pathname for metadata functions
Co-Authored-By: benny@cal.com <benny@cal.com>
* fix: add pathname parameter to all metadata functions
Co-Authored-By: benny@cal.com <benny@cal.com>
* fix: add pathname parameter to remaining metadata functions
Co-Authored-By: benny@cal.com <benny@cal.com>
* fix
* fix
* fix type checks
* Refactor
* fix
* fix
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: benny@cal.com <benny@cal.com>
* Skip flakey tests (#20761)
* Write UTM params to Salesforce (#20759)
* chore: Add consent message when SMS workflows are related (#20741)
* Add consent message
* Add consent message if using SMS workflow
* Skip flakey tests
* Revert "Skip flakey tests"
This reverts commit 3bd6f3fd71469df4dbd67b69b8e17011657df9d8.
* chore: Remove verbose logging (#20732)
* fix: offer seats broken (#20758)
* Remove trailing } from utm param (#20763)
* fix: only managed users assignable to managed team event (#20754)
* fix: only managed users assignable to managed team event
* chore: bump platform libraries
* feat: make skeleton for booking embed accurate (#20765)
* fix: trigger lingo.dev by removing duplicate value
* feat: make skeleton for booking embed accurate
* fix: calendar connect atoms (#20766)
* fix: header overlaps in month view on short viewport (#20749)
* fix: header overlaps in month view on short viewport
* refactor: Merge classes into same condition
* fix: Remove booker margin top if isEmbed
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
Co-authored-by: amrit <iamamrit27@gmail.com>
* fx 404 for embed (#20120)
* Update rateLimit.ts (#20785)
* fix: v2 Sentry errors (#20788)
* fix: Only Team Event Types are supported for Instant Meeting
* refactor: Cannot read properties of undefined (reading 'timeZone')
* fix: Cannot read properties of undefined (reading 'map')
* refactor: rearrange function order
* refactor: booking_seats_full_error
* fix: invalid_round_robin_host
* refactor: booking_time_out_of_bounds_error
* refactor: Attempting to book a meeting in the past.
* fix: obj.phoneNumber.trim is not a function
* fix: Cannot use 'in' operator to search for 'disabled' in 1
* fix: Org onboarding handle error due to platform team being moved to regular org (#20786)
* Add better error logs and handle platform team
* Add better error logs and handle platform team
* fix: Wrong text EmbedTheme -> Theme (#20790)
* refactor: replace timeZone string validation with timeZoneSchema (#20719)
* refactor: replace timeZone string validation with timeZoneSchema - Replace all instances of timeZone: z.string() with timeZoneSchema - Preserve modifiers (.optional(), .default(), .nullish()) where present - Fix VideoApiAdapter to use organizer's timezone value - Remove redundant isSupportedTimeZone import from booking.ts - Add timeZoneSchema import where needed
* Update index.ts
* fix: conflicts
Signed-off-by: Omar López <zomars@me.com>
* Update yarn.lock
* Discard changes to yarn.lock
* Update booking.ts
* Discard changes to packages/platform/types/me.ts
* Discard changes to packages/platform/types/me/outputs/me.ts
* Discard changes to packages/platform/types/schedules/schedules-2024-04-15/schedules.ts
* Discard changes to packages/features/ee/cal-ai-phone/zod-utils.ts
---------
Signed-off-by: Omar López <zomars@me.com>
* fix: improved 'use-identity-login' error message for users trying to signInn using different provider (#20582)
* improved 'use-identity-login' error message for users trying to signin using different provider
* passing original identity provider as query parameter
* Update packages/features/auth/lib/next-auth-options.ts
* passed different error names for different types of error
---------
Co-authored-by: romit <romitgabani1@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* fix: Location not changing when rescheduling (#20404)
* fix: location not chnging
* update
* update
* Update EventManager.ts
* update
* update
* Update reschedule.test.ts
---------
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: sms workflow api v2 (#20795)
* fix: sms workflow api v2
* fixup! fix: sms workflow api v2
* fix: semi-colon in the bottom of layout UI (#20799)
* chore: Add layout.tsx to Foundation team CODEOWNERS (#20802)
* chore: remove swagger app and its dependencies (#20798)
* chore: release v5.2.3
* fix: Convert an error in webhook to info (#20806)
* Convert error to info
* Convert error to info
* feat: add "React (Atom)" to embed generator and rename rest (#20618)
* fix: trigger lingo.dev by removing duplicate value
* feat: add support for React Atom embed options
* fix: update locator for React code tab in embed code generator E2E tests
* fix: update embed tab names to clarify iframe usage
* fix failing test
* fix: indentation and installation commands for atoms
* fix: add note about iframe usage in Preview tab
* refactor: replace Cal component with BookerEmbed in EmbedCodes
* fix: Add EmbedConfig type import in Embed.tsx
- Added missing EmbedConfig type to the existing types import
- Resolves TypeScript error "Cannot find name 'EmbedConfig'"
* fix: update BookerEmbed usage in EmbedCodes component
* fix: enhance BookerEmbed implementation and update installation instructions in EmbedTabs
* fix: improve comments in EmbedCodes for clarity on layout options and styling references
* fix: streamline BookerEmbed usage in EmbedCodes with improved class handling and layout options
* fix: embed type selection
* fix: update layout selection in EmbedCodes to use dynamic configuration
* fix: update embed configuration to use theme instead of layout
* fix: conditionally render embed options based on if we are selecting atom
* fix: use simple props instead of embed specific logic to fix the active embed bug
* Fix double tabs activeness
* Revert isCurrent change
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* refactor: remove iframe usage note from Preview tab in EmbedTabs component (#20810)
* fix: trigger lingo.dev by removing duplicate value
* refactor: remove iframe usage note from Preview tab in EmbedTabs component
* fix: api v2 license check (#20813)
* fix: api v2 license check
* update cache key to avoid conflicts
* chore: Add more Foundation and Consumer team CODEOWNERS configuration (#20816)
* refactor: forbidden 403 v2 guard messages (#20794)
* refactor: delete unused proxy guard
* refactor: roles.guard.ts
* refactor: is-org.guard.ts
* refactor: permissions.guard.ts
* refactor: oauth-client-guard.ts
* refactor: is-user-event-type-webhook-guard.ts
* refactor: platform-plan.guard.ts
* refactor: roles.guard.ts
* refactor: cache guard result if canAccess=true
* refactor: is-admin-api-enabled.guard.ts
* refactor: is-team-in-org.guard.ts
* refactor: platform-plan.guard.ts
* refactor: is-webhook-in-org.guard.ts
* refactor: is-user-in-org.guard.ts
* refactor: is-user-webhook-guard.ts
* refactor: is-user-in-org-team.guard.ts
* refactor: is-membership-in-org.guard.ts
* refactor: is-oauth-client-webhook-guard.ts
* refactor: is-routing-form-in-team.guard.ts
* refactor: is-managed-org-in-manager-org.guard.ts
* fill the gaps
* refactor: api-auth.strategy.ts
* fix: test
* implement feedback
* fix: tests
* fix: refactor
* fix: test
* feat: update DeleteSegmentDialog to use ConfirmationDialogContent CAL-5399 (#20820)
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <eunjae@cal.com>
* feat: open dropdown right after adding a filter (#20819)
* feat: open dropdown right after adding a filter
* clean up timeout
* fix: remove window usage in not-found client (#20822)
* remove window usage in not-found client
* fix
* fix: user is already part of a team (#20774)
* better error message
* redirect to login if no user session
* fixup
* remove callback url since the same function is used by org and platform both
* remove extra exclamation mark
* implement PR feedback
* refactor: Remove kysely as its unused (#20817)
* perf: Fetch data server-side for Api Keys page (#20677)
* server-side fetching for api keys page
* refactor billing page
* fix
* simplify metadata in /availability/[schedule] route (#20827)
* feat: Optout of SMS workflows (#20769)
* Do not call dub if API key isn't present
* Add `WorkflowOptOutContact` table
* Add `sendTo` column to `WorkflowReminder`
* Add `workflowOptOutContactRepository`
* Add `WorkflowReminderRepository`
* Write `sendTo` number when scheduling SMS messages
* Add `p-limit` package
* Add `determineOptOutType` to `TwilioProvider`
* Add `deleteMultipleScheduledSMS`
* Create `WorkflowOptOutService`
* Add endpoint handler for Twilio SMS responses
* Add `isOptedOut` method to `workflowOptOutContactRepository`
* Verify phone number is not opted out before scheduling SMS
* Use `smsReminderNumber` instead of `sendTo`
* Type fix
* Add .env variable if opt out is available
* Add opt out message to SMS
* Import `pLimit` directly in method
* Address select comment
* Guard against undefined phone number from form
* Add early return to `deleteWorkflowReminders`
* Add request validation from Twilio
* Add fallback message as i18N string
* Only delete SMS attendee scheduled reminders
* chore: release v5.2.4
* fix: caching for sprite.svg (#20832)
* update cache-control header for sprite.svg
* updated regex
* fix: platform org members cannot access their public booking page (#20821)
* fix: platform member event pages
* chore: update slots docs
* refactor: user repository call
* refactor: remove newline
* refactor: Returns 400 error for ZodErrors (#20831)
* fix: eventType filter on /insights (#20823)
* fix: eventType filter on /insights
* remove log
* feat: custom reply To Email (#20771)
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
* feat(insights): add progress indicator to download button on /insights and /insights/routing (CAL-5408) (#20631)
* feat(insights): add progress indicator to routing form responses download button (CAL-5408)
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: address PR feedback - remove initial progress update and ensure no decimal parts in percentage
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* feat(insights): add progress indicator to Download component
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* feat: paginate rawData endpoint and implement batch fetching in Download component
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: simplify pagination logic in trpc-router.ts
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* show progress on tooltip
* fix download for /insights
* fix download when there is no data
* feat: replace tooltip progress indicator with toast notification
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: remove duplicate ProgressToast component from showToast.tsx
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: export ProgressToast component from index.ts
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: add missing translation for downloading_data
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* update progress toast implementation
* fix error
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <eunjae@cal.com>
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
* perf: SSR for /teams (#20824)
* finish
* improve
* refactor
* add revalidations
* /settings/teams is not needed
* refactor
* rename
* redundant type casting
* perf: SSR - /availablilty/[schedule] (#20829)
* ssr for schedule page
* improve skeleton
* improve skeleton
* improve skeleton
* fix: getBookings max 1 month in the past when no date filters specified (#20911)
* fix: getBookings max 1 month in the past
* bump platform libraries
* Pass customReplyTo as a managed event type prop (#20909)
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* chore: release v5.2.5
* fix: Docs for deleting reserved slot (#20922)
* feat: ability to hide organizer email (#20782)
* feat: hide orgainzer email
* fix type error
* update
* update
* Update schema.prisma
* perf: Slim down trpc queries in Settings Layout (#20918)
* slim down settings layout by removing server queries
* add check method
* fix type check
* refactor
* perf: remove next.redirect by going straight to event-types (#20920)
* perf: ssr for /settings/organizations/teams/other (#20927)
* refactor: v2 automatic team slugs (#20897)
* refactor: automatic team slugs
* refactor: automatic organizations team slugs
* refactor: automatic managed organizations slugs
* docs
* refactor: test
* feat: add loading component for /apps main page (#20924)
* perf: server-side fetching for /availability (#20804)
* availability
* refactor
* add loader
* improve
* update
* fix loader
* rename
* satisfying types
* refactor
* remove log
* add CTA to skeleton
* refactor
* fix revalidations
* refactor
* update
* finish
* fix: Include ordered attendees in booking select query (#20935)
* fix: correct ordering
* another
* docs: global platform event types and custom booking flows (#20940)
* docs: global event types
* docs: custom booking flow
* chore: release v5.2.6
* fix: v2 sentry errors (#20902)
* refactor: no_available_users_found_error for team event
* fix: hosts_unavailable_for_booking
* fix: Cannot read properties of undefined (reading 'replace')
* fix: Cannot read properties of undefined (reading 'phoneNumber')
* fix: No SelectedCalendar found.
* fix: Cannot read properties of undefined (reading 'length')
* refactor: add bookings errors service
* feat: add membership creation date to Organization Member List table (CAL-5406) (#20595)
* feat: add membership creation date to Organization Member List table (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* feat: add migration for membership creation date (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* feat: make createdAt and updatedAt nullable (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* feat: add updatedAt column to Organization Member List table (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* fix: use type assertion to access createdAt and updatedAt fields (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* fix: display N/A for null date values (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* fix: use proper type assertions for createdAt and updatedAt fields (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* fix: add createdAt and updatedAt to UserTableUser mock in test (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* feat: add PostgreSQL trigger for membership timestamps (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* fix: use empty string instead of N/A and add translations for column headers (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* add i18n text
* clean up type issue
* feat: add translation keys for column headers (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* disable sort
* remove duplicated i18n texts
* feat: add filters for lastActiveAt, createdAt, and updatedAt (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* support date range filter
* fix date range for end date
* hide columns by default
* revert wrong change
* add missing selects
* fix e2e test
* fix: remove PostgreSQL trigger and let application handle timestamps (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* feat: add application-level timestamp handling for Membership model (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* add more timestamp handling
* refactor: use Prisma's built-in decorators for Membership timestamps (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* refactor: remove application-level timestamp handling in favor of Prisma decorators (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* refactor: remove more application-level timestamp handling in favor of Prisma decorators (CAL-5406)
Co-Authored-By: keith@cal.com <keith@cal.com>
* fix e2e test
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: keith@cal.com <keith@cal.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
* fix: Offset is required but not passed everywhere, default to zero. (#20917)
* fix: exclude email from replyTo (#20953)
* fix: exclude email from replyTo
* update
* Update scheduleEmailReminders.ts
* fix: added order by (#20959)
* fix: double end-date parsing when saving availability (#20963)
* fix: double end-date parsing when saving availablity
Signed-off-by: Omar López <zomars@me.com>
* fix: cache hits in current and next month
* Update CalendarService.test.ts
---------
Signed-off-by: Omar López <zomars@me.com>
* fix: Don't delete Cal video room upon requesting reschedule (#20969)
* Update requestReschedule.handler.ts
* Update requestReschedule.handler.ts
* chore: leverage error.tsx in app router (#20955)
* chore: better code - migrate getServerSideProps file directly to RSC for /apps (#20926)
* migrate getServerSideProps file directly to RSC for /apps
* fix
* fix: dont persist last booking response, temporarily (#20975)
* dont persist last booking response
* remove dead code to fix ts error
* perf: Improve performance of period limits (#20974)
* perf: Improve performance of period limits
* Type fixes
* Fixed correct check for instanceof -> isDayjs
* revert: "feat: add membership creation date to Organization Member List table (CAL-5406) (#20595)" (#20978)
This reverts commit d21f7ccbc8.
* perf: Add credentialId index to selectedCalendar (#20979)
* docs: add JSDoc documentation to FeaturesRepository class and methods (#20980)
* chore: release v5.2.7
* Handle acme.cal.local root path (#20981)
* Update sms-manager.ts (#20985)
* Do not retrieve already persisted data as well (#20982)
* perf: workflows—remove data fetching for metadata (#20734)
* Remove 30 seats minimum text from organization setup page (#20983)
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: hariom@cal.com <hariom@cal.com>
* fix: few details not populate (#20987)
* fix: cancel platform subscription on dashboard (#20787)
* add new endpoint to cancel user subscription
* remove comments
* add delete button to frontend
* update correct request method
* fixup
* frontend for cancelling subscription
* better warning message
* better function name
* update locales
* better error handling in case stripe api call fails
* rename teamId to organizationId
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* feat: added `hideOrganizerEmail` to api/v2/event-types (#21005)
* feat: added `hideOrganizerEmail` to api/v2/event-types
* updated docs
* fix: Skip already completed org onboarding, as webhook request can come when invoice is paid again next month (#20984)
* there is nothing to do for repeat invoice payment
* there is nothing to do for repeat invoice payment
* fix: wrong translation value (#17923)
* feat: ability to remove attendees from booking page
* update
* fix
* fix: unable to create meeting with ms teams (#20993)
* fix: few details not populate
* fix: unable to create meeting with ms teams
* Update CrmService.ts
* update
* fix: encoding bug (#21004)
* fix: encoding bug
* fix: use escapeValue
* perf: SSR - /event-types and /event-types/[type] (#20952)
* add revalidation
* ssr for event-types
* wip
* wip
* fix types
* fix skeleton
* better error component
* make skeleton better
* no need to export
* call revalidations early
* remove revalidations if not needed
* address comments
* address
* fix: schedule unscheduled emails with tasker in cron job (#20748)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* fix: hide orgnizer email in cal video sidebar (#21011)
* refactor: Use Salesforce GraphQL for account ownership routing (#20655)
Co-authored-by: Omar López <zomars@me.com>
* fix: Handle calendar-cache with Delegation Credentials
Fixes CAL-5372
# Delegation Credentials with CalendarCache.
Following content is a snapshot of the [internal document](https://calendso.slack.com/docs/T08B8KA2BNF/F08L5JYU3V3)
**Problem-1 :**
CalendarCache needs SelectedCalendar records to work but SelectedCalendar record is only created when a user connects their calendar and then enables some calendar for conflict checking. Because with Delegation, no manual connection is done by any of the members, we need a way to create SelectedCalendar records automatically.
**Problem-2**
CalendarCache connects to credential(regular credential) which doesn’t exist for Delegation Credential scenario. Also, DelegationCredential is common for all the members(different from Credential which is different for different members) of the organization and we need to identify to which user the CalendarCache belongs.
**Solution for both problems**
- Create credential records for Delegation Credentials as well - Through Cron(new - we could schedule it every 5mins)
- Now create SelectedCalendar records for those Credential records - Through another Cron(new - we could schedule it every 5mins)
- Now CalendarCache records will automatically be created for those SelectedCalendar records -existing cron
## Fixed some Delegation Credentials bugs unrelated to calendar-cache
- If DestinationCalendar wasn't set(which is possible only with Delegation Credentials), then Google Meet wasn't used as a conferencing app - [Added a test]
- If no SelectedCalendar is there but Google Calendar connection exists(possible only with Delegation Credential) then we were not doing conflict checking. It is expected to not do it for Regular Credentials, but for Delegation Credential we must check for conflict in that case too [Added a test]
- Earlier if a user has Regular Credential as well as Delegation Credential for the same external id which is the member email(say member1@acme.com) then availability were retrieved twice because we weren't deduplicating credentials as it wasn't a trivial thing to do. Now that is being done.
**Env Variables:**
Note this PR doesn't introduce any new env variable. The existing env variable has been added to .env.example. But if this env variable isn't already set, it must be set.
`CALCOM_SERVICE_ACCOUNT_ENCRYPTION_KEY={SAME_AS_SET_FOR_V2_API}`
**Deployment Plan:**
1. Add Observability for SelectedCalendar when _error_ field is set
2. Follow https://github.com/calcom/cal.com/blob/calendar-cache-dwd-support/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/delegation-credential/delegation-credential.md#setting-up-delegation-credential-for-google-calendar-api to enable Delegation Credential for i.cal.com
3. Note that to be able to see the option to enable Delegation Credential for an organization, you need to enable `teamFeature` and `feature` for `delegation-credential`
## Automation Tests
- Introduced tests for calendar-cache.repository.ts
- Tests all methods of the repository
- Added more tests for handleNewBooking/delegation-credential flow.
- Added test to verify the bug fix when no DestinationCalendar exists and Google Meet should be used still
- Added more tests for Google Calendar/CalendarService targeting DelegationCredential
- Added more tests for getCalendarsEvents.
- To test the new logic of calling getAvailability still if there are no selectedCalendars in case of Delegation Credential
- Also introduced tests for `getAvailabitlityWithTimezones` which was an existing function but now has some new changes.
- Added tests for deduplication logic in CalendarManager.ts
## How to Test
Enable Calendar Cache and Delegation Credential feature for acme org through `features` and `teamFeatures` tables.
- Enable Delegation Credential for acme org
- Enable atleast 1 calendar for conflict checking for one of the users(say owner1)
- Ensure GOOGLE_WEBHOOK_TOKEN is set in .env file
- Ensure GOOGLE_WEBHOOK_URL is set to ngrok url of webapp in .env file
- Hit cron endpoint `curl http://localhost:3000/api/calendar-cache/cron\?apiKey\={API_KEY}` that would cache the freebusy result for the selected calendars
Followup
- https://github.com/calcom/cal.com/pull/20698
- https://github.com/calcom/cal.com/pull/18619/files#r2046795643
* fix: UI Bug - ToggleGroup (#20997)
* fix#20986: UI Bug - ToggleGroup
* some changes
* some changes
* feat: /skip trial for teams (#20753)
* skip team trials
* add loading state
* update mocks
* cleanup
* add import oops
* fix tests files
---------
Co-authored-by: Sean Brydon <sean@Seans-Mac-mini.local>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* fix: cleanup html reports when pr is merged/closed (#20089)
Co-authored-by: anik@cal.com <anik@cal.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* fix: allow only platform organisation or non-platform organisation (#20972)
* fix: platform customers cant subscribe to organizations plan
* fix: organization customers cant subscribe to platform plan
* chore: format calendar events to remove oauthClientIds (#21040)
* fix: meeting link fails when host requests to reschedule (#20999)
* fix: meeting link fails when host requests to reschedule
* Update EventManager.ts
* fixes
* Incorportate prisma integration
* Update package.json
* Delete apps/web/app/sentry-example-page/page.tsx
* Discard changes to packages/features/insights/server/trpc-router.ts
* Delete .github/workflows/sentry-sourcemaps.yml
* Delete apps/web/app/api/sentry-example-api/route.ts
* Update turbo.json
* Delete sentry.client.config.ts
* Delete sentry.client.config.ts
* fix
* Update package.json
* Update next.config.js
* Update package.json
* Update yarn.lock
* Discard changes to .env.example
* Discard changes to packages/embeds/embed-react/package.json
* Discard changes to packages/platform/atoms/package.json
* Discard changes to packages/features/ee/teams/components/TeamsListing.tsx
* Update instrumentation-client.ts
* Update instrumentation-client.ts
* Update sentry.edge.config.ts
* Update next.config.js
---------
Signed-off-by: Omar López <zomars@me.com>
Co-authored-by: Yadong Zhang <zhyd007@gmail.com>
Co-authored-by: amrit <iamamrit27@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
Co-authored-by: GitHub Actions <github-actions@github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: benny@cal.com <benny@cal.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Evan Liu <evanliu.dev@gmail.com>
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Ronit Raj <ronitrajofficial7@gmail.com>
Co-authored-by: Romit Gabani <85230081+romitg2@users.noreply.github.com>
Co-authored-by: romit <romitgabani1@gmail.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: eunjae@cal.com <eunjae@cal.com>
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
Co-authored-by: Rajiv Sahal <sahalrajiv-extc@atharvacoe.ac.in>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Vijay <vijayraghav22@gmail.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: keith@cal.com <keith@cal.com>
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
Co-authored-by: hariom@cal.com <hariom@cal.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Sean Brydon <sean@Seans-Mac-mini.local>
Co-authored-by: anik@cal.com <anik@cal.com>
* Show distribution option for RR scheduling type
* Add `includeNoShowInRRCalculation` to event type schema
* Add `includeNoShowInRRCalculation` initial event type data
* Add FE option for `includeNoShowInRRCalculation`
* Consider `includeNoShowInRRCalculation` when building `where` clause when getting bookings for RR
* Add `includeNoShowInRRCalculation` param to `getAllBookingsForRoundRobin`
* Add `includeNoShow...` param to `GetLuckyUserParams`
* Pass `includeNoShow...` param to `getBookingsOfInterval` calls
* Add FE option for `includeNoShow...` (actual commit)
* Type fixes
* Fix brackets
* Add booking repository test
* Remove unused method
* Add translation
* Type fix
* Type fix
* Test passing
* Fix tests
* Fix tests
* Fix test
* Type fixes
* fix: trigger lingo.dev by removing duplicate value
* feat: add filter dropdown item search tests for bookings list
* refactor: update page navigation to wait for DOM content in bookings list tests and add new filter item search test
* remove comments
---------
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* Add Iffy API key variable
* WIP using Iffy to scan comments
* Use Iffy for workflow body scanning
* Update entity
* Clean up
* Update test
* Fix client id
* Fix test
* mvp done
* wip
* fix ts errors and other code improvements
* fix ts errors
* ensure mobile layout support
* Make skeleton responsive on screen resize
* refactor
* Add test for EmbedElement
* make skeleton closer to pixel perfect
* Address PR feedback
* Router-preloading
## What does this PR do?
<!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. -->
- Fixes #XXXX (GitHub issue number)
- Fixes CAL-XXXX (Linear issue number - should be visible at the bottom of the GitHub issue description)
## Visual Demo (For contributors especially)
A visual demonstration is strongly recommended, for both the original and new change **(video / image - any one)**.
#### Video Demo (if applicable):
- Show screen recordings of the issue or feature.
- Demonstrate how to reproduce the issue, the behavior before and after the change.
#### Image Demo (if applicable):
- Add side-by-side screenshots of the original and updated change.
- Highlight any significant change(s).
## Mandatory Tasks (DO NOT REMOVE)
- [ ] I have self-reviewed the code (A decent size PR without self-review might be rejected).
- [ ] I have updated the developer docs in /docs if this PR makes changes that would require a [documentation change](https://cal.com/docs). If N/A, write N/A here and check the checkbox.
- [ ] I confirm automated tests are in place that prove my fix is effective or that my feature works.
## How should this be tested?
<!-- Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration. Write details that help to start the tests -->
- Are there environment variables that should be set?
- What are the minimal test data to have?
- What is expected (happy path) to have (input and output)?
- Any other important info that could help to test that PR
## Checklist
<!-- Remove bullet points below that don't apply to you -->
- I haven't read the [contributing guide](https://github.com/calcom/cal.com/blob/main/CONTRIBUTING.md)
- My code doesn't follow the style guidelines of this project
- I haven't commented my code, particularly in hard-to-understand areas
- I haven't checked if my changes generate no new warnings
* wip\
* wip
* fix mrge.io feedback
* wip
* Add README and lifecycle
* Add README and lifecycle
* Update routing form-seed and some other fixes
* remove linkFailed fix from the branch
* self-review
* self-review-2
* self-review-3
* Handle soft connect\
* Update README and fix a bug with query parmas
* Add one more case in routing-html playground
---------
Co-authored-by: Benny Joo <sldisek783@gmail.com>
Co-authored-by: amrit <iamamrit27@gmail.com>
* feat: add `type` filter for booking references API endpointa
* Update openapi.json
* feat: add enum validation for booking reference types in filter input
* refactor: rename externalUid to eventUid and add destinationCalendarId in booking references
* refactor: replace enum with const array for BookingReferenceType
* fix: type safety for booking references where clause using Prisma types
* refactor: rename BookingReferenceType to BookingReferences
* feat: Add `handleSlotSelect` prop for custom timeslot selection/reservation handling
* Update custom-slot-select-flow.mdx
* Update custom-slot-select-flow.mdx
* refactor: rename handleSlotSelect to handleSlotReservation for clearer intent
* docs: add API reference link for slot reservation api
* fix: hiding And connect with specific team members option for non org teams
* removed console logs
* added comment
---------
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* perf: Refactor bookings queries for API
* fix syntax
* fixing vars
* Inverted the filter by attendees if
* fixed prisma filter issue
* Defaulting list of emails to empty array
* Only running 2 queries if we have data to filter by
* Reverted changes that have been separated out to other PR
* fix: ts build error
* adds tests + extracts logic for units
* fix integration tests
* fix tests expectes
* Fix test
* switching back
* attempt : fix tests
* test: add test for duplicate bookings (#21165)
* feat: Add tests for booking and duration limits (#21158)
* Add tests for booking and duration limits in getSchedule.test.ts
Co-Authored-By: keith@cal.com <keith@cal.com>
* fix: use SchedulingType enum instead of string for schedulingType
Co-Authored-By: keith@cal.com <keith@cal.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: keith@cal.com <keith@cal.com>
* test: add test to ensure no duplicate bookings when merging query results
Co-Authored-By: keith@cal.com <keith@cal.com>
---------
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: keith@cal.com <keith@cal.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* fix: deduplicate bookings when merging results from multiple queries
Co-Authored-By: keith@cal.com <keith@cal.com>
* fix: ensure pagination works correctly when merging results from multiple queries (#21167)
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: keith@cal.com <keith@cal.com>
---------
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
Co-authored-by: Tushar <tusharbhatt0135@gmail.com>
Co-authored-by: sean-brydon <sean@cal.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: keith@cal.com <keith@cal.com>
* Add tests for booking and duration limits in getSchedule.test.ts
Co-Authored-By: keith@cal.com <keith@cal.com>
* fix: use SchedulingType enum instead of string for schedulingType
Co-Authored-By: keith@cal.com <keith@cal.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: keith@cal.com <keith@cal.com>
* feat: add 'View Responses' menu item to Routing Form dropdown
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: use nuqs createSerializer for URL generation
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: move serializer to data-table lib and use proper type constants
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: type errors in serializers and FormActions
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: use parseAsArrayOf with parseAsJson for proper nuqs serialization
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: update to use dataTableQueryParamsSerializer with proper nuqs pattern
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* refactor: extract parsers from DataTableProvider to be reused in serializers
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: remove deprecated activeFiltersSerializer and use empty array instead of null
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: only show View Responses menu when form id and teamId exist
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* remove teamId condition
* refactor: improve viewResponses URL generation with cleaner conditional
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* Update packages/features/data-table/lib/parsers.ts
* refactor: make constants in parsers.ts non-exported
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: add explicit type annotations to constants in parsers.ts
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: add explicit type annotations and export DEFAULT_PAGE_SIZE in parsers.ts
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix: add explicit type assertions to DEFAULT_ACTIVE_FILTERS and DEFAULT_SORTING
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <eunjae@cal.com>
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* feat: Add booking references API endpoints
* refactor: Implement booking-reference service and repositories
* Add description and reorder properties in BookingReference schema
* Refactor booking references service to separate output service
* feat: add denormalized table for BookingTimeStatus
* Update packages/prisma/migrations/20240320000001_add_booking_time_status_denormalized/migration.sql
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* add more indexes
* improvement
* update schema
* improve indexes
* apply feedback from mrge
* split update trigger for better perf
* remove unnecessary checks
* split migration into two
* less logging
* address feedback
* add updatedAt and userUsername
* remove timeStatus
* add deletion trigger
* clean up denorm table on row deletion at EventType or users
* add timeStatus back as a part of a new view
* keep user and eventType nullable
* rename triggers
* add tests
* clean up migrations
* update tests
* update tests
* update test clean up
* one more try
* similar updates
* use e2e test instead
---------
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* section component
* more section UI
* wip
* core components styled
* all components using sections
* match icons to figma
* small inputs
* fix select small to be the same as small text
* center flex rows
* enforce inputs to be full spanning grid
* tidy up section container for single inputs
* fix select and i18n
* wip
* install available apps
* raw heading
* app install card
* fix app logos width x height
* fix gap
* match design for other button
* fix prop name
* push i18n string
* fix doc snippets
* fix docs
* chore: remove yarn.lock changes
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* add back all data to router-position
* fix type error
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: trigger lingo.dev by removing duplicate value
* feat: allow urls without an explicit https://
* fixed the test that ensures malformed URLs like "http:/nope" are rejected
---------
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
Found via `codespell -q 3 -S "*.svg,./apps/web/public/static/locales,./packages/app-store/stripepayment/lib/currencyOptions.ts,./packages/lib/freeEmailDomainCheck/freeEmailDomains.ts" -L afterall,atleast,datea,fo,incase,ist,nam,notin,optionel,perview,reccuring`
Closes#21104
* Use userId instead of attendee email
* Only write if booking is accepted
* Create `getBookingRequest` function
* Return already requested booking
* Type fixes
* Type fix
* Type fix
* Pass empty seatReferenceId
* Handle no userId
* Update test
* restricting platform user from creating another regular org
* changed as suggested, additional check of membership is accepted
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Fixes CAL-5372
# Delegation Credentials with CalendarCache.
Following content is a snapshot of the [internal document](https://calendso.slack.com/docs/T08B8KA2BNF/F08L5JYU3V3)
**Problem-1 :**
CalendarCache needs SelectedCalendar records to work but SelectedCalendar record is only created when a user connects their calendar and then enables some calendar for conflict checking. Because with Delegation, no manual connection is done by any of the members, we need a way to create SelectedCalendar records automatically.
**Problem-2**
CalendarCache connects to credential(regular credential) which doesn’t exist for Delegation Credential scenario. Also, DelegationCredential is common for all the members(different from Credential which is different for different members) of the organization and we need to identify to which user the CalendarCache belongs.
**Solution for both problems**
- Create credential records for Delegation Credentials as well - Through Cron(new - we could schedule it every 5mins)
- Now create SelectedCalendar records for those Credential records - Through another Cron(new - we could schedule it every 5mins)
- Now CalendarCache records will automatically be created for those SelectedCalendar records -existing cron
## Fixed some Delegation Credentials bugs unrelated to calendar-cache
- If DestinationCalendar wasn't set(which is possible only with Delegation Credentials), then Google Meet wasn't used as a conferencing app - [Added a test]
- If no SelectedCalendar is there but Google Calendar connection exists(possible only with Delegation Credential) then we were not doing conflict checking. It is expected to not do it for Regular Credentials, but for Delegation Credential we must check for conflict in that case too [Added a test]
- Earlier if a user has Regular Credential as well as Delegation Credential for the same external id which is the member email(say member1@acme.com) then availability were retrieved twice because we weren't deduplicating credentials as it wasn't a trivial thing to do. Now that is being done.
**Env Variables:**
Note this PR doesn't introduce any new env variable. The existing env variable has been added to .env.example. But if this env variable isn't already set, it must be set.
`CALCOM_SERVICE_ACCOUNT_ENCRYPTION_KEY={SAME_AS_SET_FOR_V2_API}`
**Deployment Plan:**
1. Add Observability for SelectedCalendar when _error_ field is set
2. Follow https://github.com/calcom/cal.com/blob/calendar-cache-dwd-support/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/delegation-credential/delegation-credential.md#setting-up-delegation-credential-for-google-calendar-api to enable Delegation Credential for i.cal.com
3. Note that to be able to see the option to enable Delegation Credential for an organization, you need to enable `teamFeature` and `feature` for `delegation-credential`
## Automation Tests
- Introduced tests for calendar-cache.repository.ts
- Tests all methods of the repository
- Added more tests for handleNewBooking/delegation-credential flow.
- Added test to verify the bug fix when no DestinationCalendar exists and Google Meet should be used still
- Added more tests for Google Calendar/CalendarService targeting DelegationCredential
- Added more tests for getCalendarsEvents.
- To test the new logic of calling getAvailability still if there are no selectedCalendars in case of Delegation Credential
- Also introduced tests for `getAvailabitlityWithTimezones` which was an existing function but now has some new changes.
- Added tests for deduplication logic in CalendarManager.ts
## How to Test
Enable Calendar Cache and Delegation Credential feature for acme org through `features` and `teamFeatures` tables.
- Enable Delegation Credential for acme org
- Enable atleast 1 calendar for conflict checking for one of the users(say owner1)
- Ensure GOOGLE_WEBHOOK_TOKEN is set in .env file
- Ensure GOOGLE_WEBHOOK_URL is set to ngrok url of webapp in .env file
- Hit cron endpoint `curl http://localhost:3000/api/calendar-cache/cron\?apiKey\={API_KEY}` that would cache the freebusy result for the selected calendars
Followup
- https://github.com/calcom/cal.com/pull/20698
- https://github.com/calcom/cal.com/pull/18619/files#r2046795643
* add revalidation
* ssr for event-types
* wip
* wip
* fix types
* fix skeleton
* better error component
* make skeleton better
* no need to export
* call revalidations early
* remove revalidations if not needed
* address comments
* address
* add new endpoint to cancel user subscription
* remove comments
* add delete button to frontend
* update correct request method
* fixup
* frontend for cancelling subscription
* better warning message
* better function name
* update locales
* better error handling in case stripe api call fails
* rename teamId to organizationId
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* Do not call dub if API key isn't present
* Add `WorkflowOptOutContact` table
* Add `sendTo` column to `WorkflowReminder`
* Add `workflowOptOutContactRepository`
* Add `WorkflowReminderRepository`
* Write `sendTo` number when scheduling SMS messages
* Add `p-limit` package
* Add `determineOptOutType` to `TwilioProvider`
* Add `deleteMultipleScheduledSMS`
* Create `WorkflowOptOutService`
* Add endpoint handler for Twilio SMS responses
* Add `isOptedOut` method to `workflowOptOutContactRepository`
* Verify phone number is not opted out before scheduling SMS
* Use `smsReminderNumber` instead of `sendTo`
* Type fix
* Add .env variable if opt out is available
* Add opt out message to SMS
* Import `pLimit` directly in method
* Address select comment
* Guard against undefined phone number from form
* Add early return to `deleteWorkflowReminders`
* Add request validation from Twilio
* Add fallback message as i18N string
* Only delete SMS attendee scheduled reminders
* better error message
* redirect to login if no user session
* fixup
* remove callback url since the same function is used by org and platform both
* remove extra exclamation mark
* implement PR feedback
* fix: trigger lingo.dev by removing duplicate value
* feat: add support for React Atom embed options
* fix: update locator for React code tab in embed code generator E2E tests
* fix: update embed tab names to clarify iframe usage
* fix failing test
* fix: indentation and installation commands for atoms
* fix: add note about iframe usage in Preview tab
* refactor: replace Cal component with BookerEmbed in EmbedCodes
* fix: Add EmbedConfig type import in Embed.tsx
- Added missing EmbedConfig type to the existing types import
- Resolves TypeScript error "Cannot find name 'EmbedConfig'"
* fix: update BookerEmbed usage in EmbedCodes component
* fix: enhance BookerEmbed implementation and update installation instructions in EmbedTabs
* fix: improve comments in EmbedCodes for clarity on layout options and styling references
* fix: streamline BookerEmbed usage in EmbedCodes with improved class handling and layout options
* fix: embed type selection
* fix: update layout selection in EmbedCodes to use dynamic configuration
* fix: update embed configuration to use theme instead of layout
* fix: conditionally render embed options based on if we are selecting atom
* fix: use simple props instead of embed specific logic to fix the active embed bug
* Fix double tabs activeness
* Revert isCurrent change
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* fix: Only Team Event Types are supported for Instant Meeting
* refactor: Cannot read properties of undefined (reading 'timeZone')
* fix: Cannot read properties of undefined (reading 'map')
* refactor: rearrange function order
* refactor: booking_seats_full_error
* fix: invalid_round_robin_host
* refactor: booking_time_out_of_bounds_error
* refactor: Attempting to book a meeting in the past.
* fix: obj.phoneNumber.trim is not a function
* fix: Cannot use 'in' operator to search for 'disabled' in 1
* feat: add guards to stripe teams controller
* remove logs and comments
* fix return type status
* refactor: move PlatformSubscription to a dedicated module
* reroute to `organizations/stripe/save` for teams
* fix: type errors
* feat: fixed it for conferencing apps
* feat: Add error handling and fallback URL support in Stripe callback
* Refactor OAuth callback handling and move token validation to service layer
* Add documentation for OAuth callback proxying in conferencing and stripe controllers
* Move OAuthCallbackState type from organizations to stripe service module
* Add whitelistWorkflows to user
* Do not autolock whitelisted users
* Add endpoint to whitelist a user
* Get users data - include whitelistWorkflows
* Whitelist a user on the user admin page
* Fix typo
* Add test
* Use translations
* Add `updateWhitelistWorkflows` to `UserRepository`
* Use i18 for strings
* Rename to whitelistWorkflows
---------
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* feat: allow teamSlug + eventTypeSlug + optional organizationSlug as input
* feat: return team event slots
* test: get slots using teamSlug + eventTypeSlug + optional organizationalSlug
* docs: how to get team event slots
* feat: routing form response slots
* fix
* test routing form slots
* chore: bump libraries
* docs
* docs
* chore: api docs from main to merge main
* chore: regenerate api docs
* fix: Don't allow seats for recurring events #19061
* update the commit with English
* Update common.json
* Update common.json
* Update common.json
* Add edge case when people have already enabled seats as well as recurring event
* fix type issue
* Handle case where seats and recurring is already enabled
* minor fix
* minor change
* typo
* Block backend functionality
* blocking new booking and other enhancements
* final-changes
* minor-changes
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
Co-authored-by: Tushar <tusharbhatt0135@gmail.com>
* Add translations in respective files
* implement multilingual support for email templates
* fix: indentation in common.js & typos in common.js and update.handler.ts
* init
* updated typing, english localization text, used existing calculatePeriodLimits and isTimeViolatingFutureLimit to determine if go to next month button should be disabled
* improving copy
* semantic dialog heading tag, proper EN localization,
* reverting
* force local to origin
* Translations by LLM
* intit tests
* moving NoAvailability to its own file.
* refactor overlay component to encpsulate logic in hooks
* improved tests
* remove unintended change
* fix: period data type import. Providing default periodData values
* fix: type errors on event object
* fix: updates case in type import
* removing translations
* remove unnecessary import
* remove unnecessary import
* improving mocks for booker and logger
* moving tests to __tests__ folder
---------
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* feat: redirect to original event link for rescheduling cancelled booking
* allow cancelled booking rescheduling when allowRescheduleForCancelledBooking is true
* chore
* fix test
* chore
---------
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* add dry run prop for mocking actual behaviour without actual api calls
* fix e2e tests
* fixup
* remove await present twice
* fix: adjust success toast for apple connect dry run
Co-Authored-By: rajiv@cal.com <rajiv@cal.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: rajiv@cal.com <rajiv@cal.com>
* made text dependent on host's refund policy by conditionally rendering refund message
* add more conditions in case of no refund message
* made refund message more appropriate
* Update apps/web/public/static/locales/en/common.json
* Update apps/web/public/static/locales/en/common.json
* Update apps/web/modules/bookings/views/bookings-single-view.tsx
---------
Co-authored-by: romit <romitgabani1@gmail.com>
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* fix: recalculate date range from filter segments
* clean up
* add unit tets for date-range utils
---------
Co-authored-by: Sean Brydon <sean@Seans-Mac-mini.local>
* feat: conditionally show contact us or report issue based on plan
Co-Authored-By: peer@cal.com <peer@cal.com>
* fix: update icon name to triangle-alert to fix type error
Co-Authored-By: peer@cal.com <peer@cal.com>
* fix: check specific plan type instead of isPaidUser flag
Co-Authored-By: peer@cal.com <peer@cal.com>
* fix: check userBillingData.valid to ensure billing plan is active
Co-Authored-By: peer@cal.com <peer@cal.com>
* fix: convert plan to lowercase before comparison
Co-Authored-By: peer@cal.com <peer@cal.com>
* fixup: dont show contact card for free platform users
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: peer@cal.com <peer@cal.com>
Co-authored-by: amrit <iamamrit27@gmail.com>
Co-authored-by: Ryukemeister <sahalrajiv6900@gmail.com>
* fix: ensure only top tip has focusable elements
Co-Authored-By: sean@cal.com <sean@cal.com>
* fix: disable all interactive elements for non-top tips
Co-Authored-By: sean@cal.com <sean@cal.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: sean@cal.com <sean@cal.com>
* fix: trigger lingo.dev by removing duplicate value
* fix: Update event type in tests and remove offset times checks
* Changed event type from "Offset Event" to "Test Event" in the limits tab tests.
* Removed the check for offset times from the booking page fixture, streamlining the booking process.
Conditionally displays the year in the date format for upcoming bookings
on the /bookings page when the booking's year differs from the current year.
Fixes CAL-5455
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <eunjae@cal.com>
* feat: add rescheduling to UI
- Introduced displaying the original booking information.
- Updated UI components to show rescheduling status and details.
* fix: update link styling in booking single view
- Changed link text size to small for better UI consistency in the booking details section.
* refactor, type fixes
* added missing margin
* added rescheduled under other badges
* optimised getting booking
* updated namings and perf
---------
Co-authored-by: amrit <iamamrit27@gmail.com>
* Add logging to `companyFieldName`
* Add logging to `getTextValueFromRoutingFormResponse`
* Add logging around unhandled field type
* Remove extra bracket
* fix(CAL-5435): Conditionally render selection bar buttons based on user role
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix(CAL-5435): Add fallback for test environments to ensure E2E tests pass
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* fix(CAL-5435): Fix data-testid attribute case for members-privacy-warning
Co-Authored-By: eunjae@cal.com <eunjae@cal.com>
* clean up
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <eunjae@cal.com>
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
* Type app options
* Refactor `writeToPersonRecord` to `writeToRecord`
* Abstract writing to salesforce record options component
* Add option to write to event object on cancellation
* Add on booking cancel write to event object to schema
* Refactor writing to record on booking option to use `<WriteToObjectSettings />`
* Pass event object to crm delete method
* When cancelling booking write to event object
- App data isn't being read
* V1 pass app data to crm service
* Undo .env commit
* Fix passing event to cancel crm cancel event method
* Pass event type metadata to `EventManager` in `handleCancelBooking`
* Handle writing to event record
* Type fix
* revert: refactor v2 access and refresh tokens
* feat: add refreshTokenExpiresAt to /force-refresh, /exchange/, /refresh
* feat: encode ownerId, expiresAt in tokens & return refresh expires at when creating managed user
* driveby:fix: pass language when creating managed user
* docs: tokens expires at and payload
---------
Co-authored-by: supalarry <laurisskraucis@gmail.com>
* feat: enable 'Overlay Calendar' enabled by default for signed in users
* feat: enable 'Overlay Calendar' enabled by default for signed in users
Changes Made:
- 'Overlay Calendar' is enabled by default when the component mounts for signed in users
- On every view which is toggled, 'Overlay Calendar' will be enabled by default for signed in users
* feat: enable 'Overlay Calendar' enabled by default for signed in users
Changes Made:
- 'Overlay Calendar' is enabled by default when the component mounts for signed in users in the web wrapper instead of the Booker Component
* feat: enable 'Overlay Calendar' enabled by default for signed in users
Changes Made:
- Persist the user’s preference to keep it disabled, even after a view toggle.
* minor-enhancement
---------
Co-authored-by: amrit <iamamrit27@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
Co-authored-by: Tushar <tusharbhatt0135@gmail.com>
* fix: enabling weights on RR events breaks atoms
* Update find-team-members-matching-attribute.input.ts
* refactor: Extract team member processing logic into separate hook
* Update find-team-members-matching-attribute.input.ts
* moved `TeamMemberDto` and `FindTeamMembersMatchingAttributeOutputDto` to platform-types
* `team-members.output.ts` -> `team-members-attributes.output.ts`
* upgrade platform-libraries
* Add logging to `handleGroupEvents`
* `createUsersAndConnectOrg` skipDuplicates when creating new users
* `ProfileRepository.createMany` to get username from `orgAutoAcceptEmail`
* Refactor `createUsersAndConnectToOrg` to use `createMany` instead of individual db calls
* Add error logging to `sendSignupToOrganizationEmail`
* Move `sendSignupToOrganizationEmail` to a `Promise.allSettled`
* Add `createManyForExistingUsers` and `createManyPromise`
* Move creating existing users profiles to `ProfileRepository.createManyForExistingUsers`
* Move `sendExistingUserTeamInviteEmails` to a `Promise.allSettled`
* Refactor `createUsersAndConnectToOrg` to use `ProfileRepository.createManyPromise`
* Type fix
* Create `generateNewChildEventTypeDataForDB`
* Create `addNewMembersToEventTypes`
* Type fix
* Type fix
* Type fix
* `createMany` new workflowsOnEventTypes
* Introduce `DATABASE_CHUNK_SIZE`
* Batch connect children event types
* Batch connect profiles to existing users
* perf: Slim down loggedInViewer some more
* Move locationOptions to apps router
* Moved calVideo related handlers to separate router
* Moved calendar related handlers to separate router
* Rename
* Moved deleteCredential to new router
* Moved updateProfile to me router
* fix unit test
* fix e2e test
* tweak
* missing
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: unknown <adhabal2002@gmail.com>
* feat: membership user return bio and metadata
* feat: input and output bio and metadata for users and manager users
* test: managed event type appears when fetching user event types
* test: managed event type appears when fetching user event types
* test: managed event type appears when fetching user event types
* test: managed event type appears when fetching non-org team user event types
* feat: organizations users bookings endpoint
* feat: book using eventSlug & username & organizationSlug
* chore: generate latest docs
* fix: Updated DateRangePicker in limit future booking
* removed unnecessary comments
* minor changes in end date selection
* final changes in end date selection
* minor changes in end date selection
* fixed issue of logs
* added allowPastDates props for out of office data selection
* feat: get org bookings endpoint api-v2
* fix userId filter transform
* fix: update getBookings to take filter.userIds in account
* refactor: getBooking where clause
* fixup! refactor: getBooking where clause
* feat: enable org owners to see org member bookings as attendees
* update flaky e2e tests
* fixup! feat: enable org owners to see org member bookings as attendees
* fixup! fixup! feat: enable org owners to see org member bookings as attendees
* chore: differentiate between org/team owner/admin
* chore: throw error with invalid userIds filter
* chore: clearly ensure non team orgs when orgId is not specified
* bump libraries and add comments
* bump libraries
* chore: give main profile orgId to getAllUserBookings
---------
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
* extract NextRequest
* update api and tests
* booking limits tests
* fix more tests to use new approach
* update more tests with new format
* extract getOrgDomainConfig to not use req
* extract req from loadNewUsers and pass in hostname/forcedSlug
* fix instant meeting types and hostname fixes
* fix handleNewBookingReq
* fix type errors in tests
* make hostName and forcedSlug optional
* fix type err
* Revert "fix type err"
This reverts commit 9d5de9019d9dafe348c97b876baaa1d0675967e5.
* wip fix e2e
* fix: add missing headers
* migrate handle recurring event and also create tests specific to fn
* platform recurringbooking
* fix type
* hard code types on request object
* bump libraries
* fixup! bump libraries
* fix: accessing host if headers not passed
* fix: v2 recurring booking
* fix: accessing host if headers not passed
* chore: bump platform libraries
* fix tests
* push
* chore: bump libraries
* push lock changes
* bump libraries
---------
Co-authored-by: amrit <iamamrit27@gmail.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
* feat: added zoom, office365-video as valid event-type locations
* added docs
* Update stripe.service.ts
* enable conferencing apps for teams initial commit
* fix: make conferencing atom work with teams
* update team events in bulk update default location
* feat: Separate endpoints for team conferencing apps instead of query params
* Display all team events in 'Bulk update existing event types' modal when conferencing atom is enabled for Teams
* fix: bulk update default location for team events
* removed the organizations endpoints
* Refactor: Separate functions for team events to follow SRP
* undo extra changes
* undo extra changes
* fix: platform libraries build breaking
* feat: only allow integrations which are installed in create/update team/user event-type endpoints
* fix: merge conflicts
* remove redundant imports
* Update ConferencingAppsViewPlatformWrapper.tsx
* Update useBanners.ts
* fix: axios error response interceptor
* feat: update :app param docs in `organizations-conferencing.controller`
* Revert "fix: axios error response interceptor"
This reverts commit 729eac3eee9f81c19b5368bbae4b1666884221fd.
* Update useAtomsGetInstalledConferencingApps.ts
* upgrade platform libraries
* Update apps.ts
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* Add akismet package to tasker
* Create scanWorkflowBody task
* Schedule workflow body scan
* Add AKISMET_API_KEY .env
* Auto lock user if spam is detected
* Uncommit key
* Add safe param to workflow step
* Migration for safe field
* Do not process workflow steps is `safe` is false
* Update migration to set previous records to true
* Address comments
* Refactor `scheduleWorkflowNotifications` to accept an object
* If new steps or editing old ones send to tasker
* Call `scheduleWorkflowNotifications` in task
* Fix `IS_SELF_HOSTED`
* Remove unused function
* Make `safe` optional in schema
* Type fix
* Revert "Make `safe` optional in schema"
This reverts commit d0964702affa87c35562300301473d25635c565b.
* Revert "Type fix"
This reverts commit d9a031303269a2994ae46f576ab2a3d31e4d977b.
* Type fixes
* Type fixes
* Address comments
* Fix tests
* Add tests
* Update tests
* Typo fix
* Update `safe` to `verifiedAt`
* feat: Compare workflow reminder bodies to default template (#19060)
* Add `getTemplateForAction` function
* Use `getTemplateForAction` when creating a new step
* Use `getTemplateForAction` when action changes
* Have `emailReminderTemplate` accept an object as a param
* Rename `getTemplateForAction` to `getTemplateBodyForAction`
* Simplify changing body when changing templates
* Create `compareReminderBodyToTemplate`
* In task, compare if reminderBody is a template
* Linting
* Add tests
* refactor: `emailReminderTemplate` to accept object as param (#19288)
* Add `getTemplateForAction` function
* Use `getTemplateForAction` when creating a new step
* Use `getTemplateForAction` when action changes
* Have `emailReminderTemplate` accept an object as a param
* Rename `getTemplateForAction` to `getTemplateBodyForAction`
* Simplify changing body when changing templates
* Create `compareReminderBodyToTemplate`
* In task, compare if reminderBody is a template
* Linting
* Add tests
* Refactor `scheduleEmailReminders`
* Refactor `create.handler` for new workflows
* Refactor `emailReminderManager`
* Refactor `getEmailTemplateText`
* Fix typo
* Type fix - whatsapp plain text template imports
* Type fix - no template found
* Type fix - add `isBrandingDisabled` to `emailReminderTemplate`
* Add workflow and user to prisma mock
* Fix imports for akismet dependencies
* Record user lock reason
* Undo linting changes
* Fix tests
* New workflow, at verify created step
* Handle if `SCANNING_WORKFLOW_STEPS` is toggled
* Move `verifiedAt` checks to specific schedule functions
- `scheduleWhatsappReminder`
- `scheduleEmailReminder`
- `scheduleSMSReminder`
* Update logic
* Do not fallback verifiedAt
* Add comment to next.config.js
* refactor: slots input service rely on eventTypeId and set start hours if none set
* fix: filter out ooo slots
* test: ooo days filtered out of slots
* revert changes
* feat: add refreshTokenExpiresAt to /force-refresh, /exchange/, /refresh
* feat: encode ownerId, expiresAt in tokens & return refresh expires at when creating managed user
* driveby:fix: pass language when creating managed user
* refactor: remove void notation and await access token propagation
* refactor: centralize createOAuthTokens and refreshOAuthTokens logic
* docs: tokens expires at and payload
* chore: comment selectedDate in examples app booker
* ui playground
* add types to ui
* push avatar ignore ts and eslint errors
* feat: V3 UI avatar (#18997)
* avatar playground
* add overflow-hidden back for loading indicator
* update lock
* feat: v3/badge (#18999)
* badge intro
* fix text on small badge
* add dark mode warning
* feat: v3/button (#19014)
* TOC
* wip buttons
* shadows
* secondary
* semantic colours
* minimal buttons
* update disabled states
* checkbox
* dropdown v3
* load icons
* fix design sections
* fix icon gap
* fix
* remove client component from rsc
* use peer as avatar
* gif
* fix button gap - dropdown iocn
* support start icon in dropdowns
* add alert demo + v3 component + darken semantic text
* base inputs and text field
* wip input
* input field addon/suffix
* toast page
* wip select
* match designs for input and select rounded
* fix
* fix select isloading transform
* fix multi icons transition rotation
* fix group heading
* range slider demo + range slider
* range slider popover design
* v3 dialog
* fix slider thumb size
* wrap in suspense for useSearchParam difference in next14+
* base of tabs + horizontal tabs
* fix select sizing to match input 36px
* fix dark mode hover on button
* target domState class for light/dark so we work on portal elements
* fix default bg on popover
* lightmode toasts + eleveation token
* empty screen
* intro to split button concept
* mass colour updates
* intro to themes
* remove i18n from label with name
* bouncy buttons
* feat: small select
* nav item dumb component
* full demo
* settings demo
* fix tabs
* fix mt
* fix dropdown feedback from loom
* alert fixes mentioned in loom
* push font-cal
* move to fumadocs
* fix avatar
* colors table
* add typeography
* icon + spacing guide
* add border radius and shadow tables
* fix colours and border radius
* remove prose undline via fumas fork
* fix icon buttons sizes
* button group component
* fix horizontal tabs
* tab fixes
* switches
* pagination component
* show toasts components raw
* sync with airtable
* add use client
* 10px on input again
* 10px in select also
* fix input height
* fix files merge
* fix loading state for icon buttons
* fix button fab
* Enable addon to now overflow to next line in DS
* use cal font for dialog text
* add avatar square variant
* fix select padding and menu size
* fix type errors
* fix type errors
* add switch small size and fix type errors
* fix ref types on input
* update web styles
* remove addonFilled to fix type errors
* push dialog fixes
* fix checkbox display
* remove prose from alert examples
* remove prose from all our component examples
* badge rounded-lg on lg size
* update colors
* force w/h on icon buttons instead of inheriting
* remove border-focus
* remove border-focus from tailwind config
* update tokens to match new colours
* add new border subtle tokens and add to toasts
* fix lg button padding
* fix and drastically improve rtl rests
* multi select use badges
* use badge design for select pills
* fix avatar alignment
* fix tests and remove redudant ones
* fix tests and remove redudant ones
* update atoms globals css
* extract tokens.css
* extract app.css
* force flex for atoms
* add @calcom/ui/css
* revert ui playground styles abstraction
* fix input focus states
* fix focus states for buttons
* feat: v3/app work (#19233)
* globals.css for app + event types listing search
* few app wide NITS
* fix select foucs within styling
* fix formbuilder switch styles
* fix disabled state of nested inputs
* workflow fixes
* webhook form fixes
* i18n on tabs info
* booking filters + tab
* fix filters spacing
* make first item so we get correct border radius if not default
* round radio group in create event types + make button small
* profile page
* update editor br
* button nits in existing places in the app
* fix timezone select and multilist in guest form
* fix text area on public booking page
* size small event types create
* margin on routing filter
* filters improvments
* routing insights fixes
* fix date filter range
* ooo fixes
* fix teams/members bulk actions
* create team UI
* i18n in useTabs instead of in tab component now
* Add event type setup border to availability
* fix bulk actions on org members table
* onboarding fixes
* fix input types with ref stripe comparision
* i18n fixes for platform
* update globals of atoms
* fix form builder firstname/lastname switch + correct footer useage
* fix select
* Revert "add @calcom/ui/css"
This reverts commit 0dd8f9012907a278cfede4a98f289cb0744c9244.
* revert tokens css
* Revert "extract app.css"
This reverts commit 10b998604816ad3310c24b36a02a638dabc5be24.
* linear nits
* workflow dropdown
* fix page theme heading sizes to match cards
* fix stepper for team creation
* adjust margin to FilterSearchField
* fix ooo icon
* fix booker and dark mode due to darkgray 50
* more dark mode fixes
* add size prop
---------
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* update package name
* update package json lost in merge
* update package json lost in merge
* re-genrate source
* fix imports
* imports
* fix merge issues and imports
* restore globals css
* add source to git ignore
* remove old source files
---------
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* Add checkbox field type
* Handle accepting booleans under value field when saving writing to field settings
* UI saving settings to write to checkbox field
* Prepare update body to pass boolean value to checkbox field
* Type fixes
* Type fix
* refactor handleCancelBooking to not have next request
* fix platform v2 function calls
* dont fall back to "" if no seat refrence
* add missing type from merge
* chore: bump platform libraries
---------
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
* add more methods to billingService
* update profile handler
* stripe customer handler
* verify email
* move imports + move generic methods to billing service
* move to strip ebilling service class
* push changes to mocks
* fix enum
* fix typo
* correctly update customer metadata
* fix userId type to number
* fix types on billing services
* fix type errors due to return methods differing
* fix return types
* fix: add isAdminOrOwner and useIsOrgAdminOrOwner
* make useIsOrgAdminOrOwner to accept session
* revert change
* remove useIsOrgAdminOrOwner and rename isAdminOrOwner to checkAdminOrOwner
* fix type
* fix type
* fix import
* fix: platform seed data
* fix: assignAllTeamMembers: true excludes team owners in platform
* refactor: platform plan guard explicit error message
* refactor: require either hosts or assignAllTeamMembers=true
* refactor: require either hosts or assignAllTeamMembers=true
* fix: before creating or updating team event type check if doesnt exist with that slug
* chore: regenerate docs
* test: can update round robin that had assign all team members true
* fix: platform guard spec test
* fix: seed platform membership role
* fix: test ts error
* chore: decouple ui dialog from AppRouter and Atoms
* fix type e2e test
* fix: import dialog from @calcom/ui/components/dialog
* fix: remove log
* fix unit test
* fix
* fix and move data-override-list test to features package
---------
Co-authored-by: hbjORbj <sldisek783@gmail.com>
* perf: Remove ssrInit from layout and event-types
* remove ssg file since not used
* refator trpc usage in app router
* fix
---------
Co-authored-by: hbjORbj <sldisek783@gmail.com>
* fix: relocate filter segment buttons on org member list
* implement toolbarContainerRef
* adjust location
* reorganize the hierarchy of DataTableProvider
* rename toolbar container to cta container
* move clear button to toolbar right
* Add `RR_REASSIGNED` to schema
* Handle recording reassigned manual vs rr
* Pass manual assignment prop to `AssignmentReasonRecorder`
* Add log to determine who is doing the reassignment
* RR reassign - add initializing log
* Record assignment reason when reassigning via rr
* Add `reassignedById` in trpc endpoint
* Add `reassignedById` param in api v2 endpoint
* Migration to add `RR_REASSIGNED`
- Added loading state to ConnectedCalendars and ConnectedVideoStep components.
- Replaced native button elements with a custom Button component for consistency.
- Updated SetupAvailability to use async mutation methods.
- Integrated loading state into the onboarding view for smoother transitions between steps.
* fix: skip when browsing month has no available slots
* Fix zustand error + add wip tests
* Fix issue with using brows
ingDate too early
* Use slots instead of schedule return types to remove hard coupling to tRPC
* Some await fixes + use type definition from extended core feature
* Move useNextMonth to custom hook
* Add unit tests to cover the next month scenario
* Use changed interface, schedule -> slots,isLoading
* Return no-op until ready
* Add picklist to `SalesforceFieldType` enum
* Add picklist value to Salesforce settings
* Add `getPicklistFieldValue` method
* Find picklist option based on active and value
* fix trpc session circle dep
* fixes trpc session cirlce dep
* fix relative imports
* fix more imports to use types and not trpc
* fix exports
* Fixed types
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Added a scroll-bar class and set a max height on DropdownMenuContent to ensure large dropdowns are scrollable, improving the user experience by making all items accessible without expanding beyond the viewport.
* Remove unused param
* Add log when no contacts are created
* Replace console.log with logger
* Add logging around `buildRecordUpdatePayload`
* Add details if field isn't being caught
* Revert change
* Type fixes
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* feat: Don't allow unavailable slot's booking form to be visible - Send back to slots listing
* Improvements
* feat: Add env variables and strategies to prevent booking failures
- Added new environment variables for configuring slot reservation and availability checks
- Implemented strategies to handle concurrent bookings and slot availability
- Updated Booker component and related files to support new reservation and slot checking mechanisms
- Added README with detailed explanation of booking prevention strategies
- Configured dynamic intervals for slot and reservation queries
* docs: Update Booker README with detailed slot reservation and availability explanation
- Clarified slot reservation behavior when multiple users access the same booking page
- Added details about `getSchedule` refetching strategies and timing
- Explained how slot availability is detected and communicated to users
* Support for skip confirmation form flow
* feat: Enhance slot availability and reservation mechanism
- Refactored slot availability checking to support multiple slots
- Added tentative selected timeslots to improve booking UX
- Updated trpc handler to check availability for multiple slots
- Introduced new store methods for managing tentative slot selections
- Improved slot reservation and availability status tracking
* refactor: Improve slot availability quick check mechanism
- Renamed and restructured slot availability check parameters
- Extracted quick availability checks into a separate hook
- Updated type definitions for slot status and availability checks
- Simplified slot availability logic in Booker and related components
- Maintained cached state for quick availability checks
* Add tests booker
* Support minimu booking check too
* change data-testid
* Rneame
* Fix race condition with uid cookie not set
* fix tests
* Remove unsded variable
* fixup! Merge branch 'main' into dont-allow-booking-form-with-unavaialble-slot
* Fix the unavailability bug when only seconds differ
* Handle column view that doesnt have selected date and also add tests for isTimeSlotAavailable
* Fi ts and unit tests
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmgmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* refactor: input event types service remove unused code
* feat: toggle if email field is hidden
* chore: ensure event type has email or attendee phone field required
* chore: ensure non-org team cant have phone only event type
* chore: ensure users cant have phone only event type
* chore: ensure org team can have phone only event type
* chore: bump libraries
* docs
* refactor: confirm failing test response message
* fix: unit test
* chore: default organizer booking location docs
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* perf: Slim down loggedInViewer tRPC router
* Fixed trpc client calls for new routes
* Moved bookingUnconfirmedCount
* Moved getUserTopBanners to me router
* Moved shouldVerifyEmail to me router
* Moved i18n from public to its own router
* fix ssrInit
* fix ssrInit usage
* fix type check
* better naming
* fix
* fix
* Fix types
* Removed used of importHandler
* perf: Move apps procedures off of loggedInViewer
* Moved 2 more apps-related procedures
---------
Co-authored-by: hbjORbj <sldisek783@gmail.com>
* perf: Slim down loggedInViewer tRPC router
* Fixed trpc client calls for new routes
* Moved bookingUnconfirmedCount
* Moved getUserTopBanners to me router
* Moved shouldVerifyEmail to me router
* Moved i18n from public to its own router
* fix ssrInit
* fix ssrInit usage
* fix type check
* better naming
* fix
* fix
* Fix types
* Removed used of importHandler
---------
Co-authored-by: hbjORbj <sldisek783@gmail.com>
* fix paths in packages/config/tailwind preset
* ignore node_modules in platform tailwind preset
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* fix: support more className-related props at DataTable
* update style
* fix type error
* use relative import
---------
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* fix: Do not self import @calcom/ui
* Make translations optional
* Fix mocking implementation of Button (never worked)
* Ensure other libraries can resolve AppListCard
* create seed for org upgrade
* migrate about/new pages
* pages refactor + use persistant zustand store
* invited members view + confirm button
* add check to org slug
* check reserved subdomain
* remove quotes from subdomain env var
* intro to creation + billing
* create price
* fix types
* createWithPaymentIntent + permission check on teams
* open stripe link in popup
* intro to tests
* organization price and seat override tests
* move permissions to a new permission service
* update env and permission check
* intro to paid invoice trigger
* dont use subId
* wip
* Get e2e working with migration of teams and members
* fix ts errors
* Get flow working again
* Fix various issues and refactor
* Some more fixes
* Fix wrong page route link
* Platform onboarding fix and moving members of team to org rix
* Platform onboarding fix and moving members of team to org rix
* Fix tests, found a bug
* Get custom price flow working
* Get admin impersonation flow working for a non-existent user
* Fix unit test
* Admin onboarding handover
* fix admin onboarding tests
* fix ts error
* Get updateQuantity working
* More fixes
* fix test
* fix schema name
* Add tests
* Add missing file
* More tests
* Add more tests
* fix mt-2 moving down input into overflow
* fix handover layout removing HOC
* Update PR_TODO.md
* fix ts error due to merge conflict
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmgmail.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
* teamMates OOO is visible for teamMember
* Update packages/features/settings/outOfOffice/CreateOrEditOutOfOfficeModal.tsx
Co-authored-by: Omar López <zomars@me.com>
* nit
* fixed tests, admin chk reqd for forMembers only
* check reqd in case of teamOOO only
* datefilter with default and improved search filter
* fix preset options
* fix ooo tests, due to default date filter
* ensure ooo test's wont fail when run on different dates of the month, due to default filter
* improvement: instead of 'Date to Year' safer is customRange
* added test for non-admin team ooo
* show disabled icons instead of notshowing
* tests for dateRangeFilters
* some more daterangefilter tests
* nit
* include only fetch prev records in this pr
* nit
* chore
* chore
* review comments
* chore
* update to fix tests
* nit
* nit
* update pagination mode
* removed unrelated changes
* remove unrelated changes
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
* refactor: allow metadata to also receive numbers and booleans
* refactor: Team metadata
* refactor: Managed orgs metadata
* refactor: Team metadata
* test: organizations teams create team with metadata
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* feat: v2 get managed users by email
* docs
* fix: offset query param not showing up in docs
* finish merge main
* fix: check if each email in emails query param is email
* refactor: Remove intervalLimits from @calcom/lib and export directly (#19710)
* refactor: Remove intervalLimits from @calcom/lib and export directly
* Tackle other places that use parseBookingLimit/parseDurationLimit
* More type fixups that were hidden by previous fails
* Fixed up booking-limits file
* Remove server-only
## What does this PR do?
<!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. -->
- Fixes #XXXX (GitHub issue number)
- Fixes CAL-XXXX (Linear issue number - should be visible at the bottom of the GitHub issue description)
## Visual Demo (For contributors especially)
A visual demonstration is strongly recommended, for both the original and new change **(video / image - any one)**.
#### Video Demo (if applicable):
- Show screen recordings of the issue or feature.
- Demonstrate how to reproduce the issue, the behavior before and after the change.
#### Image Demo (if applicable):
- Add side-by-side screenshots of the original and updated change.
- Highlight any significant change(s).
## Mandatory Tasks (DO NOT REMOVE)
- [ ] I have self-reviewed the code (A decent size PR without self-review might be rejected).
- [ ] I have updated the developer docs in /docs if this PR makes changes that would require a [documentation change](https://cal.com/docs). If N/A, write N/A here and check the checkbox.
- [ ] I confirm automated tests are in place that prove my fix is effective or that my feature works.
## How should this be tested?
<!-- Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration. Write details that help to start the tests -->
- Are there environment variables that should be set?
- What are the minimal test data to have?
- What is expected (happy path) to have (input and output)?
- Any other important info that could help to test that PR
## Checklist
<!-- Remove bullet points below that don't apply to you -->
- I haven't read the [contributing guide](https://github.com/calcom/cal.com/blob/main/CONTRIBUTING.md)
- My code doesn't follow the style guidelines of this project
- I haven't commented my code, particularly in hard-to-understand areas
- I haven't checked if my changes generate no new warnings
* Add unit tests and e2e
* fix ts errors
* Add comment
* bump platform libs
* fix: yarn-lock
* fix yarn.lock
* doc update
* Add isString
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
* feat: implement standard pagination for org member list
* fix type error
* i18n for pagination
* add paginationMode
* apply the change to PlatformManagedUsersTable
* replace useInfiniteQuery with useQuery
* fix type error
* fix type error
* fix type error
* fix type error
* update comment
* remove optimistic update
* minor changes
* update usage on nuqs
---------
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* fix: duplicate value found in common.json error
* Remove subteam invitation translation from locales
* verify_email_email_button to verify_email_button
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* add component to set interval
* fix variable namings
* fetch data for given interval
* migration
* fix type errors in test
* test correct filtering for interval
* fix start end end times to interval
* fix type error
* pass rrResetInterval to getOrderedListOfLuckyUsers
* fix imports
* add translations
* add missing translation
* code clean up
* fix type errors
* fix type error
* fix import
* add translation
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* chore: Fix build failure due to trpc inference depth
* Also bump platform libraries typescript version
* fix: e2e test using unassigned variable
* chore: bump libraries to 0.0.142
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
* update images
* restructure getting started for platform
* add steps on setting up a platform account
* PR feedback
* fixup
* add setup page
* move over setup to a separate page
* update images
Found via `codespell -q 3 -S "*.svg,./apps/web/public/static/locales,./packages/app-store/stripepayment/lib/currencyOptions.ts,./packages/lib/freeEmailDomainCheck/freeEmailDomains.ts" -L afterall,atleast,datea,fo,incase,ist,nam,noone,notin,optionel,perview,pris,reccuring`
* version and verify-booking-token
* username route
* api/me
* logo route
* render email in dev
* link route
* future
* nope and geo location
* referal link and daily
* intercom route and dynamic variables
* intercom route and dynamic variables
* scim 2.0 and helpscout route
* app credentials
* api/book events
* fix daily import path in tests
* fix buildLegacyRequest generation
* fix type errors
* migrate the /teams/ routes
* move cron jobs
* fix daily import path in tests
* fix buildLegacyRequest generation
* fix type errors
* migrate the /teams/ routes
* move cron jobs
* Revert "api/book events"
This reverts commit 607a32fb5b754cad090c2d0cbf64a68f990e220e.
* mock next server NextResponse to fix daily video
* add default responder to teams api
* fix search params
* uses nextUrl.searchParams instead of new url
* uses nextUrl.searchParams instead of new url
* remove outdated api config
* remove app dir version of inbound dynamic variables
* restore pages version of inbound variables
* fix missing code from stupid cursor
---------
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* chore: update robots.txt to disallow /settings and /my-account
* Update robots.txt
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* add dry run param for v2 getSlots
* fixup
* revert changes
* dont reserve a slot for booking dry run
* accept dry run prop as a parameter instead of computing
* fix merge conflicts
* fixup
* dont reserve slots for booking dry run
* refactor: Remove intervalLimits from @calcom/lib and export directly
* Tackle other places that use parseBookingLimit/parseDurationLimit
* More type fixups that were hidden by previous fails
* Fixed up booking-limits file
* Remove server-only
* remove create button for teams from calcom ui
* migrate timezone select to features
* remove trpc from phone and storybook provider
* new-yarn.lock
* fix imports + test file for select
* fix platform timezone select to use Raw timezone select
* fix timezone type import
* use correct select in timezone-select.tsx - needs trpc version
* fix lock and remove test-utils
* fix log file
* Updated yarn.lock
* Fixed types
* Fixed tests
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* Revert "Revert "chore: rename DWD to DelegationCredential (#19703)" (#19734)"
This reverts commit 340b5ab061.
* chore: fix schema and types for now
* fix: domainWideDelegationCredentialId error type
* fix: open cal video url on new page when ready
* fix: open on new tab
* chore: change logic
* chore: add condition for embed
* chore: simplify the code
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Typescript fixes and updates for bumping ts version to 5.8.2
* Different TS versions do see an error, so @ts-ignore'ing
* Attempt this fix for ignoring createDecipher/createCipher fns
* Remove @ts-expect-error
* feat: add hitpay embed feature for cal embed
feat: update hitpay app description
fix: fixed customers being able to exceed bookings in the same timeslot when using HitPay
fix: fixed callback issue in cal.com using hitpay app when not receiving payment responses
* fix: fixed type-check error
* fix: don't POST to cal.com/[user]/[type]
* fix: return html with cal calendar embed
* fix: intercom app team events types
* feat: improve Intercom UX integration
* Merge branch 'main' of https://github.com/calcom/cal.com
* remove barrel export for client
* fix more imports
* remove server barrel
* remove more barrel exporst and fix tssconfig
* fix types
* fix imports for removed barrels
* fig ssg createserverside helpers
* restore lock
* new yarn lock
* remove barel exports
* remove barrel
* replace client with react in tsconfig
* fix yarn lock
* Update exports for trpc to not be types
* add ENDPOINTS export to the correct location
* other exports fixes lost due to barrel
* fix client error export
* more imports
---------
Co-authored-by: hbjORbj <sldisek783@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* fix: cancelledby to work on api v1
* fix: scheduleId to work with hosts in eventtype api v1
* Update event-type.ts
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* feat: booking redirect page is now w UID
* refactor: use getBookingRedirectExtraParams
* refactor: remove uncessary const result
* uid isnt the first param anymore
* fix: show selected filter values first in single- & multi-select filters
* fix type errors
* fix type error
* fix type error
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* feat: added Ability to set organizer's default app as a valid input location in api/v2
* only allow organizers default for team events
* fixed for atoms and added unit and e2e tests
* Update organizations-event-types.e2e-spec.ts
* Update transformApiEventTypeForAtom.ts
* published platform-libraries@0.0.124
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: remove ‘add guests’ from the dropdown if it’s disabled in the booking questions
* fix: remove dd guests' from the dropdown if it's
disabled in the booking questions
* fix: Re-instate new slot logic now it's well tested
* Fixup getAggregatedAvailability
* Changes to code-owners to reflect removed/moved code
* Move more files around.
* Fix failed type
---------
Co-authored-by: Omar López <zomars@me.com>
* Add endpoints for testing the flow
* Add MVP
* new route
* Fixes
* Fixes
* Remove enable toggle support from domainWideDelegation
* Fixes
* Revert "Remove enable toggle support from domainWideDelegation"
This reverts commit c29e729206cd1fa063f9c9ce0cf148ef1577d60b.
* Revert yarn.lock
* More fixes
* Fix new workspace platform add
* refactor: improvements
* refactor: bug fixes and improvements
* fix: type errors
* fix: conflicts
* chore: update test
* fix: logic
* chore: improvements
* fix: toglle
* fix: bugs
* fix: type err
* chore: check number type
* fix: after conflicts
* chore: fix type err
* fix: type errors and tests
* fix: tets
* test
* chore: remove unused
* fix: google meet url on booking page and secondary calendar
* fix: add property
* fix: type err
* fix: re assingment bug
* fix: use getAllCredentials
* chore: fix import
* fix: installed count
* fix: pass event type
* fix: import
* fix: [Stacked PR] Review fixes (#17958)
* Review fixes
* fix: destination calendar bug
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* refactor: use repository
* chore: remove duplicate
* fix: More review fixes for domain wide delegation (#17969)
* Reuse buildCredentialPayloadForCalendar
* fixes
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* fix ts error
* Fix getSchedule not using dwd credentials (#17995)
* fix: Remove direct DWD table access from google-calendar and remove delegatedToId column from Credential (#18015)
* Remove fn rename to reduce number of files changed
* chore: check feature globally
* test: add unit tests
* chore: move function
* test: add booking test
* wip
* Remove domain-wide-delegation team feature flag
* Make sure duplicate calendars are not shown due to DWD. Show DWD when there is conflict
* Fix tests and their ts errors
* Fix more tests
* Move findUsersForAvailabilityCheck to separate file as it has AppStore dependency causing problem with Routing Forms. Build crashes
* fix: Multiple calendar connections from Google not showing up in apps/installed
* DestinationCalendar must have either credentialId or domainWideDeelgationId. Also handle the case when DWD is disabled and there was a non-dwd credential that could be used
* Disable deletetion of DWD as it is destructive and prefer disabling instead
* Show DWD credential calendars at the top
* Fixed tests
* Calendar Cache DWD support
* Self-Review: Verify email required and add more selectedCalendar tests
* Self Review: shorten names
* Self ReviewL Dead code removal
* Revert "Calendar Cache DWD support"
This reverts commit 009f236470fa21eba5986117d4f6e4d4c5e38c34.
* Some misc fixes
* fixes
* Performance improvememt in slots loading and booking
* More cases for handling dwd credentials
* simplify the logic. Ensure that EventManager and the modules below it in the flow have CredentialForCalendarService available
* Fix tests
* Fix installed/conferencing not showing gogole meet
* Shorten name
* Fix ApI v2 tests
* Add some more tests
* add getSchedule tests
* Improve tests
* Make Google Meet default when DWD for google is enabled
* Enable feature flagging for DWD
* chore: bump libraries
* Encrypt serviceaccount private key
* Fix ts errors
* bump platform libraries
* org add dwd
* org add dwd
* bump platform libraries
* fix selected calendars
* fix remove selected dwd calendar
* remove oauthclient id aliad in authedCalendar
* remove oauthclient id aliad in authedCalendar
* refactor: OrganizationsDwdController
* chore: export toggleDwdEnabled from platform-libraries
* feat: v2 update (enable / disable) dwd
* refactor: SelectedCalendarsController check if user belongs to dwd org & for not dwd use previous logic
* wip: DestinationCalendar send domainWideDelegationCredentialId from frontend to api
* try fix set destination calendar api v2
* fixup! try fix set destination calendar api v2
* setting google meet as default location working for dwd
* bump platform libraries version
* allow office 365 workspace slug
* allow office 365 workspace slug
* chore: v2 create dwd MS and Google service keys input
* fix: CreateDwdInput serviceAccountKey
* fix: CredentialForCalendarService type
* fix: check workspace slug
* feat: update serviceAccessKey of DWD
* testing
* fixup! testing
* fix: getAuthUtl bug
* fix: unit tests
* fix: type err and unit test
* fix: e2e test
* fix: credentials bug and failing unit tests
* Update CalendarService.ts
* chore: refactor office365 calendar service and add testDomainWideDelegationSetup
* fix: office365Calendar use correct clientId/Secret for DWD
* fix: office365Calendar dwd no need refresh token
* test: add unit test for outlook dwd and setup
* feat: added dwd support for office365 calendar
* feat: added dwd support for office365 video
* test: finish test for outlook dwd
* fix: create dialog bug
* chore: remove console logs
* fix: refreshToken bug
* bump version libraries
* refactor: fetch dwd credentials only in findQualifiedHosts
* fixup! refactor: fetch dwd credentials only in findQualifiedHosts
* fix: type err
* fix: type err
* fix: getUserDisplayName
* fix: unit test
* chore: bump platform lib
---------
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* update profile instead of username. Display p.username
* Update packages/trpc/server/routers/viewer/organizations/listMembers.handler.ts
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Update packages/trpc/server/routers/viewer/organizations/getUser.handler.ts
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Do not import stripe lib in getServerErrorFromUnknown
* address comment
* remove comment
* add url
* keep the location
* remove space
* add unit test for getServerErrorFromUnknown
* improve
* fix: enable event-type booking field url with api v2
* fixup! fix: enable event-type booking field url with api v2
* fixup! fixup! fix: enable event-type booking field url with api v2
* fixup! fixup! fixup! fix: enable event-type booking field url with api v2
* feat: add areDefaultEventTypesEnabled to PlatformOAuthClient
* feat: specify areDefaultEventTypesEnabled when creating OAuth client
* feat: specify areDefaultEventTypesEnabled when updating OAuth client
* feat: display areDefaultEventTypesEnabled in OAuth clients list
* refactor: set areDefaultEventTypesEnabled by default to false on API level
* feat: v2 API CREATE managed user toggle default event types
* refactor: centralize OAuth inputs and outputs in platform/types
* fix: correct response types for OAuth hooks
* refactor: web/lib/hooks/settings/platform/oauth-clients/useOAuthClients.ts
* refactor: web/lib/hooks/settings/platform/oauth-clients/useOAuthClients.ts
* refactor: split web OAuth hooks into separate files
* refactor: split web OAuth hooks into separate files
* docs: v2 OAuth client inputs and outputs
* refactor: update and create oauth client inputs
* feat: Don't allow unavailable slot's booking form to be visible - Send back to slots listing
* Improvements
* feat: Add env variables and strategies to prevent booking failures
- Added new environment variables for configuring slot reservation and availability checks
- Implemented strategies to handle concurrent bookings and slot availability
- Updated Booker component and related files to support new reservation and slot checking mechanisms
- Added README with detailed explanation of booking prevention strategies
- Configured dynamic intervals for slot and reservation queries
* docs: Update Booker README with detailed slot reservation and availability explanation
- Clarified slot reservation behavior when multiple users access the same booking page
- Added details about `getSchedule` refetching strategies and timing
- Explained how slot availability is detected and communicated to users
* Support for skip confirmation form flow
* feat: Enhance slot availability and reservation mechanism
- Refactored slot availability checking to support multiple slots
- Added tentative selected timeslots to improve booking UX
- Updated trpc handler to check availability for multiple slots
- Introduced new store methods for managing tentative slot selections
- Improved slot reservation and availability status tracking
* refactor: Improve slot availability quick check mechanism
- Renamed and restructured slot availability check parameters
- Extracted quick availability checks into a separate hook
- Updated type definitions for slot status and availability checks
- Simplified slot availability logic in Booker and related components
- Maintained cached state for quick availability checks
* Support minimu booking check too
* change data-testid
* Rneame
* Fix race condition with uid cookie not set
* fix tests
* Remove unsded variable
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmgmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* feature for team ooo crud and past records
* added tests for ooo handler, combined list components for mine,team
* nit: removed commented code
* added current-previous tab , not to show TeamOOO tab for nonadmin
* update for type checks
* updated tests after merge
* updated outofoffice handler after merge
* for alignment with outofoffice header column
* update after resolving merge conflicts
* nit/chore: spacing
* update after changes in router migration
* ui improvements rounded corner
* updated props
* Update apps/web/public/static/locales/en/common.json
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* Update apps/web/public/static/locales/en/common.json
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* updated dialog subtitles, review comments
* Update packages/features/settings/outOfOffice/CreateOrEditOutOfOfficeModal.tsx
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
* Update packages/trpc/server/routers/loggedInViewer/outOfOffice.schema.ts
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
* refactored to split ooo handlers, review comments
* updated test.utils
* chore
* chore: unrelated changes may be merge
* optimized query
* update due to latest changes and merge conflicts
* updates to changes in people filter
* chore
* as now taken care in DataTable
* updates after merge
* updates after merge due tp changes in datatable and others
* update import due to file splitting and new name
* update for typecheck
* update for new add button when empty entries
* nit
* replace tests with e2e tests
* chore
* include only manage team ooo
* fix type check
* Update safe-parse.ts
* use invalidate instead of props, leaving main server components as it is
* nit
* update forMember div ht in edit mode
---------
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* add user pages to config.matcher in middleware
* add app router user booking pages
* remove HeadSeo from users-public-view component
* remove pages router user booking pages
* fix type check
* fix embed
* fix test
* chore: remove BookerSEO from users-type-public-view
* fix
* migrate all /user embed pages to app router
* remove /future routes
* fix prefill not working with preload
* move to (booking-page-wrapper) route group
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* Reapply "fix: replace filter implementations on bookings (#19445)" (#19506)
This reverts commit f6af6e34bd.
* force custom date range selector for bookings except for Past tab
* fix e2e test
* add e2e tests
* fix e2e test
* fix: No option to install/disconnect app from app detail page
* Fix types
* fix: Install button showing up even after it is installed for all targers
* chore: Simplified installOrDisconnectAppButton making it easy to read
---------
Co-authored-by: Hariom <hariombalhara@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* perf: Cache app store imports
* Added a console log to see when imports happen
* Discard changes to yarn.lock
---------
Co-authored-by: Omar López <zomars@me.com>
* update to consider sendToAll
* added tests for team routingForms selectAllMembers cases
* chore
* chore
* chore
* updated test case in case of toggle off
* tweak
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: unknown <adhabal2002@gmail.com>
* fix: replace react-hot-toast with sonner for toast notifications
* feat: add country code (#19264)
* perf: Move PlainChat up the hierarchy to remove rerenders (#19255)
* perf: Move PlainChat up the hierarchy to remove rerenders
* rmeove yarn lock
---------
Co-authored-by: Nizzy <nizabizaher@gmail.com>
Co-authored-by: nizzy <140507264+nizzyabi@users.noreply.github.com>
* hotfix (#19266)
* chore: release v4.9.11
* Handle cancelled status (#19272)
* feat: Use new /routing URL for routing forms (#19235)
* feat: Use new /routing URL for routing forms
* Fixes
* Fix bug
* precent crash
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmgmail.com>
* fix: remove section on /bookings if no data exists (#19261)
* feat: v2 slots new version (#18758)
* refactor: version old slots
* feat: init new slots endpoints
* chore: range format
* fix: duratin
* fix: duratin
* test: slot releaseAt
* refactor: reserve slot response
* refactor variable name
* docs: have new slots controller in docs
* feat: crud for slots reservations
* refactor: use exclude all for response
* docs
* chore: slots input service
* refactor mini
* refactor: remove unused imports
* docs
* handle orgSlug for dynamic events
* refactor: correct name
* docs
* add optional organizationSlug to BySlug search
* refactor: slot output format
* refactor: return seated slot info
* docs
* rename functions
* refactor: slots seated response
* fix: handle same username in org and non org
* refactor: test format
* fix: allow reservationDuration only for authed requests
* chore: check if auth user has permissions to define custom reservation duration
* refactor: split e2e test files
* refactor: invalid request exception codes
* chore: old slots controller uses all old versions
* refactor: remove depreceated fields (#19279)
* refactor: remove depreceated fields
* chore: use v2 endpoint
* chore: update V2 Api type
* chore
* chore: Refactor to remove `getServerSideProps` for /teams route (#19286)
* remove getServerSideProps
* refactor teams route
* chore: release v4.9.12
* fix: Salesforce - if no contact throw Error (#19271)
* Throw error if no contact is passed to createEvent
* chore: update error message
* chore
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* fix: missing await router controller (#19276)
* fix: Default people filter in bookings list for admin (#18035)
* default people filter for admin
* chore
* type check
* added test case
* made test concise to reduce flakiness
* add timeout to wait for second get response before counting
* update timeout
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* feat: add CSAT to V2 bookings return (#19278)
* init
* test: v2 bookings returns rating
---------
Co-authored-by: supalarry <laurisskraucis@gmail.com>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
* chore: disable v2 booking seats safe parse error logs (#19292)
* revert: Reapply "fix: Multiple rr-hosts combine to create erroneous availabil… (#19263)
* Reapply "fix: Multiple rr-hosts combine to create erroneous availability (#18772)"
This reverts commit 5dbc6d9ca6.
* Only thing left is a diff to show which slots are removed
* Add logging around time slot results
* Setup logging through axiom
* .... forgot
* fix: type errors
* Only log when there are differences
* Updated from old which had a failing test to new logic
* chore: release v4.9.13
* fix: flaky test (#19294)
* fix: flaky test
* fix another test
* update
---------
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
Co-authored-by: unknown <adhabal2002@gmail.com>
* chore: calendars controller v2 docs (#19291)
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
* Merge branch 'main' into replace-toaster-with-sonner
* add ireland country code (#19117)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* perf: separate client vs server code from insights layout (#19285)
* add UpgradeTipWrapper
* refactor insights/layout.tsx
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* feat: Use Folders to organize SMS links on Dub (#19248)
* feat: Use Folders to organize SMS links on Dub
* Update yarn.lock
---------
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
* fix: removing-all-members-toggle-for-fh (#19277)
* fix : removing all members toggle for fh
* ux enhancements
* adding placeholder
* chore: release v5.0.0
* fix flake (#19306)
* chore: migrate `/apps/routing-forms/[...pages]` to App Router (#18956)
* wip
* fix
* fix
* refactor
* rename to routingServerSidePropsConfig
* refactor
* refactor
* add routing-link to useIsBookingPage hook
* remove Head component
* fix
* redirect user to apps/routing-forms/forms if user goes to apps/routing-forms
* refactor
* remove log
* remove client component not needed
* clean up code
* remove unneeded metadata
* clean up further
* clean up further 2
* fix type check
* routing-link does not need shell
* Fix title for Routing Form public link and also remove any
* Remove ; in HTML
* Remove unnecessary page reload
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmgmail.com>
* chore: migrate api for team upgrade to App Router (#19100)
* remove old pages router api
* add new app router api
* fix
* fix redirect
* refactor
* fix: cut off and alignment bug (#19317)
* fix: assignment label cut-off
* fix: add all team members label is vertically aligned
* fix: nested scrolls on /bookings (#19284)
* fix: Can't change availability for managed event type (#19006)
* fix: flaky test organization.spec
* fix
* fix: bulk-update-in-scheduleId-in-detailed-view (#19295)
* fix: bulk-update-in-scheduleId-in-detailed-view
* minor-change
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* feat: prevent automatic query parameters when opening booking page (#18132)
- Resolve the user hindrance where the event's booking page should not have search parameters such as date and month in the initial page load
- Contains changes for the fix of issue #18094 as well as it is needed
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* feat: atoms adjustments with ui v3 styles (#19320)
* refactor: Clean out old code, no longer needed (#19323)
* refactor: Clean out old code, no longer needed
* Removed a sneaky one keen to stay behind
* chore: release v5.0.1
* feat: Create `UserCreationService` and use in API V1 create user endpoint (#19150)
* Create `createUser` method in `userCreationService`
* Refactor `UserRepository` create method to accept prisma input and remove business logic
* API use `UserCreationService`
* Move slugify to service
* Use hashPassword instead
* Type fixes in `UserCreationService`
* Add `userCreationService` tests
* API accept data object
* Type fixes
* Add user _post test
* Add test for locked user
* Add locked param to log
* Add user repository tests
* Do not return locked status
* Explicitly pass `locked` prop
* Fix tests when locked isn't returned
* Fix tests
* Pass locked prop
* Edit test name
* Use logger
* Fix passing hashed password
* fix (#19298)
* fix: timezone input text is now visible in dark mode (#19325)
* feat: make first tab active by default (#19315)
* feat: make first tab active by default
* perf: optimize event types tabs rendering with useMemo
---------
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* perf: Use one PageWrapper instance for all settings pages (#18752)
* add a layoutfile to use-page-wrapper route group
* refactor and move bookings status page to route group
* improve logic in pagesAndRewritePaths
* fix
* add use client directive
* move /403 and /500
* move /auth/error
* move /connect-and-join
* move /enterprise
* move /maintenance
* move /more
* move /upgrade
* chore: remove WithLayout from 8 low-risk single pages (#18745)
* move /403 and /500
* move /auth/error
* move /connect-and-join
* move /enterprise
* move /maintenance
* move /more
* move /upgrade
* move /availability pages
* move /event-types pages
* move /insights pages
* move /apps to use-page-wrapper group
* move /getting-started to use-page-wrapper group
* move /signup to use-page-wrapper group
* move /workflows to use-page-wrapper group
* move /video pages to use-page-wrapper group
* pass dehydratedState in layout
* pass dehydratedState in layout
* move settings/(settings-layout) to use-page-wrapper
* move settings/(admin-layout) to use-page-wrapper
* move remaining settings pages to (use-page-wrapper)
* fix test
* remove unused code
* remove unused files
* fix type check
* remove test tag
* remove page
* RSC should not default export client components
* fix: Can't use unsaved booking question as variable in event name (#18604)
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* chore: remove WithLayout from not-found.tsx (#19331)
* fix: redirect logic in /settings/admin/apps (#19332)
* chore: v3 fixed filters, new profile view (#19312)
* fixed filters with badge
* aligned recurrence in bookings
* removed new badge
* new profile view
* fixed try for free button
* fixed form input
* fix: Issues with date changes in column view (#19258)
* fix: coulmn view date change
* Update store.ts
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* chore: fixed tooltip position for routing form (#19267)
* fixed tooltip position for routing form
* fixed offset
* fix: Fairness when routing (#18550)
* Partial push of new filters
* Let's always return the passed host array when a filter doesn't need to be applied
* fix: isFixed typing in same round robin host check
* Add main bulk of rewritten logic for routed fairness support
* Remove console.log
* Add getAttributeWithEnabledWeights to AttributeRepository
* Add OOO entry repository
* Use getOrderedListOfLuckyUsers in lead threshold filtering
* Shortfall already includes weight
* test against minShortfall
* first attempt to fix fallbacks
* Added testcase updates
* Partially fix filterHosts test
* Some test updates
* Removed email field from normalization
* fix no available users found error
* fix unit test
* remove fallback from same host reschedule return
* fixes and improvements for findQualifiedHosts
* include fallback logic in handleNewBooking
* use fallback in handleNewBooking
* fix for contact owner in handleNewBooking
* WIP - comment
* pass routingFormResponseId
* fix type error
* pass routingFormResponse
* fixes in treshold logic
* remove reason
* merge qualified and fallback availabilities
* fix type error
* add and fix tests
* clean up test file
* fix filterHostsBySameRoundRobinHost tests
* fix findQualifiedHosts.test.ts
* fix getRoutedUsers.test.ts
* fix tests
* fix isRerouting check
* fix start time for two weeks check
* fix fallback hosts
* fix test
* fallback hosts should also include qualified hosts
* fix type error
* fix typos
* add contact owner to fallbacks
* fix typo
* fix qualifiedRRUsers
* set fixed users when no hosts
* add tets + code clean up
* add test for reschedule with same host
* fix typo
* add more tests for findQualifiedHosts
* remove skip from test
* add comment
* remove unused code
* fix fallback users in loadAndValidateUsers
* improve naming for fallback
* rename missed fallback variable
* fix reschedule with same rr host in handleNewBooking
* fixes for fallback slots
* add more tests + small fixes for contact owner
* fix tests and type errors
* add logs for fallback
* add type:json to logger
* Fix small merge issue
* fix end time if two weeks are cut off
* add more tests for contact owner availability check
* add new logic for two weeks fallback
* fix reschedule same RR host test
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* fix: EditLocationDialog footer positioning and structure (#19335)
* fix: EditLocationDialog footer positioning and structure
* fix: make RescheduleDialog footer layout and button structure right
* fix: input dialogue glitch now works great
* made tests happy
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Merge branch 'main' into replace-toaster-with-sonner
* chore: remove DefaultToast from toast.stories.mdx
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
Co-authored-by: Nizzy <nizabizaher@gmail.com>
Co-authored-by: nizzy <140507264+nizzyabi@users.noreply.github.com>
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
Co-authored-by: GitHub Actions <github-actions@github.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmgmail.com>
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Vijay <vijayraghav22@gmail.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: unknown <adhabal2002@gmail.com>
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Steven Tey <stevensteel97@gmail.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
Co-authored-by: amrit <iamamrit27@gmail.com>
Co-authored-by: Sanchit Tewari <46245135+sanchitttt@users.noreply.github.com>
Co-authored-by: Rajiv Sahal <sahalrajiv-extc@atharvacoe.ac.in>
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
Found via `codespell -q 3 -S "*.svg,./apps/web/public/static/locales,./packages/app-store/stripepayment/lib/currencyOptions.ts,./packages/lib/freeEmailDomainCheck/freeEmailDomains.ts" -L afterall,atleast,datea,fo,incase,ist,nam,notin,optionel,perview,reccuring`
Found via `codespell -q 3 -S "*.svg,./apps/web/public/static/locales,./packages/app-store/stripepayment/lib/currencyOptions.ts,./packages/lib/freeEmailDomainCheck/freeEmailDomains.ts" -L afterall,atleast,datea,fo,incase,ist,nam,notin,optionel,perview,reccuring`
* Fix: Resolved double-click issue on timeSlot in Booker Atom
* fix: show toast on booking error
* fix: type error
* Prevent the automatic change of bookerState when all fields are filled.
* fix: when a user clicks on a new timeslot, any previously displayed "Confirm" button should be hidden
* Update useSkipConfirmStep.ts
* fix: remove 2 states for slots
* Update useSlotsForDate.ts
* fix types
* use common types
* fix: show VerifyCodeDialog and RedirectToInstantMeetingModal when skiping confirm step
* fix for instant bookings
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* Refactors related to enabling typescript 5.3.3 in @calcom/trpc
* Also skip respective tests (obviously logic is broken)
* This causes problems for some reason, revert
* Bring back QueryCell as it's used by atoms
Found via `codespell -q 3 -S "*.svg,./apps/web/public/static/locales,./packages/app-store/stripepayment/lib/currencyOptions.ts,./packages/lib/freeEmailDomainCheck/freeEmailDomains.ts" -L afterall,atleast,datea,fo,incase,ist,nam,notin,optionel,perview,reccuring`
Closes#19219
* chore: block POST requests to next.js routes except a whitelist
* update config.matcher
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* fix: Issues with scheduling timezone change without end time
* test: remove DatePicker component tests
* feat: implement DatePicker component with tests and update button data-testid
* fix: shadow after email and before the primary label
* fix: autofill input shadow in impersonation view
* fix: improve spacing and layout in EditUserForm
* fix: error due to getRight
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: EditLocationDialog footer positioning and structure
* fix: make RescheduleDialog footer layout and button structure right
* fix: input dialogue glitch now works great
* made tests happy
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Partial push of new filters
* Let's always return the passed host array when a filter doesn't need to be applied
* fix: isFixed typing in same round robin host check
* Add main bulk of rewritten logic for routed fairness support
* Remove console.log
* Add getAttributeWithEnabledWeights to AttributeRepository
* Add OOO entry repository
* Use getOrderedListOfLuckyUsers in lead threshold filtering
* Shortfall already includes weight
* test against minShortfall
* first attempt to fix fallbacks
* Added testcase updates
* Partially fix filterHosts test
* Some test updates
* Removed email field from normalization
* fix no available users found error
* fix unit test
* remove fallback from same host reschedule return
* fixes and improvements for findQualifiedHosts
* include fallback logic in handleNewBooking
* use fallback in handleNewBooking
* fix for contact owner in handleNewBooking
* WIP - comment
* pass routingFormResponseId
* fix type error
* pass routingFormResponse
* fixes in treshold logic
* remove reason
* merge qualified and fallback availabilities
* fix type error
* add and fix tests
* clean up test file
* fix filterHostsBySameRoundRobinHost tests
* fix findQualifiedHosts.test.ts
* fix getRoutedUsers.test.ts
* fix tests
* fix isRerouting check
* fix start time for two weeks check
* fix fallback hosts
* fix test
* fallback hosts should also include qualified hosts
* fix type error
* fix typos
* add contact owner to fallbacks
* fix typo
* fix qualifiedRRUsers
* set fixed users when no hosts
* add tets + code clean up
* add test for reschedule with same host
* fix typo
* add more tests for findQualifiedHosts
* remove skip from test
* add comment
* remove unused code
* fix fallback users in loadAndValidateUsers
* improve naming for fallback
* rename missed fallback variable
* fix reschedule with same rr host in handleNewBooking
* fixes for fallback slots
* add more tests + small fixes for contact owner
* fix tests and type errors
* add logs for fallback
* add type:json to logger
* Fix small merge issue
* fix end time if two weeks are cut off
* add more tests for contact owner availability check
* add new logic for two weeks fallback
* fix reschedule same RR host test
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* feat: make first tab active by default
* perf: optimize event types tabs rendering with useMemo
---------
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* Create `createUser` method in `userCreationService`
* Refactor `UserRepository` create method to accept prisma input and remove business logic
* API use `UserCreationService`
* Move slugify to service
* Use hashPassword instead
* Type fixes in `UserCreationService`
* Add `userCreationService` tests
* API accept data object
* Type fixes
* Add user _post test
* Add test for locked user
* Add locked param to log
* Add user repository tests
* Do not return locked status
* Explicitly pass `locked` prop
* Fix tests when locked isn't returned
* Fix tests
* Pass locked prop
* Edit test name
* Use logger
* Fix passing hashed password
- Resolve the user hindrance where the event's booking page should not have search parameters such as date and month in the initial page load
- Contains changes for the fix of issue #18094 as well as it is needed
Co-authored-by: Tushar Bhatt <95581504+TusharBhatt1@users.noreply.github.com>
* wip
* fix
* fix
* refactor
* rename to routingServerSidePropsConfig
* refactor
* refactor
* add routing-link to useIsBookingPage hook
* remove Head component
* fix
* redirect user to apps/routing-forms/forms if user goes to apps/routing-forms
* refactor
* remove log
* remove client component not needed
* clean up code
* remove unneeded metadata
* clean up further
* clean up further 2
* fix type check
* routing-link does not need shell
* Fix title for Routing Form public link and also remove any
* Remove ; in HTML
* Remove unnecessary page reload
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmgmail.com>
* ui playground
* add types to ui
* push avatar ignore ts and eslint errors
* feat: V3 UI avatar (#18997)
* avatar playground
* add overflow-hidden back for loading indicator
* update lock
* feat: v3/badge (#18999)
* badge intro
* fix text on small badge
* add dark mode warning
* feat: v3/button (#19014)
* TOC
* wip buttons
* shadows
* secondary
* semantic colours
* minimal buttons
* update disabled states
* checkbox
* dropdown v3
* load icons
* fix design sections
* fix icon gap
* fix
* remove client component from rsc
* use peer as avatar
* gif
* fix button gap - dropdown iocn
* support start icon in dropdowns
* add alert demo + v3 component + darken semantic text
* base inputs and text field
* wip input
* input field addon/suffix
* toast page
* wip select
* match designs for input and select rounded
* fix
* fix select isloading transform
* fix multi icons transition rotation
* fix group heading
* range slider demo + range slider
* range slider popover design
* v3 dialog
* fix slider thumb size
* wrap in suspense for useSearchParam difference in next14+
* base of tabs + horizontal tabs
* fix select sizing to match input 36px
* fix dark mode hover on button
* target domState class for light/dark so we work on portal elements
* fix default bg on popover
* lightmode toasts + eleveation token
* empty screen
* intro to split button concept
* mass colour updates
* intro to themes
* remove i18n from label with name
* bouncy buttons
* feat: small select
* nav item dumb component
* full demo
* settings demo
* fix tabs
* fix mt
* fix dropdown feedback from loom
* alert fixes mentioned in loom
* push font-cal
* move to fumadocs
* fix avatar
* colors table
* add typeography
* icon + spacing guide
* add border radius and shadow tables
* fix colours and border radius
* remove prose undline via fumas fork
* fix icon buttons sizes
* button group component
* fix horizontal tabs
* tab fixes
* switches
* pagination component
* show toasts components raw
* sync with airtable
* add use client
* 10px on input again
* 10px in select also
* fix input height
* fix files merge
* fix loading state for icon buttons
* fix button fab
* Enable addon to now overflow to next line in DS
* use cal font for dialog text
* add avatar square variant
* fix select padding and menu size
* fix type errors
* fix type errors
* add switch small size and fix type errors
* fix ref types on input
* update web styles
* remove addonFilled to fix type errors
* push dialog fixes
* fix checkbox display
* remove prose from alert examples
* remove prose from all our component examples
* badge rounded-lg on lg size
* update colors
* force w/h on icon buttons instead of inheriting
* remove border-focus
* remove border-focus from tailwind config
* update tokens to match new colours
* add new border subtle tokens and add to toasts
* fix lg button padding
* fix and drastically improve rtl rests
* multi select use badges
* use badge design for select pills
* fix avatar alignment
* fix tests and remove redudant ones
* fix tests and remove redudant ones
* update atoms globals css
* extract tokens.css
* extract app.css
* force flex for atoms
* add @calcom/ui/css
* revert ui playground styles abstraction
* fix input focus states
* fix focus states for buttons
* feat: v3/app work (#19233)
* globals.css for app + event types listing search
* few app wide NITS
* fix select foucs within styling
* fix formbuilder switch styles
* fix disabled state of nested inputs
* workflow fixes
* webhook form fixes
* i18n on tabs info
* booking filters + tab
* fix filters spacing
* make first item so we get correct border radius if not default
* round radio group in create event types + make button small
* profile page
* update editor br
* button nits in existing places in the app
* fix timezone select and multilist in guest form
* fix text area on public booking page
* size small event types create
* margin on routing filter
* filters improvments
* routing insights fixes
* fix date filter range
* ooo fixes
* fix teams/members bulk actions
* create team UI
* i18n in useTabs instead of in tab component now
* Add event type setup border to availability
* fix bulk actions on org members table
* onboarding fixes
* fix input types with ref stripe comparision
* i18n fixes for platform
* update globals of atoms
* fix form builder firstname/lastname switch + correct footer useage
* fix select
* Revert "add @calcom/ui/css"
This reverts commit 0dd8f9012907a278cfede4a98f289cb0744c9244.
* revert tokens css
* Revert "extract app.css"
This reverts commit 10b998604816ad3310c24b36a02a638dabc5be24.
* linear nits
* workflow dropdown
* fix page theme heading sizes to match cards
* fix stepper for team creation
* adjust margin to FilterSearchField
* fix ooo icon
* fix booker and dark mode due to darkgray 50
* more dark mode fixes
* add size prop
---------
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* remove ui-playground
* fix grow missing from merge
* add search icon data-test-id back to search
* fix FormAction style
* fix datatestid for apps and tabs
* change selector for team invitation e2e
* fix use data-testid from item instaed of using names
* rename upper case O
* fix unit tests data-testid
* fix unit tests data-testid
* more data-testid changes
* add data-testid to apps tab
* data-testid to installed appPage
* fix embed tests
* fix filter-popover-trigger
* use text-error and use dataId for locator
* more e2e improvment
* pass in single testId as button is now duplicate
* show field-error instead
* add test to eventtype tabs
* Add css vars to embed too\
* add scrollbar and change dialog overlay colour
* fix type
* use attribute instead of class for tab detection
* await promise
* use new tokens for sprite generation
* add correct testing Ids to e2e instead of button:text
* use testIds for creation of orgs
* Webhook receiver wait for 10 seconds
---------
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* Reapply "fix: Multiple rr-hosts combine to create erroneous availability (#18772)"
This reverts commit 5dbc6d9ca6.
* Only thing left is a diff to show which slots are removed
* Add logging around time slot results
* Setup logging through axiom
* .... forgot
* fix: type errors
* Only log when there are differences
* Updated from old which had a failing test to new logic
* default people filter for admin
* chore
* type check
* added test case
* made test concise to reduce flakiness
* add timeout to wait for second get response before counting
* update timeout
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* refactor: version old slots
* feat: init new slots endpoints
* chore: range format
* fix: duratin
* fix: duratin
* test: slot releaseAt
* refactor: reserve slot response
* refactor variable name
* docs: have new slots controller in docs
* feat: crud for slots reservations
* refactor: use exclude all for response
* docs
* chore: slots input service
* refactor mini
* refactor: remove unused imports
* docs
* handle orgSlug for dynamic events
* refactor: correct name
* docs
* add optional organizationSlug to BySlug search
* refactor: slot output format
* refactor: return seated slot info
* docs
* rename functions
* refactor: slots seated response
* fix: handle same username in org and non org
* refactor: test format
* fix: allow reservationDuration only for authed requests
* chore: check if auth user has permissions to define custom reservation duration
* refactor: split e2e test files
* refactor: invalid request exception codes
* chore: old slots controller uses all old versions
* incompleteBooking only search for leads if contact is not found
* Fix logic
* Abstract to functions
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* wip: Open draft PR with passing test (should fail)
* Fix aggregatedAvailability by not merging rr host availability
* Added test for validating fixed host behaviour
* Add test for combined rr and fixed hosts
* Check date-ranges arent returned multiple times when offered by multiple rr hosts
* Also sort date ranges
* Adding failing test that should result in 5 slots, but returns 7 as it returns the same slots twice.
* Slots returns duplicate slots for overlapping date ranges
* As mergeOverlappingDateRanges enabled the unified start time, we need to reproduce this
* Do not 'prettify' slots to the same degree if they fall on different days
* Added test to prove an end date before start also works
* Use a string instead of number as key
* chore: Deprecate organizerTimeZone, effectively unused
* Adjust all dateRanges similarly
* Bring back eventTimeZone
* Remove adjustDateRanges in favour of slot generation changes
* Convert to tz after all logic is finished.
* clearer code flow
* Remove console.log + add failing test due to inverse order
* Address issue with inversion when date ranges are given out of order
* perf: Avoid leading wildcard for Salesforce
* use limit of 1 since we need 1 record
* use LOWER to check exact website match
* Revert the usage of LOWER since we need wider searches
* Add limits to queries
* Update packages/app-store/salesforce/lib/CrmService.ts
* Remove unneeded LIMIT statements
* Update packages/app-store/salesforce/lib/CrmService.ts
* Apply suggestions from code review
* Update packages/app-store/salesforce/lib/CrmService.ts
---------
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
* hide docs for old google connect endpoint
* update docs for atoms
* fix css styles for week view
* update v2 reference
* add dutch translations in cal provider
* fix: add nl i18n in BaseCalProvider
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
* If booking is routed from form, disable round robin reassign
* Pass `bookingFromRoutingForm` prop from `BookingListItem`
* Add `ReassignType` enum
* Refactor `isBookingReroutable`
Found via `codespell -q 3 -S "*.svg,./apps/web/public/static/locales,./packages/app-store/stripepayment/lib/currencyOptions.ts,./packages/lib/freeEmailDomainCheck/freeEmailDomains.ts" -L afterall,atleast,datea,fo,incase,ist,nam,notin,optionel,perview,reccuring`
Closes#19193
* Remove BookerSeo from instant-meeting-view
* remove route from pages router
* make eventData passed from getServerSideProps
* refactor route in app router and move it outside of /future
* feat: add option to disable sending transcription emails
* fix: types and tests
* fix: type error
* fix: type err
* fix: type err
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* Add a case that crashes
* Add proper crash test case
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmgmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Updated the query parameter handling logic to properly format the 'date' param
as 'YYYY-MM' in case month param is missing. This resolves an issue where previous slots were not appearing.
Co-authored-by: amrit <iamamrit27@gmail.com>
* refactor: use unique names in e2e tests
* refactor: version number in tests
* refactor: use unique names in e2e tests
* refactor: use unique names in e2e tests
* refactor: test cleanup
* refactor: increase e2e maxWorkers to 8
* refactor: randomNumber -> randomString
* chore: add local e2e command
* perf: don't fetch all the hosts
* fix: type err
* use appschema only when necessary
* Variable casing change and type fixes
* Another missing ts fix
* chore: update variable name
* chore: remove from personal event types
* chore: remove limitHostsToThree
* chore: make it a variable
* chore: move it below
* chore: change name to firstThreeHosts
* chore: update to first three users
* fix: type error
* chore: add firstThreeHosts
* fix: type error
* fix: type error
* fix: support users
* chore: update metadata
* fix: API v2 build error
* chore: change var name
* chore: remove cursorrules
* chore: undo API v2 changes
* chore: add type
---------
Co-authored-by: Hariom <hariombalhara@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* Okta fixes
* Fix username and name in case of sync from Okta
* Fix username and name in case of sync from Okta
* Add test
* cleanup code and add tests
* fix err msg and add more description
* improvements
* fix cause
* add warn logs for when failing to specific limit checks
* typefix
* safestringify log
* improve error
* test fix and log min booking notice
* adds out of bounds error code
* test fix
* fix
* update booker atom for routing form
* remove logs
* hide routing form properties from docs
* fixup
* add comments to explain why certain fields are not defined for routing forms in v2
* chore: routing for handler return team and org id
* bump libraries platform
* fixup! bump libraries platform
* chore: get routing form params to embed
* logs to remove
* fix import path
* chore: handle routing form params in booker embed
* wip need router api v2 endpoint
* resolve merge conflicts
* fixup
* fixup! Merge branch 'main' into remove-redirect-on-success-for-platform
* fixup! fixup! Merge branch 'main' into remove-redirect-on-success-for-platform
* router atom
* fix libraries version
* cleanup
* remove console logs
* bump libraries
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* migration and init to accept creationSource for new bookings
* V1 create booking
* V1 user creation
* webapp booking + V1 user
* user creation in V1, V2 and webapp
* booking source V2 and fix for v1 user
* fit type
* --fix type
* add test -- WIP
* fix type
* fix type
* ^
* Need more sleep zzz
* -_-
* bump libraries platform
* adds for v2 recurring booking
* fix lint
* instant meetings
* fix: api v2 creation source
* fixup! fix: api v2 creation source
* bump libraries
* add user
* fix test
* fixup! fix test
* add more source
* more source...
* fix type & test --1
* fix type & test --2
* typefix
* fixup test
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
* fix: flaky test organization.spec
* fix: Hide events in the event type assignment tab for teams does not save
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* load correct users in query state for attribute rr
* add segment loading state
* skeleton
* fix query value
* update tests
* fix type
* use query by testId so no error is thrown
* ensure queryValue children has valid values before we trigger api key
* chore: remove lg
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* migration + migrate booking limit page to team settings
* new pages
* use settings toggle for displaying content
* get current team presets
* update mutation
* i18n for settings page
* remove redudant await
* cancelation UI for select
* handle other selection
* extract into a util
* inital cancelation reason flow
* fix i18n to be more readable
* add cancel reason logic
* nits
* improve copy
* ensure is teamMember and not isAdmin for getting internalNotes
* improvie spacing between elements
* fix types
* more type fixes
* correct types
* Update packages/features/bookings/lib/handleNewBooking/getEventTypesFromDB.ts
* use input component and remove mb-2 to allign with icon button
* Update packages/trpc/server/routers/viewer/teams/updateInternalNotesPresets.handler.ts
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
* nits
* type fixs
* fix type
* fix type
* fix nullable option lost in merge
---------
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
* fix: use userId as ratelimit identifier
Using raw api keys as identifiers is problematic because they are logged
and are accessible via Unkey's UI.
My first idea was to use the api key's primary key, which would solve
this just fine. But after looking at the implementation it seemed easier
to use the user's id, which is what most people are interested in
limiting, not the actual keys. Also the userId was already passed in the
requests context, which made it easier. Sean confirmed that ratelimiting
the user, not their keys made more sense, so here we are.
* Update rateLimitApiKey.ts
* Update rateLimitApiKey.ts
* Fix tests
* Fix tests
---------
Co-authored-by: Benny Joo <sldisek783@gmail.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
* handle cancelation reason when user is host
* add attendee reason warning
* add cancellation reason to tests when we are the host
* req.body and not req
* fix: isloggedIn logic
* use new isLoggedInUser from ssr instead of client
* update e2e tests to fill in reason when hosts
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Create `checkIfTeamHasActivePlan` method on `stripe-billing-service`
* Add `checkIfTeamPlanIsActive` to `InternalTeamBilling`
* Create `hasActiveTeamPlan` trpc endpoint
* Check for active team plan when updating workflows
* Create `useHasActiveTeamPlan` hook
* Use `useHasActiveTeamPlan` on workflow edit page
* Type fixes
* Type fix
* Add `accepted` to team query
* add delete to redis service
* auto lock + tests
* changes to autolock in api/book call
* remove log clutter
* add detection in api v1
* tpye changes
* throw error and add tests for API
* add response logic on locked + tests
* type response properly i hope?
* type fix
* add tests for counter not existing + redis errors
* remove IP - add sentry to track
* rename symbol
* fix type error
* fix tests
* remove sentry call spy
* fix type on sentry setUser call
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Allow user to select custom field type
* Get field value and write to field - ignoring field type
* Only validate field length if present
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* feat: split name booking field in v2
* fix: booker atom handle split name
* fix: after and before start dates bookings filter
* chore: bump platform libraries
* Add booking incomplete actions table
* Add incomplete booking page tab
* Add `getincompleteBookingSettings` trpc endpoints
* Add incomplete booking page
* Abstract enabled apps array
* Handle no enabled credentials and no actions
* Add enabled field to incomplete booking action db record
* Add new write record entries
* UI add separation between switch and inputs
* Fix typo
* clean up
* Add saveIncompleteBookingSettings endpoint
* Save incomplete booking settings
* Fix language around when to write to field
* Add `credentialId` to action record
* Choose which credential to assign to action
* Save credential to action
* Revert "Save credential to action"
This reverts commit ba6a1c808baed54f6d3d4c6155cf192c813d0696.
* Revert "Choose which credential to assign to action"
This reverts commit 968f6e5295d098c64abe95268afd1fa139a175ba.
* Revert "Add `credentialId` to action record"
This reverts commit 579f9ff4167b65aa987659e4e8f8c26f9e773317.
* Add credentialId to action record - rewrite migration file
* Revert "Add credentialId to action record - rewrite migration file"
This reverts commit 2843a92c61820e7f7a1614a557d3f7ea96342107.
* Revert "Add booking incomplete actions table"
This reverts commit 7ec75bef4a0f0a9d07be0142da64c49d739439ea.
* Revert "Add enabled field to incomplete booking action db record"
This reverts commit d279a1da05819eafa8fc5d664e3be733e0687e8d.
* Write migration in single commit
* Rename table
* Rename table - remove underscores
* Remove credential relationship
* Type fix - changing table name
* Fix table name
* Change writeToRecordObject to object
* Salesforce add incomplete booking, write to record
* Add incomplete booking actions to `triggerFormSubmittedNoEventWebhooks`
* Remove console.log
* Type fixes
* Type fixes
* Iterate if incompleteBookingActions
* Choose which credential to assign to action
* Save credential to action
* Fix getServerSideProp changes
* Type fix
* Type fix
* Type fix
* Type fix
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Documentation edits made through Mintlify web editor
* Documentation edits made through Mintlify web editor
* Delete help/calendars/how-to-add-apple-calendar.mdx
* Delete help/calendars/how-to-add-google-calendar.mdx
---------
Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Documentation edits made through Mintlify web editor
* Documentation edits made through Mintlify web editor
* Documentation edits made through Mintlify web editor
* Documentation edits made through Mintlify web editor
---------
Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
* chore: save progress
* feat: support phone based booking using API v2
* chore: change name of the variable
* fix: update event types and booking fields for improved validation and new properties
- Updated imports in input and output event types services to use the correct library version.
- Added new `avatarUrl` and `successRedirectUrl` properties to the Swagger documentation for user and booking schemas.
- Enhanced booking fields validation by changing the `required` property to a boolean type.
- Improved descriptions and examples in the OpenAPI specifications for better clarity.
- Refactored booking fields input and output classes to include new properties and ensure proper validation.
* fix: booking with phone number
* test: add event type update test
* test: add test for creating booking
* chore: update unit test
* fix: tests
* fix: add turbo
* chore: remove emial
* refactor: make email optional and move it to service
* fix: test
* chore: bump platform-libraries
* fix: e2e test
---------
Co-authored-by: supalarry <laurisskraucis@gmail.com>
* wip
* fix: 404 for a form of a member that has been removed.
- Moved existing authorization check to isAuthorizedToViewFormOnOrgDomain function to handle form access control
- Add comprehensive test suite for org domain authorization scenarios
- Refactor getServerSideProps to use the new authorization function
- Improve code organization by separating domain-specific authorization logic
Test Coverage:
- Non-org domain access
- Org member's form access
- Sub-team form access within org
- Access denial for non-org members/teams
* feat: cancel scheduled email from sendGrid while cancelling the booking
* fix: remove deleteScheduledSend in scheduledEmailReminder cron api
* fix: use cancelScheduledEmailSend
* chore: remove cancelling email workflow in deleteScheduledEmailReminder
* refactor: bring back deleteScheduleSend
* fix: get only past reminders
* feat: allow title,notes,reschedule reason inputs
* refactor: v2 event type default booking fields as in web app
* wip: input validation
* input field validation
* fix: tests
* chore: bump libraries
* remove change in docs
* fix input type
* chore: ensure additional notes at the end
* fixup! Merge branch 'main' into lauris/cal-4932-platform-refactor-default-booking-fields
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* feat: add getshortenLinks function
* feat: use shortenLinks in SMS Worflows
* chore: use getShortenLink and cleanup getShortenLinks
* fix: Duplicate keys error
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* update env vars
* update middleware
* remove pages router and move pages to /app
* move to /team
* update imports
* fix
* remove pages router and move org pages to /app
* wip
* fix orgSlug/user pages
* fix orgSlug/user/type pages
* remove generateMetadata from embed pages
* fix
* remove pages router for /user pages
* generateMetadata is not needed in embed pages
* remove future/org
* no layout in [user] page
* simplify
* fix
* fix OG image for [user]
* fix OG images for org/user and team/slug
* fix OG images for booking page
* fix all metadata
* use isBrandingHidden
* remove BookerSeo and its usages
* rename excludeAppNameFromTitle -> hideBranding
* remove logic for meeting type in HeadSeo
* remove BookerSeo instances from team-view and users-public-view
* create generateMeetingMetadata util and use it to reduce duplicate code
* remove BookerSeo imports
* fix spacing
* remove constructMeetingImage mock from head-seo.test
* fetch avatarUrl using user id for user page metadata
* fix test
* remove unused test cases
* index and follow must be true by default
* invert noindex/nofollow flags
* remove HeadSeo for already migrated pages and refactor prepareMetadata
* fix organization-settings.e2e.ts
* fix order
* enable parallel test execution for dynamic-booking e2e test
* fix
* + could be %2B in app router
* refactor handling logic for embeds in app router
* fix isEmbed
* fix embed-core
* remove dead code
* move embed pages back to /future
* add back embed pages in pages router
* revert some changes
* fix import type checks
* simplify
* fix
* feat: Implement generateBookingPageMetadata function for improved SEO and metadata handling across user and event pages (#18440)
- Added a new utility function `generateBookingPageMetadata` to streamline the generation of metadata for booking and user profile pages.
- Updated multiple page components to utilize the new function, enhancing SEO indexing and metadata consistency.
- Removed redundant code related to previous metadata generation methods, improving code clarity and maintainability.
* fix dirs
* Pr-review-fixes-app-router-team-pages (#18450)
* Remove unnecessary getPublicEvent call
* Remove unused variable
* Fix 404 for team page (#18451)
* Remove console log
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* feat: Enhance SCIM user attribute handling and sync process
- Introduced a new PR_TODO.md file to track ongoing tasks and fixes.
- Updated `getAttributesFromScimPayload` to accept a directoryId and ignore core user attributes during syncing.
- Modified `handleUserEvents` to pass directoryId when syncing custom attributes.
- Improved attribute creation logic to handle unique options and added support for optional isGroup property in attribute options.
- Added utility function `getOptionsWithValidContains` to ensure valid sub-options in attribute options.
- Updated tests to reflect changes in attribute handling and ensure proper functionality.
This commit addresses issues with user attribute syncing and enhances the overall attribute management process.
* test: Add unit tests for getOptionsWithValidContains utility function
- Introduced a new test file for the getOptionsWithValidContains function.
- Added tests to verify the removal of duplicate options, initialization of empty contains arrays, filtering of non-existent sub-options, and handling of empty options arrays.
- Ensured comprehensive coverage of the utility's functionality to enhance reliability and maintainability.
* feat: apply full width automatically for DataTable
* change implementation
* load all columns of insights routing table at the same time
* update team member list
* sticky columns for >= sm
* fix type error
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* migrate icons page
* migrate main index page
* remove /icons page
* use i18n string
* fix imports
* add icons_showcase i18n string
* add /app dir to tailwind preset config
* use classname
* do not migrate main index page
- Introduced a new `DryRunMessage` component to inform users when in dry run mode.
- Implemented utility function `isBookingDryRun` to check for dry run status based on URL search parameters.
- Updated the `Booker` component to conditionally render the dry run message.
- Adjusted booking mutation input mapping to reuse the utility
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* fix: removed plain chat from app.cal.com/video
* take user session and open plain out of use effect
* move undefined check and screen size check above useeffect
* turned restrcited paths into env var
* undefeined window below hooks
* chore: add window check
* fix: infinite re rendering
* remove console.log
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* refactor: Update booking query to use userId and optimize availability check logic
- Changed the booking query to use userId instead of nested user object for filtering active bookings.
- Refactored availability check logic to improve readability and performance by using valueOf() for time comparisons and consolidating multiple checks into a single return statement.
* fix: update tests
* chore: use toDate()
* tests: add checkavailable unit tests
* chore: app router - /reschedule pages (#18150)
* app router - /reschedule pages
* add to config.matcher
* generateMetdata is not needed
* include app directory in rewrites generation logic
* make it more readable
* make code more elegant
* fix
* fix
* fix
* fix
* test and refactor
* first version of ooo calibration
* decrease precision when checking for full day event
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* improve variable naming
* don't include hosts created after OOO
* fix failing tests
* fix all tests
* add test for ooo calibration
* first implementation to fix full day busy event reaching the current month
* allow mutiple day events
* make getAvailabilityWithTimeZones optional
* fix type error
* fix type errors
* fix tests
* fix type error
* fix test
* code clean up
* remove time adjustment from map
* code clean up
* fix tests
* getAllCalendars -> this.getAllCalendars
* fix typo
* extract mergeOverlappingRanges
* code improvements from feedback
* fix getCalIdsWithTimeZone
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* chore: Set the stage for a primary key with value uuid()
* fix: Test and ensure it validates the id value is set and defined
* Add unique index manually, prisma doesn't support this
* revert unique
* Add email domain array
* Create numbered email domain object
* Check email domain
* Rename function
* Add tests
* Frontend enable skip ownership check if free email domain
* Backend ignore adding ownership to return records if free email domain check is enabled
* feat: Only require confirmation for free email domains (#17917)
* Add requiresConfirmationForFreeEmail to db
* Add option to event type settings
* Get requiresConfirmationForFreeEmail for event type page
* Include requiresConfirmationForFreeEmail in fetching event type
* Pass bookerEmail to `getRequiresConfirmationFlags`
* Add free email domain check to `determineRequiresConfirmation`
* Add `requiresConfirmationForFreeEmail` to types
* Add severity to Watchlist table
* Add migration for watchlist severity
* Add `getEmailDomainInWatchlist` method to watchlist repository
* Use watchlist repository to check for free email domain
* Mock watchlist repository in test
* Update test
* Rename method
* Add severity to blocked list
* Move check free email domain to async
* Type checks
* Adjust for promise returned
* Fix tests
* Fix
* Fix tests
* refactor: make dateFrom and dateTo required
* refactor: make dateFrom and dateTo required
* refactor: useCalendarsBusyTimes enabled only if dateFrom & dateTo passed
* revert: "fix: Request permissions to allow events to be created on shared Office365/Outlook calendars (#17760)"
This reverts commit 1680cba5a5.
* plain.com card
* detiled error handling for get customer
* working email and id
* hmac
* Revert "fix: correct line-breaks in calendar event description (#18077)"
This reverts commit 06494a6999.
* pr changes requet
* remove pan for now
* add-new-implementation-for-early-review
* Pushing fix for createHmac stringify
* added validation and user repository for email check
* add apiRouteMiddleware which handles the error handling
* HMAC_SECRET_KEY -> PLAIN_HMAC_SECRET_KEY
* Use the right error
* Convey right error to consumer
* Fixup apiRouteMiddleware to handle handler
* Don't export handler, only export POST
* changed to app directory
* working unkown user card
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* refactor: ApiAuthStrategy return isSystemAdmin and define returned type
* refactor: use ApiAuthGuardUser instead of GetUserReturnType
* regenerate docs
* feat: v2 teams event-types endpoints
* refactor: rely on teams event types service and repository
* finish mergin main into this branch
* test: teams event types
* refactor: move teams event types output from org to teams folder
* refactor: move teams event types output from org to teams folder
* chore: finish merge main
* refactor: logger name and unused import
* chore: finish main merge
---------
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
* feat: teams endpoints
* refactor: organization teams reuse team types
* refactor: move team specific functions out of organizations-teams.repository
* supporting files
* regenerate docs
* feat: stripe service to generate team creation checkout
* refactor: request payment when creating a team
* fix: tests
* fix env
* driveby: event type name and email booking fields
* finish merge main
* chore: Add perf tracing for handleNewBooking
* Added a few more to the event manager
* Added the sentry wrapper that enables perf tracing
* Revert "Added a few more to the event manager"
This reverts commit ccf3ee5200466b8b1d51f5663363fbb9dfd9a06f.
* Fixed where we wrap sentry
* Reverse sentry wrapper
* feat: added office 365 video to conferencing atoms
* added documentation for conferencing atoms
* added props table to the documentation
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* Reapply "feat: add text & numeric filters to insights routing responses (#18016)"
This reverts commit 49070b96ae.
* support SINGLE_SELECT
* fix type error
* put back ts-expect-error
* remove playground
---------
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* use prefetch function in ScheduleListItem and refactor
* modify app router trpc provider to match the original configs
* revert unneeded change
* move trpc provider up and do refactors
* remove log
* add comment
* fix: Some typing style fixes
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* feat: improve text filters (WIP)
* move function to bottom
* apply some styles
* fix selection of TextFilterOptions
* rename value to operand
* remove unused file
* merge filters/filters into filters/utils
* fix regression of not putting url params correctly
* move makeWhereClause to filters/utils
* fix negative, empty, and not empty operators
* fix initial filtering from search state (url)
* fix type errors
* do not send an empty array to query
* update yarn.lock
* i18n for text filter operators
* extract logic as useColumnFilters()
* add missing import
* fix type error
* revert yarn.lock
* use i18n
* insensitive text match
* move data-table to @calcom/features
* fix type errors
* fix type errors
* fix type errors
* feat: support DataTable filters for Insights Routing WIP
* remove unused filters
* remove additionalFilters and fix types
* clean up filter components
* support icons for ActiveFilters
* support filters on json
* fix filter ui
* fix type error and clean up
* revert changes
* revert change
* clean up
* revert change
* fix compatibility with insights booking page
* remove unused params
* fix type errors
* update yarn.lock
* fix field filter and adjust ui
* chore: update yarn.lock
* fix text filter
* add Clear Filters button
* add more test data
* feat: support numeric filter WIP
* feat: support numeric filter
* feat: move People to an external filter
* fixing query states
* rename state to activeFilters
* add useDataTable
* fix ResponseCellValue bug and enable resizing for RoutingFormResponsesTable
* fix response values
* truncate attribute text
* seed booking attendees
* fix accessor (no actual change though)
* add a gap
* rename
* use pathname as default identifier for DataTable
* fix type error
* support text filter for assignment reason
* Apply suggestions from code review
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* rename fields to headers
* use safeParse
* fix type error
* push yarn.lock with faker
* fix MemberList
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: sean-brydon <sean@cal.com>
* chore: add successRedirectUrl to event-types api v2
* chore: add successRedirectUrl to event-types api v2 patch
* chore: add successRedirectUrl to event-types api v2 patch
* wip attribut weights
* edit sheet and display in table
* add shrink so badges dont split
* push changes to support weights on csv export
* fix typing issue
* type error
* fall back to 100 weight
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* refactor: store default booking fields when creating event
* Revert "refactor: store default booking fields when creating event"
This reverts commit 78b7c4eda2be61420b4410bc80a3d77b5557a967.
* refactor: v2 return default booking fields if they are null
* test: v2 returning default booking fields if they are null
* chore: platform-libraries export getBookingFieldsWithSystemFields
* feat: AI description - DB model + frontend + backend (fetch only)
* fix types and add validation to backend
* improve log
* improve
* import type
* add EventTypeTranslationRepository
* fix replexica error
* fix replexica error
* fix
* fix test
* wip
* wip
* add createManyDescriptionTranslations method
* improve logic
* refactor
* update replexica type
* improve typing
* Renamed descriptionTranslations to fieldTranslations
* log errors in replexica service
* handle translations in background
* don't create, upsert instead
* make sure that description is updated
* simplify
* fix
* Update packages/trpc/server/routers/viewer/eventTypes/update.handler.ts
* improve filter logic in frontend
* implement background job using Tasker
* update schema
* update schema again
* rename
* rename id to uid
* add migration
* fix type
* update
* update schema and migration sql
* fix migration
* fix type check
* fix type check 2
* improve find logic in EventMeta
* add more validation
* add logger
* rename
* upgrade replexica/sdk to 0.7.0
* upgrade replexica to 0.7.0
* use batchLocalizeText
* add comments
* override browser locale if user is a signed in calcom user
* fix type in replexica
* fix migration sql
* fix type
* use dynamic import
* do not use batchLocalizeText
* chore: drop sourceLang, targetLang and id columns
* fix
* wip
* add more validations
* fix type error
* address comment
* refactor
* update booking page to use translated title
* fix type error
* fix
* revert yarn.lock changes
* remove unused import
* remove duplication migrate.sql file
* fix test
* remove test tags
* fix function name
* refactor
* fix type check
* use Promise.all
* remove unneeded code
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* wip
* bring in users median status for selected range
* merge
* i18n
* routed to talbe period scroll x-y infinite
* insights i18n + hover card on user
* add search by name or email
* wip download button
* fix type error
* type fix
* type errors + status
* type error
* feat: make the onboarding flow 3-step for google signups
* fix
* refactor
* rename
* improve tests
* remove test tag
* fix test and type error
* fix
* feat: remove setup-availability step in onboarding flow
* update test
* revert unneeded change
* add safety
* update create schedule options
* fix: able to create consecutive ooo
* added e2e test
* chore
* update to allow overlapping ooo and test for same
* refactor to reduce repeating code in tests
* nit
* added testcases for consecutive and reverse redirects
* fix:duplicate OOO creation
* prevent duplicate entries, also added test
* chore
* update after merges
* correct datetype in prisma query
* update to changes in rdp after merge
---------
Co-authored-by: Prashant Varma <prashantvarma5083@gmail.com>
* added api/v2 for zoom connect
* Update conferencing.controller.ts
* fix: added api for ConferencingAppsViewPlatformWrapper
* type fixes
* added getBulkEventTypes api for bulk-update default location
* added bulk-update-to-default-location
* fix:bulk-update-to-default-location
* invalidated
* fixed returnTo and onErrorReturnTo
* make logos work for conferencing atoms
* smalll improvements
* fixup
* share common types
* type fix, and fixed a typo
* fix: type-error
* fix: json.parse(json.parse())
* fix: invalidate query
* fix: removing app throws error in the main app
* undo platform-libraries-1.2.3
* update platform-libraries version
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* revert: "feat: refactor filters on insights response table (#17796)"
This reverts commit 5d88858995.
* Put back the search columns and options english terms
* feat: improve text filters (WIP)
* move function to bottom
* apply some styles
* fix selection of TextFilterOptions
* rename value to operand
* remove unused file
* merge filters/filters into filters/utils
* fix regression of not putting url params correctly
* move makeWhereClause to filters/utils
* fix negative, empty, and not empty operators
* fix initial filtering from search state (url)
* fix type errors
* do not send an empty array to query
* update yarn.lock
* i18n for text filter operators
* extract logic as useColumnFilters()
* add missing import
* fix type error
* revert yarn.lock
* use i18n
* insensitive text match
* move data-table to @calcom/features
* fix type errors
* fix type errors
* fix type errors
* feat: support DataTable filters for Insights Routing WIP
* remove unused filters
* remove additionalFilters and fix types
* clean up filter components
* support icons for ActiveFilters
* support filters on json
* fix filter ui
* fix type error and clean up
* revert changes
* revert change
* clean up
* revert change
* fix compatibility with insights booking page
* remove unused params
* fix type errors
* update yarn.lock
* fix field filter and adjust ui
* chore: update yarn.lock
* fix text filter
* add Clear Filters button
* add more test data
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* feat: Add formatAsStartAndEndTime query parameter to slots API V2 endpoint to return start and end time of a slot
* Update apps/api/v2/src/modules/slots/controllers/slots.controller.ts
Co-authored-by: Praash <99237795+Praashh@users.noreply.github.com>
* Fix duration was allowed to be any number
* Refactor code
* Show slotFormat property as optional in swagger doc
---------
Co-authored-by: Praash <99237795+Praashh@users.noreply.github.com>
* feat: fetch public event data for booking pages server-side
* fix types
* refactor
* Replace the getPublicEvent with other smaller calls
* Change username to teamSlug
* Fixing types
* Type checks
* Pushing latest for Benny - this still has type errors
* fix type checks
* fill data for team pages too
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* lock users on signup if their email is in blacklist
* add to turbo env list
* prevent locked user or blocked email domain from using API
* Refactored to only run 1 query to find the user
* Fixing tests
* WIP
* WIP
* WIP
* Discard changes to turbo.json
* Fixed tests
* Update isLockedOrBlocked.test.ts
* Update isAdmin.integration-test.ts
* Update tsconfig.json
* chore: rename to watchlist
Signed-off-by: Omar López <zomars@me.com>
---------
Signed-off-by: Omar López <zomars@me.com>
Co-authored-by: sean-brydon <sean@cal.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* Remove user from managed event type when removing from org
* added test for admin check, correct changes for membership, user info, profiles
* remove host assignment for removed members
* expand test to cover event types removal
* chore: use var
* chore
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* chore: sync with main
* feat: update translations via @replexica
---------
Co-authored-by: Replexica <support@replexica.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* fix: fix date comparison for OOO
* fix date comparison with today, and add tests
* remove wrong code
* remove logic that is no longer in use
* fix type error
* mock more methods
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Show 'Add to calendar' section for customers after booking an event
* removed comment
---------
Co-authored-by: Prashant Varma <prashantvarma5083@gmail.com>
* remove heading for more space
* fix: mobile support for mass attribute assigning bar
* change the order of Members item on Navigation
* refactor NavigationItem to support moreOnMobile property
* fix logic for nav
* decrease column widths on member list
* improve mobile design for mass attribute assign
* adjust mobile ui for DataTableSelectionBar
* add key to EventTypesList
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* Added proper updates/interactivity on the "Getting started" app integrations.
- InstallAppButtonWithoutPlanCheck properly vends the mutation data in the render's props
- Fixed the improper props wiring in the AppConnectionItem
- Added a loading state for reactivity
* -Added toaster for error/success confirmation
## What does this PR do?
<!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. -->
We were parsing routes based on `eventTypeId` but routes could be pointing to the same event type. This was causing misroutings.
- Fixes #XXXX (GitHub issue number)
- Fixes CAL-XXXX (Linear issue number - should be visible at the bottom of the GitHub issue description)
<!-- Please provide a loom video for visual changes to speed up reviews
Loom Video: https://www.loom.com/
-->
## Mandatory Tasks (DO NOT REMOVE)
- [x] I have self-reviewed the code (A decent size PR without self-review might be rejected).
- [ ] I have updated the developer docs in /docs if this PR makes changes that would require a [documentation change](https://cal.com/docs). If N/A, write N/A here and check the checkbox.
- [ ] I confirm automated tests are in place that prove my fix is effective or that my feature works.
* fix: remove from host when removed from org
* test: add test for removing members
* fix: type errors, some unused params
* fix: test
* refactor: use prisma.count
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* fix: do not use vercel image api for meeting link preview image
* fix
* fix
* remove double encoding
* fix
* fix test
* fix
* fix
* fix test
* fix
* fix
* remove test tag
* fix
* Catch undefined app option properties
* Add `getCompanyNameFromBookingResponse` method
* Pass bookingResponse when Lead is being created
* Pass bookingResponse from CRMManager
* Handle empty company response
* Return the company value
* change order of eventtypes and routingforms
* for workflows
* for filtered workflows
* update slug of first expected event-type
* updated due to latest merges
* test to ensure new eventtype added is first in the list
* test for workflows
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* conferencing apps atoms web wrapper
* Update DisconnectIntegrationModal.tsx
* formating changes
* handleBulkUpdateDefaultLocation -> bulkUpdateFunction
* fix: type error for handleRemoveApp
* fix: type error for handleRemoveApp
* refactor: removed ConferencingView component and migrated its functionality to ConferencingAppsViewWebWrapper
* refactor: moved AppList, AppListCard to packages/features
* fix: type changes
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* chore: Remove Sentry source maps
* Using .env to control Sentry source maps
* Trying with sourcemaps property
* Turned silent off for testing
* Completely turned off devtool
* feat: added customClassnames to event-availability tab
* added classNames to common types
* use common classnames type
* Update types.ts
* update name
* fix: better classnames
* better calssnames
* Update types.ts
* feat: Expose booking created at in booking detailed view and v2 API response
* Fix tests
* Fix spacing
* Add API v2 tests to verify createdAt is present while creating a booking and fetching a booking
* Add test to validate createdAt after rescheduling a booking
* Add assignment reason table
* Increment id
* Update migration
* Record assignment when manual reassignment is used
* Add comment to `getAttributesQueryValue`
* Add `getUsersAttributes`
* Record routing form routing reason
* Type fixes
* Remove unique property from bookingId
* Handle nested values
* don't filter if reschedule with same host
* check for reschedule
* fix filtering in handleNewBooking
* fix type error
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* feat: accept metadata and store it in database
* feat: accept metadata and store it in database
* feat: add BookingSeat.metadata column
* feat: handleNewBooking: store booking seat metadata when first time seated booking
* feat: handleSeats, createNewSeat store metadata when 2nd+ seated booking
* feat: return booking metadata in output
* tests: metadata
* test: seated bookings
* swagger
* fix: reassign bookings test
* test: use different metadata in recurring
* fix: test
* test invalid metadata
* refactor: output service
* readd new line
* chore: bump platform libraries
* refactor: metadata doc
* feat: improve text filters (WIP)
* move function to bottom
* apply some styles
* fix selection of TextFilterOptions
* rename value to operand
* remove unused file
* merge filters/filters into filters/utils
* fix regression of not putting url params correctly
* move makeWhereClause to filters/utils
* fix negative, empty, and not empty operators
* fix initial filtering from search state (url)
* fix type errors
* do not send an empty array to query
* update yarn.lock
* i18n for text filter operators
* extract logic as useColumnFilters()
* add missing import
* fix type error
* revert yarn.lock
* use i18n
* insensitive text match
* move data-table to @calcom/features
* fix type errors
* fix type errors
* fix type errors
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* chore: sync with main
* feat: update translations via @replexica
* Update common.json
---------
Co-authored-by: Replexica <support@replexica.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* feat: AI description - DB model + frontend + backend (fetch only)
* fix types and add validation to backend
* improve log
* improve
* import type
* fix replexica error
* fix
* fix test
* update replexica type
* Renamed descriptionTranslations to fieldTranslations
* Moved the eventTypeId column to 2nd
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* Updating how-to-setup-api-in-a-local-instance.mdx with correction after api v2
After the implementation of api v2, some of the documents are not yet updated and could you make developers spend too much time on finding these things.
* fix: typo
---------
Co-authored-by: Prashant Varma <prashantvarma5083@gmail.com>
* fix overflow colour in darkmode
* truncate/show overflow scroll indicator when overflowing on response values
* remove total created count
* overflow Y on failed response container
* fix darkmode styles on barlist
* radix hovercards to properly allow overflow in container
* column visible state
* remove constrained width on dropdowns to w-fit
* export type
## What does this PR do?
Optimizes team and organization admin checks by:
- Removing unnecessary member data fetching in profile repository
- Simplifying team admin verification query to directly check membership
- Refactoring organization admin check to use the optimized team verification method
## Mandatory Tasks
- [x] I have self-reviewed the code
- [x] I have updated the developer docs in /docs
- [ ] I confirm automated tests are in place
## How should this be tested?
1. Log in as a team admin/owner
2. Verify team admin privileges still work correctly
3. Log in as an organization admin
4. Confirm organization admin permissions are maintained
5. Check that admin-only features remain accessible
Expected behavior:
- Team admins/owners should retain all their existing permissions
- Organization admins should maintain their administrative capabilities
- No degradation in admin functionality while improving query performance
## Checklist
- I haven't read the [contributing guide](https://github.com/calcom/cal.com/blob/main/CONTRIBUTING.md)
- My code doesn't follow the style guidelines of this project
- I haven't commented my code, particularly in hard-to-understand areas
- I haven't checked if my changes generate no new warnings
* wip
* Add preview mode in router
* only fetch bookings of this month for weighted rr
* test set up
* only get bookings of current month
* reverts test setup
* first changes for weight adjustments
* reset booking count + adjust calibration
* depreciate weightAdjustment
* get only bookings created this month
* fix typo
* make sure createdAt for hosts is correct
* use earliest possibel date as fallback
* add missing createdAt date to tests
* fix typo
* clean up changes in tests
* fix typo
* change end date to current date
* fix: Fall back to empty host array when no hosts are found
* fix: Restructure code a little
* fixed test, incorrectly used now outdated var
* perf: remove Dayjs from getLuckyUser
* Refactor getHostsWithCalibration for optimised performance, intentionally break test as findMany is always an array
* Better mock for host.findMany
* Remove team-event-types.test.ts, move to appropriate package
* TypeScript cannot auto-infer that an array is non-empty when assigning to a var
* fix: Type Fixes and DistributionMethod enum add
* Optimise tests
* Added test to show that bookings made before a newHost was added affect the lucky user result
* Throw error when the usersWithHighestPriority is empty, which should never happen
* WIP
* remove comment
* update migrations
* get attributes weights and virtual queue data
* use attribute weights and use bookings of virtual queue only
* clean up migrations
* Add shortfall column and add tests
* code clean up from feedback
* wrapper function for getLuckyUser
* code clean up
* fetch routingFormResponse in handleNewBooking
* fix type errors
* fix type errors in tests
* fix getAttributesQueryValue import for tests
* fix totalWeight
* add test for attributes weights and virtual queues
* clean up code
* add test for prepareQueuesAndAttributesData
* remove console.log
* use lazy import
* Add more tests and more columns to matching members queue
* fix issue from merge
* always send usersAndTheirBookingShortfalls
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* only fetch bookings of this month for weighted rr
* test set up
* only get bookings of current month
* reverts test setup
* first changes for weight adjustments
* reset booking count + adjust calibration
* depreciate weightAdjustment
* get only bookings created this month
* fix typo
* make sure createdAt for hosts is correct
* use earliest possibel date as fallback
* add missing createdAt date to tests
* fix typo
* clean up changes in tests
* fix typo
* change end date to current date
* fix: Fall back to empty host array when no hosts are found
* fix: Restructure code a little
* fixed test, incorrectly used now outdated var
* perf: remove Dayjs from getLuckyUser
* Refactor getHostsWithCalibration for optimised performance, intentionally break test as findMany is always an array
* Better mock for host.findMany
* Remove team-event-types.test.ts, move to appropriate package
* TypeScript cannot auto-infer that an array is non-empty when assigning to a var
* fix: Type Fixes and DistributionMethod enum add
* Optimise tests
* Added test to show that bookings made before a newHost was added affect the lucky user result
* Throw error when the usersWithHighestPriority is empty, which should never happen
* WIP
* remove comment
* update migrations
* get attributes weights and virtual queue data
* use attribute weights and use bookings of virtual queue only
* clean up migrations
* code clean up from feedback
* wrapper function for getLuckyUser
* code clean up
* fetch routingFormResponse in handleNewBooking
* fix type errors
* fix type errors in tests
* fix getAttributesQueryValue import for tests
* fix totalWeight
* add test for attributes weights and virtual queues
* clean up code
* add test for prepareQueuesAndAttributesData
* remove console.log
* use lazy import
* use findUnique
* add fallback weight
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* feat: Implements maxLeadThreshold which puts a maximum to the amount of lead a given host is allowed to be ahead
* Refactor getLuckyUser + implement in handleNewBooking + move logic to repo
* Decoupled @prisma from findQualifiedHosts
* Fix deep type error
* Add maxLeadThreshold to builder.ts
* Removed a console.log :O + fix handleChildrenEventTypes input
* Add distribution UI to enable balanced distribution/maximize availability
* 0-1-2 instead of 0-1-2-3 (3 bookings instead of 4)
* seed to org
* more org+routing form seed improvments
* add routing responses
* check if attributes already exist to prevent crash
* remove files not for PR
* fix type error
* fix connection
* assign manually
* fix seed
* update to match integration tests
* fix integration test to new user count
## What does this PR do?
<!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. -->
- housekeeping: having important packages up to date
<!-- Please provide a loom video for visual changes to speed up reviews
Loom Video: https://www.loom.com/
-->
## Mandatory Tasks (DO NOT REMOVE)
- [x] I have self-reviewed the code (A decent size PR without self-review might be rejected).
- [x] N/A - I have updated the developer docs in /docs if this PR makes changes that would require a [documentation change](https://cal.com/docs). If N/A, write N/A here and check the checkbox.
- [x] I confirm automated tests are in place that prove my fix is effective or that my feature works.
## How should this be tested?
<!-- Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration. Write details that help to start the tests -->
- Are there environment variables that should be set?
- What are the minimal test data to have?
- What is expected (happy path) to have (input and output)?
- Any other important info that could help to test that PR
## Checklist
<!-- Remove bullet points below that don't apply to you -->
- I haven't read the [contributing guide](https://github.com/calcom/cal.com/blob/main/CONTRIBUTING.md)
- My code doesn't follow the style guidelines of this project
- I haven't commented my code, particularly in hard-to-understand areas
- I haven't checked if my changes generate no new warnings
## What does this PR do?
Adds ability to send API v2 logs to Axiom.
## Mandatory Tasks (DO NOT REMOVE)
- [x] I have self-reviewed the code (A decent size PR without self-review might be rejected).
- [x] N/A - I have updated the developer docs in /docs if this PR makes changes that would require a [documentation change](https://cal.com/docs). If N/A, write N/A here and check the checkbox.
- [x] I confirm automated tests are in place that prove my fix is effective or that my feature works.
## How should this be tested?
- Add the AXIOM_DATASET and AXIOM_TOKEN variables and run the API locally. Ensure the logs flow through to Axiom.
* fix: make actions column sticky in members list
* clean up import
* change type definition
* remove old export
* include tanstack.d.ts
* fix declaration file
* move type def to packages/types/tanstack-table.d.ts
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* fix: skip sending webhook in case of duplicate response
* fix: type err
* fix: tests
* refactor: only check email
* fix: type err
* chore: changed it to 60 min
* fix: use lowercase
* feat: v2 confirm / decline booking endpoints
* chore: bump platform libraries
* fix: type export
* tests: accepting and declining a booking
* refactor: sent emails abstract renderEmail with getHtml that is mocked in test
* perf: routing forms loading time
* chore: add TODO
* chore
* chore: add type
* chore: use Promise.all
* fix: type err
* fix: fetch id
* refactor: don't fetch team
* chore: add name
* move types to types file
* Create salesforce routing form components
* Save salesforce data to routing form
* Fixes
* Add event type service
* Change commenting
* Pass data from routing form to CRM
* Init Salesforce routing form booking form handler
* Salesforce find user associated with lookup field
* Add looking up the contact owner
* If salesforce is disabled then don't change the Salesforce option
* Small refactor
* Refactor getting event type app metadata
* Refactor eventType service
* Type fix
* Clean up
* Add translations
Co-authored-by: Alex van Andel <emrysal@users.noreply.github.com>
---------
Co-authored-by: Alex van Andel <emrysal@users.noreply.github.com>
* fix due to error in zod.parse while adding new member
* updated zod parsing
* fix the linking with parent
* update fixture to accomodate assignAllTeamMembers for team and org scenarios
* added e2e test
* nit
* only fetch bookings of this month for weighted rr
* test set up
* only get bookings of current month
* reverts test setup
* first changes for weight adjustments
* reset booking count + adjust calibration
* depreciate weightAdjustment
* get only bookings created this month
* fix typo
* make sure createdAt for hosts is correct
* use earliest possibel date as fallback
* add missing createdAt date to tests
* fix typo
* clean up changes in tests
* fix typo
* change end date to current date
* fix: Fall back to empty host array when no hosts are found
* fix: Restructure code a little
* fixed test, incorrectly used now outdated var
* perf: remove Dayjs from getLuckyUser
* Refactor getHostsWithCalibration for optimised performance, intentionally break test as findMany is always an array
* Better mock for host.findMany
* Remove team-event-types.test.ts, move to appropriate package
* TypeScript cannot auto-infer that an array is non-empty when assigning to a var
* fix: Type Fixes and DistributionMethod enum add
* Optimise tests
* Added test to show that bookings made before a newHost was added affect the lucky user result
* Throw error when the usersWithHighestPriority is empty, which should never happen
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* If contact owner first available slot is more than 2 weeks. Normal RR
* If contact owner first available slot is more than 2 weeks. Normal RR
* Type fix
* Add test
* - aligns timezones offset by minutes and add minutes to the label in the teams availability view
- added a vertical guidebar to view alligned schedules
* fixed type-check issues
* Create data type
* Start FE component
* Rename and add new enums
* Add new schema for write on record options
* Add options on the frontend
* Backend write to custom fields
* refactor: Salesforce - on booking write to fields on person record (#17481)
* Add translations
* fix: type err
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* fix: assign/remove team members to team event-types
* fixup! fix: assign/remove team members to team event-types
* fixup! fixup! fix: assign/remove team members to team event-types
* fixup! fixup! fixup! fix: assign/remove team members to team event-types
* remove pages router and use app router
* remove pages router and use app router for platform
* add billing page and plans page
* fix metadata for settings/platform/billing
* fix metadata for settings/platform/oauth-clients
* adding posthog libs for node + js
* updating lock
* move to init posthog client - pageview component
* adding identify in shell
* removing test event captures
* add signout tracking to dropdown as it was missed in merge
---------
Co-authored-by: sean <sean@brydon.io>
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
* pass teamID to only send to relevant team admins not org admins
* a lot more tests aroundthis
* improve test cases
* change reddis cache key to take into account teamID
* add start/endtime to template
* fix text in email
* add endTime to tests
* Add fallback
* Support attribute query fallback
* Refactor
* Add tests and cleanup SingleFofrm
* small text fixes
* With fallback in picture, we dont throw error in preview now instead we capture errors and show them gracefully
* Get attribute logic preview working without saving Fixes CAL-4582
* Abstract useRoutes out
* Update e2e
* Dont define Page component again and again
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* fix: people filter in /bookings
* refactor: lazy loading people filters and OOO
* chore: type errr
* chore: type errr
* fallback to username if no name is set
---------
Co-authored-by: sean <sean@brydon.io>
* add reassignedBy and reassign reason to both status
* fix w-full issue in dialog
* fix types
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* add teamId
* add team app credentials method
* add handler to get all user admin teams
* update stripe logic to handle teams
* enable teamId for stripe connect
* update stripe module
* implement PR feedback
* update stripe module
* add method to get credential by team id
* handle check for teamId
* abstract team and individual stripe connection checks into two separate parts
* hide badge for platform user
* update typing
* add logic to handle team stripe integration
* bump platform libraries
* bump platform libraries
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* chore: Add Sentry perf tracing
* Just to build
* perf: Add Sentry perf tracing
* Removed the extra integrations tracing config
* Got spans working
* Now only tracing individual endpoints
* Removed check for booking event type
* Fixed types
* Added back for spans
* Consolidate sentry imports
* Added more traces
* Moved the start of the span
* wip virtual list for reassignemnt
* order in alpha and prio order
* loading state
* add flex shrink so status symbol doesnt move
* add gap to each item to make hovering not feel squished
* a11y indexing tab group
* useInViewObserver hook and move to lib
* use correct intersection target
* fix type errors
* remove type
* chore: Add ./components/[name]/index.ts map to package.json
* fix: Clarify Popover exports
* fix: re-add dropdown to calcom/ui barrel
* chore: Add icon barrel file re-export
* Fix all calcom/ui imports of its own barrel
* Never say 'fix all remaining..' it's never true
* Some type fixeS
* Linking fixes
* Rename sheet.tsx to Sheet.tsx
Done through UI, console does NOT like this.
* Fixed some test failures
* fix: v2 phone system booking field
* feat: atom support google-meet
* feat: unknown booking field return type
* tests
* bump platform libraries
* driveby: improve create-booking-input
* fix: salesforce event creation duplicate error
* chore: message
* If contact was created, don't create a new lead
* Add boolean for no accountId
* Remove debug artifact
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
* feat: Org owners should be able to see all bookings in bookings tab.
* perf: optimize the query
* perf: make it a separate query
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Omar López <zomars@me.com>
* (feat) add availability status to select
* add logic for confirmation modal on unavailable host
* fix type error
* fix type error
* more type fixes
* fix types
* perf: Load OOO in bulk for getSlots
* Added back the failsafe of running the query when no initial data is passed in
* Changed length check to be more explicit
- Corrected "Sengrid" to "Sendgrid" in E-Mail Settings.
- Fixed "sing-ups" to "sign-ups" in the Organizations section.
- Corrected "envrionment" to "environment" in LICENSE (DEPRECATED).
* fix: rely on booking uid instead of id from handleNewBooking
* docs: managed user create input timeZone
* fix: make bookingResponsesSchema nullable
* Revert "fix: make bookingResponsesSchema nullable"
This reverts commit f3127b31dd259d23cae520c994d8e712fc0fa17e.
* refactor: define inputs
* refactor: define outputs
* refactor: bookings controller
* test: first seated event test
* test: recurring seated event booking
* test: multiple bookings for seated event
* test: fetching individual seated bookings
* test: fetch all bookings
* test: make reschedule seated work and test it
* wip: cancel seated booking
* test: cancel seated booking
* refactor: dont return attendee email in seat booking responses
* refactor: order of properties in response
* refactor: test cleanup
* refactor: simplify output booking service
* refactor: flaky test
* refactor: try to fix test by splitting them
* try to fix test
* try to fix tests
* fixes scheduled email for new host
* fixes emails and calendar event
* type fixes
* add test to check if caneclation email is called
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: sean <sean@brydon.io>
* fix: platform event-type atom team delete
* fixup! fix: platform event-type atom team delete
* fixup! fixup! fix: platform event-type atom team delete
* POC working with no TS error
* cleanup
* Fix query booking
* Simplify things
* Support rerouting to different event
* self-review fixes
* Some improvements
* add more tests
* Remove members relation query
* Udits feedback
* Dont show CTAs when non-eventTypeRedirectUrl action route is chosen
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* tidy up css
* sticky header
* add sticky top and left on columns
* use group for cell hover when overflowing
* strickly type meta as override isnt working
* fix: type err
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* feat: create event type atom
* fixup! feat: create event type atom
* fixup! fixup! feat: create event type atom
* docs: base doc for create event type atom
* moved listSchedules to schedule repository
* Create EventAvailabilityTabPlatformWrapper.tsx
* Revert "moved listSchedules to schedule repository"
This reverts commit b5feacfabbadbf9d75eb205dfad8f70b7773a5cb.
* fix: active state of tabs items
* added event availability platform wrapper
* Update event-types.tsx
* better types
only pick the types we need and omit the rest
* fix: type-check failing
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* Revert "fix: DatePicker not showing up in mobile mode when hideEventTypeDetails is true (#17037)"
This reverts commit 1f08bc5a4f.
* Revert "feat: Booker atom enable hiding event details (#16906)"
This reverts commit ba5b9e951a.
* Keep the playground test scenarios
* WIP restored from .git cache
* fix exports
* sortable row model
* feat column visibility component
* wip filters with nuqs
* pull in unique values from table into filters
* correctly assign filters via v/f
* inital selection bar refactor
* data-table selection bar + optmistic update of delete
* dynamic link
* migrate member list table to new data-table
* total list shows filtered value > db valuie
* add filters for attributes
* type errors
* make content bigger on lg
* add mb-6 to teams user datatable to match spacing spec
* correctly render multi-badge
* fix: masss asignment optimistic UI
* fix type errors
* remove log
* fix toolbar type error
* chore: Remove debug artifact
* type errors
* Update apps/web/public/static/locales/en/common.json
* use max-w-fit
* chore: Remove unused translation now we don't specify 'mass' in assign
* perf: fix: use the onBlur event to prevent focus loss whilst the list is rerendering
* Move the data-table exports together in the main barrel, then import
* fix exports that were lost in a merge
* fix exports that were lost in a merge
* fix groupteammapping/availbilityslider
* fix overflow problems
* add scrollbar-thin class
* fix type error
* user serverside values for faceted filters
* pass filters to serverside
* filter serverside
* fix team server side filter
* add loaded x of y
* attributes icon change
* correct implementation for text/input attr optimistic
* type check fixes
* fix platform checks
* fix types again
* fix types again
* fix types again
* add use client
* add use client
* fix-types
* fix: Add missing translation in EN
* fix e2e tests via testid
* fix e2e tests via testid
* fix: Member invite popup not popping up
* Update copyInviteLink to new-member-button testid
* Hopefully fix test ids this time
* fix: Use the right buttons on the right pages
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* add feature to change host schedule
* update for type-check:ci
* Update SingleForm.tsx for linterr
* update as per design review
* update for rerendering
* migration files
* On Delete set null for schedule
if schedule is deleted, no need to delete the host
* updated schema
* added testcases
* checking permissions before
* updated for comments
* update for initial value
* updated and cleanup
* set initial value
* update after merge
* updated nit style
* update for console warning and added comments
* nit/chore
* chore
* update for typechecks
* update for scheduleId param after merge
* update after merge or new changes in metadata.config
* update after weights functionality
* updated description text and column name as per review suggestion
* resolved merge conflicts
* fix typecheck due to changes in getScheduleSchema
* update after merge having refactor
* update refactored EventTypeWebWrapper after merge
* updated props
* updated trpc err code and added log
* update due to refactor in EventAvailabilityTab
* perf: Optimise TS type + select only the data that's needed for a specific function
---------
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* chore: Add Docs build to CI
* Added build-docs to flow
* Updated to run in the /docs folder
* Made web app build have consistent name
* Added a kill after the command runs
* Test the build
* Added it to the PR flow
* init members page for platform
* add missing icon
* add members tab to sidebar
* use data from useMe query instead of useSession
* return user profiles since platform users are stored there
* small refactor
* fixup
* remove unused logs from console
* fixup
* resolve merge conflicts
* add missing tabs for members and billing
* update schema
* fixup
* memoise selection options for org and platform
* update onSubmit handler
* resolve merge conflicts
* add members tab
* improve team billing view when user not subscribed
* update members tab
* add function to find if user is admin of team
* update invite members handler to handle platform user as well
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* fix: daterangepicker issue
* update
* fix: useTeamPlan isn't relevant on self-hosted
* chore: Revert UpgradeTeamsBadge fixes, unrelevant to this PR
* fix: Fix button width for other languages
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Refactor get SF user and create event
* Add new Salesforce options
* Pass app options to CrmService
* Add record enum
* Add creating new lead and contact under an account
* Handle if the contact already exists but not connected to account
* Create a lead if an account doesn't exist
* Merge fix
* Refactor - add generateCreateRecordBody
* Type fix
* Clean up
* Add getAppOptions to other CRM services
* Type fixes
* Fix typo
* feat: Salesforce round robin skip - choose which entity to search on (#17038)
* Add option to search which entity for the owner
* Add logic to search entity for skipping RR assignment
* Type fixes
* Disable license
* Skip license check in component
* Revert license changes
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* chore: remove react-query as unneeded
* chore: Re-gen lockfile
* chore: Bump next.js to v13.5.6
* yarn.lock regen after apps/console next version bump
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* add eastern and eastern pacific timezones
* fixed issue while running tests.
* fix: Find Braz..il instead of Brasil
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* fixed error in advanced tab atom build
-- used `DOMPurify` instead of `sanitize-html`
* hide BookerLayoutSelector for platform and removePlatformClientIdFromEmail
* fixup! Merge branch 'main' into event-advanced-platform-wrapper
* undo linting changes
* undo linting changes
* fix: active state of tabs items
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* feat: google meet conferencing api v2
* feat: add set default google meet conferencing app
* fixup! feat: add set default google meet conferencing app
* Initial draft of nextcloud app
* Add video adapter for creating a new conversation via API
* Make links dynamic, add nc user and pwd for auth, fix link creation
* Add nextcloudTalk app to yarn.lock
* Fix screenshot name
* Add OAuth2 handler
* Fix type for booking reference and fix access token header param, (for creating and deleting a meeting)
* Remove comment
* Add README.md file
* Fix redirect URL for authenticating Nextcloud user
---------
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* --init
* progress...
* add more docs
* bunch of changes and added back platform
* development guides added
* more guides in develop with cal
* self hosted WIP
* deployments
* fix deployment steps
* self-hosted guides
* ..
* Removed the development only sections
* Removed 'with Cal.com'
* use steps component for steps
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* Remove title and subtitle from ICS calendar description
* Remove unused method
* Use generateIcsString function for workflows
* Type fixes
* Refactor typing of CalEventParser
* WIP
* Type fixes
* Fix test
* Fix tests
* type fixes
* Remove duplicate code before `scheduleEmailReminder`
* refactor: include user-readonly in BookingFields
* feat: add read only name and email booking fields
* feat: Booker atom prop for read only name and email
* refactor: simplify props type
* remove outdated translations for insights
* use i18n strings for insights
* use i18n strings for routing forms
* use i18n strings for apps store
* fix more pages
* refactor
* fix
* feat: Add Mintlify docs
* Fixed the mint.json for v2
* Fixed versioning issue
* Add titles to ICS feed endpoints
* Added errors to v1
* Added rate-limit to API v1
* feat: added v1-v2 differences and v1 auth
* Trying to eliminate reasons for v1 not showing on publication
* Used the swagger openapi validator
* remove deprecated v1 endpoints
* Moved api docs into new folders without api-reference
* Renamed api to api-reference
* removed the versioning
* Got rid of anchor warnings
* Fixed naming
* Just as a test - using the same v2 openapi spec for v1 reference
* Removed 'externalDocs' from v1
* Removed securitySchemes
* Updated the diff between v1/v2
* Added v1 in front of /attendees to test
* Moved paths up and removed externalDocs
* Testing - Added content to the response
* Reduced paths to 1
* Testing: anything at this point
* Fixed validation
* Moved the other .mdx files to see if that's disrupting something
* Trying with a tab
* Empty tags array
* Added back servers field
* Removed all other schemas
* Removed v1 for now
* Added platform docs
* Language fixes
* Added v1 back
* add API V1 response for attendees
* remove unnecessary endpoint docs in API V1
* Removing platform and API for now
* Updated v2 openapi doc
---------
Co-authored-by: Syed Ali Shahbaz <alishahbaz7@gmail.com>
* fix: translations for sidebar
* Update apps/web/public/static/locales/en/common.json
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* banners
* useAuthHooks
* fixes to redirect and banner
* extract useIntercom to custom hook
* use app theme
* extract user-dropdown to new component
* Navigation Item
* navigation and profile dropdown
* Fix import
* navigation and sidebar
* fix type errors
* fix banners being an async call
* fix types
* fix banner prop type
* fix mobile nav item import
* fix banner types
* (revert) layout banner render method to fix type error
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* chore: Couple fixes to improve error reporting
* tweak: Fix error message
* refactor: Use findUniqueOrThrow instead of guard
* fix: Broken test, missing ID - suspect it passes because only one record exists
* chore: Minor refactor to split ZodEffect from ZodType
* fix: Satify typescript
* fix: theme is not configured in app router
* fix type error
* remove logs
* use testBothFutureAndLegacyRoutes
* add APP_ROUTER_SETTINGS_MY_ACCOUNT_ENABLED
* add comment to signup-view
* add a basic test for saml button in signup
* add a test for cookie consent checkbox
* refactor and remove duplicates
* rename data-testid for saml button
* add test for saml
* remove code not needed
* better naming
* improve
* address code nit
* skip saml test when needed
* fix flag
* improve
* improve more
* refactor
* refactor
* refactor
* fix and add 1 more test
* remove tag
* remove unneeded code
* fix
* fix test
* it needs to be parallel mode
* reduce code
* simplify
* fix
* fix flake
* fix another flake
* add comments + refactor
---------
Co-authored-by: unknown <adhabal2002@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* remove old code remnant
* -
* WIP
* type change
* --
* typefix
* fix type
* fix type
* change type name
* add basewhere to eventsByStatus
* add basewhere to the rest
* fix rendering null popular event list item
* URL params for start and endtime to have YYYY-MM-DD format
* remove console log
* resolve suggestion
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* Add `hideCalendarEventDetails` to DB
Co-authored-by: Alex van Andel <emrysal@users.noreply.github.com>
* Add option to hide calendar event details
* Pass `hideCalendarEventDetails` to event object
* Add to API
* Add to CalendarEvent class
* Pass `hideCalendarEventDetails` to calendar services
* Adjust test
* fix: move `hideCalendarEventDetails` to `api/v2/event-types_2024_06_14` and remove from older versions
- Added `hideCalendarEventDetails` to `api/v2/event-types_2024_06_14`
- Removed `hideCalendarEventDetails` from `api/v1` and `api/v2/event-types_2024_04_15`
* fix: calEventRaw is undefined (use event instead)
* chore: Remove debug artifact
* fix: description id + update to copy
* fix: Attempt at fixing type error
* Add hideCalendarEventDetails to test builder
---------
Co-authored-by: Alex van Andel <emrysal@users.noreply.github.com>
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* feat: Improve API v2 docs
* Consistency
* Made the descriptions complete sentences with period
* Update apps/api/v2/src/ee/schedules/schedules_2024_06_11/controllers/schedules.controller.ts
* chore: Add summaries for all API v2 endpoints
* Updated to Get all calendars
* Fix build issues
* Removed unneeded Swagger UI options
* Fix issues with OpenAPI spec
* added bookerLayouts
* added requiresConfirmation
* added tests
* undo extra changes
* undo extra change
* fixed imports
* added requiresBookerEmailVerification
* added hideCalendarNotes
* added lockTimeZoneToggleOnBookingPage
* added eventTypeColor
* undo extra changes
* added seats
* added requiresConfirmationWillBlockSlot to requiresConfirmation
* refactor: Implement BaseEventType class to avoid duplication across EventType input/output classes
## D-R-Y ##
* temp-fix: will revert later
* Correct placement of users array from EventTypeOutput to TeamEventTypeOutput
* Refactor: Shifted transformation logic to controllers using interceptors and pipes for a cleaner service layer.
* small fix
* Refactor: Moved transformation logic from service to controller using interceptors and pipes
** organisations/event-types
* feat: adde tests for `validateEventTypeInputs`
* fix: failing test
* fix: layout validator
* renamed blockCalendarForUnconfirmedBookings to blockUnconfirmedBookingsInBooker
* testing changes
* added disabled state
* fix merege conflict
* renamed requiresConfirmation to confirmationPolicy
* renamed OutputEventTypesResponseInterceptor to OutputTeamEventTypesResponseInterceptor
* renamed `darkThemeColor` -> `darkThemeHex` and `lightThemeColor` -> `lightThemeHex`
* renamed `eventTypeColor` -> `color`
* changed `requiresConfirmation` -> `confirmationPolicy`
* added tests for disabled state
* added class-validators to `disabled?: false`
* Revert: Split create and update input/output classes
* feat: Refactor responses to use DTOs with plainToClass for explicit property control
• Updated all endpoints to return response DTOs (e.g., CreateTeamEventTypeOutput, GetTeamEventTypeOutput) to ensure consistent Swagger documentation generation.
• Introduced plainToClass for transforming responses, enabling explicit control over which properties are returned in the response, following Morgan’s recommendation.
• Replaced generic HandlerResponse type with class-validator based DTOs for each endpoint, ensuring TypeScript enforces correct response structure.
• Applied strategy: "excludeAll" to limit response properties to only those explicitly defined in the DTO, preventing unintended fields from being included in the API responses.
* added pipes to transform output data
* add clean script to platform-types package.json
* added customName
* added destination calendar
* fixed type errors
* added useDestinationCalendarEmail
* refactor: api-reqest and api-response
* Update event-type.output.ts
* fixed errors
* Update yarn.lock
* added some missed properties to output
* Update constants.ts
* removed return type
* fixed some type errors
* reuse types
* Improve readability of validation functions
* Update CHANGELOG.md
* chore: post publish platform libraries
* Update documentation.json
* fix: reset platform libraries to 0.0.0
* fixup! fix: reset platform libraries to 0.0.0
* Update event-type.tranformed.ts
---------
Co-authored-by: supalarry <laurisskraucis@gmail.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* add booking booking to team settings
* add update mutation
* add missing export
* fix dirty state
* first version of global team limits in getUserAvailability
* add test setup
* create seperate test file for global limits
* add tests for all units
* move limitManager and booking limit functions outside of getUserAvailability
* add migration
* clean up code
* move yearly booking count to booking repository
* code clean up
* don't count rescheduling booking
* add test for getSchedule
* fix type error
* fix type error
* fix type error
* fix from and end date for fetching bookings
* reuse functions
* allow null for bookingLimits
* remove bookings from managed event type
* fix type error
* code clean up
* small fixes form clean up
* fix type issue
* same fixes in teams/_post
* fix existing tz issue
* tests for fix
* adds missingn await
* imrove description
* remove spreading
* fix reschedule issue with booking limits
* fix reschedule error with booking durations
* remove useeffect
* undo commit
* add bookingLimits to UpdateOrgTeamDto
* fix unit tests
* Prepare view for app router migration
* throw error if not in ascending order
* fix disabled update button
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* update UI of signup, login pages
* remove disabled state from google sign-in
* Put isGoogleLoginEnabled to its place + fix displaySignupForm default value
* Rename Signup flow test -> Email Signup flow test
* add data-testid to continue with email button
* completely decouble formMethods values from google sign in
* fix
* refactor
* add signup page test
* revert yarn.lock
* fix e2e test
* add saml in signup
* add saml in signin
* revert
* remove space
* modules for platform plans and billing pages
* add platform billing and plans related pages
* update platform navigation to include billing tab
* custom hook to upgrade team subscription
* refactors
* export cta row component
* fixup
* only pass in subscription id instead of whole subscription
* refactor :teamId/subscribe endpoint logic, add endpoint for upgrading stripe and shift all webhooks logic into services
* refactor team subscription logic, add logic for upgrading stripe and webhooks logic from billing controller
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: Flakyness on pages that use a hard refres
Signed-off-by: zomars <zomars@me.com>
* Update Shell.tsx
---------
Signed-off-by: zomars <zomars@me.com>
* refactor: make manageg user input name required
* refactor: return managed user name in output
* refactor: store provided user name
* test: check managed user name in input and output
* docs: update swagger
* chore: Use no isolation and pooling for unit tests
* Added the params to main command
* Added back the base checkout
* Remove pooling
* Run against an 8vCPU machine
* Added pool=threads back
* Setting on 4vCPU since 8 is not needed due to workflow dependencies
* remove references to /pages for sso, setup, signin pages in /auth
* remove references to pages for insights
* remove references to pages for d
* remove references to pages for signup
* add page for /future index page
* fix routing-forms
* fix
* add missing defaults
* use getServerSessionForAppDir instead
* fix apps/[slug]/[...pages]
* fix metadata in apps/slug/pages
* refactor
* refactor
* remove duplicate code for PageProps
* remove references to pages for /reschedule
* fix
* fix routing forms
* type fix
* fix routing forms again
* revert changes for app/slug/pages
* revert
* revert changes in yarn lock
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* fix settings/admin/page
* remove references to pages for settings/teams
* remove double layouts
* move pages that do not need layout out of (settings) group
* fix
* fix
* fix
* fix
* add sso page and fix layouts
* booking: Move getServerSideProps to /lib
* remove duplicate
* bookings: Move getStaticProps to /lib
* fix type check
* replace setHeader with a server action call in withEmbedSSR
* Add env variables for booking
* refactor: define inputs and outputs by separating default and custom fields
* refactor: event type api <-> internal transformers
* refactor: v2 use refactored libraries to transform input and output booking fields
* refactor: dont allow custom slugs with default reserved slugs
* refactor: input service store only specific default system fields
* refactor: atoms display only specific default system fields
* refactor: delete unused system field constants
* fix: tests
* fix: old event types
* fix: imports
* fix: import
* chore: release libraries and use v2 with them
* fix: unit tests
* refactor: push email in case of missing phone
* refactor: satisfies check for event-type locations
* update version
* fix button to match new spec
* migrate tests to objectContaining
* fix tests
* update RTL
* yarn.lock update
* bump fetch mock to latest vitest version
* update deep mock to use vitest 2.0
* fix mock prisma type cast
* meet base test fn singature for V2
* remove console.log from next test
* feat: remove dropdown from app-store and redirect to new-app-install-flow
* removed extra code
* fix: account select loading issue
* removed getPaymentCredential (unused)
* fix: only redirect after the app has been added to all the event-types
* remove overflowIndicatorStyles
* refactor getUserAdminTeams
* send teamId instead of id
* seperate locations component
* for conferencing apps skip select account page
* refactor InstallAppButtonChild
* installing conferencing apps shows locations dropdown in configure step
* send location data to the handler
* send location data to the handler
* add the newly installed to the locations dropdown (prefillLocation)
* fix: type errors
* fix: handle es-lint errors
* fix: app is added again on submit
* only add app if not already added
* fix: type erros
* filter out managed events for now
* fix: show installed count badge
* remove 2 toast message
* feat: added tests for conferencing apps
* fix: loading indicator
* Update apps/web/pages/apps/installation/[[...step]].tsx
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* Update apps/web/pages/apps/installation/[[...step]].tsx
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* move `getUserAdminTeams` to `UserRepository`
* fix: zoom and jelly not redirecting to the new app install flow
* fix: typo
* add `installableOnTeams` prop
* split `configureStepCard` into smaller components
* fix: step count
* fix: show loading indicator until the new page is loaded
* fix: organizer_default_conferencing_app not visible in a team
* Introduce QueryClient to app card tests
* fix: typo
* add installableOnTeams prop
* fix: tests
* seated events shouldn't have multiple locations #15174
* fix: o365 callback
* fix: office365_video not redirecting to event-types step
* Revert "fix: o365 callback"
This reverts commit bba841035ea34f8c31201b64c77221b8d8c3e626.
* add TEAM_SELECT_STEP
* add apps to orgs and their sub-teams initial commit
* undo team select step
* small ui fix
* fix: wrong step numbers
* fix: dont allow app installation without cretendialId
* fix: don't show acme team as it cannot have any events
* refactor useAddAppMutation
* removed console.log
* added comment
* added comment
* move locationOptions from getServerSideProps a trpc query
* fix: failing tests
* Update conferencingApps.e2e.ts
* refactor useAddAppMutation
* refactor useAddAppMutation 2
* fix: test failing
* fix: unit test
* Revert "fix: unit test"
This reverts commit 6d74032211d094478c6d7cf9aedbce696dfb768d.
* fix: failing test
* Increase test timeout for conferencing app tests
* fix: write separate tests for each conferencing app to prevent hitting 6000 ms timeout
* improved tests naming
* fix: correct message and translation key #15657
* fix: write separate tests for each analytics app to prevent hitting 6000 ms timeout
* fix: analytics apps test
* attempt to fix failing tests
* fix typo
* refactor
* update: replace text-gray with text-stuble
- works with light mode too
* update: use userRepository.getUserAdminTeams
* Merge branch 'main' into feat/org-team-app-install-2
* fix: after merge conflict from app router migration
* remove consoles
---------
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* set error messages to know whats wrong
* trying to find if org with same owner already exists
* ensure a user cannot create more than one platform team
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* chore: Add Prisma extension to block updateMany with undefined 'in'
* Fix type
* types
* Added check for deleteMany as well
* Improved in check
* type
* Updated check to only check undefined and not isArray
* Renamed the guard
* another rename
* Changed undefined check to use typeof
* Types
* Added check
* Update packages/prisma/extensions/disallow-undefined-in-delete-update-many.ts
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* Added unit tests
* Added a good case
* Rename
* Rename fix
* Types
* Temporarily disabling the extension for testing
* Added back the extension
* Trying to also log to see if there are swallowed errors
* Update
* removed unused params
* removed console.log
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* FEAT: Implement Dub.co for conversion tracking
* add link creation, @vercel/functions
* use refer.cal.com/:username instead of go.cal.com/r/:username
* sale conversion tracking
* add copy referral link
* limit to IS_CALCOM only
* Update yarn.lock
* fix DubAnalytics
* use workaround for isNewUser
* pass req to getOptions
* Update next-auth-options.ts
* fix ts errors
* only show DubAnalytics outside EU
* add Dub Analytics to /signup
* use WEBSITE_URL instead
* on-demand generate links
* add migration
* add check for existing link + change fetch method to poast
* remove refer.cal.com from PoweredByCal
* limit DubAnalytics to /signup only
* simplify generate-referral-link
* restore yarn.lock
* add yarn with dub sdk in
* add yarn with dub sdk in
* yarn
* Update yarn.lock
---------
Co-authored-by: sean <sean@brydon.io>
Co-authored-by: Peer Richelsen <peer@cal.com>
The close button would actually need to be a `button` instead of a `span` HTML element to be both screenreader and keyboard user accessible, as well as having an accessible label.
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* update calendar logic to handle multiple calendars
* add method to link calendar to credential
* remove logs
* update platform libraries
* update calendar logic to handle multiple calendars
* update credentials repository
* add selected calendars repository to destination calendars module
* add method to get user selected calendars and rename fn
* chore: PR feedback
* resolve merge conflicts
* fixup
* make sure we cover all edge cases for apple calendar
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* fix: wrong reschedule link
* test
* fix
* test
* test
* refactor: get org id of booking
* fix: redirect URL to handle movedToProfile username based on domain context
* Revert not needed changes
* Revert unnecessary changes now
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
* wip
* add method to OrganizationRepository
* server side fetching for availability
* fix error
* server side fetching finish
* remove log
* fix
* fix
* fix type
* no need to export
* fix type
* address nit comments
* fix to allow paypal install on team when user already installed
* handle if parseInt fails
* Update add.ts
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* add class-transformer package to type
* update input dtos for get busy times and fix type issue
* fixup
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* added lockedSMS to future routes
* add orgMigrations routes to future
* correct metadata
* small fix
* add orgMigrations to future
* Move components to client components
* Remove tRPC element from edit user RSC
* Get username for meta
* Remove suspense query
* Remove orgMigrations from app router
* Type fix
* Revert "Remove suspense query"
This reverts commit eadd814f6e4a5d6856d9218342b7909c22fe62c6.
* Handle suspenseQuery in app router
* User edit page, fetch data server side
* Update yarn.lock
* Export getFixedT
* Set PageWrapper as root layout for settings
* Settings Layout accepts strings for shell heading
* Add OOO to app router settings
* Refactor layout for my-account pages
* Remove instances of pages router from my-account
* Refactor security pages
* Add billing to app router
* Add admin API link to layout
* Add api keys page
* Webhooks WIP
* Refactor SettingsHeader to client component
* Add webhook pages
* Refactor API keys page
* Add admin app page
* Type fix
* fix types
* fix developer/webhooks/[id] param value type error
* remove unnecessary code
* do not pass t prop to CreateNewWebhookButton
* fix type errors in webhook-edit-view
* fix the remaining type errors
* do not use prisma directly in generateMetadata
* remove use client if unnecessary
* Remove unused shell heading from SettingsLayoutAppDir
* improve metadata
* fix billing page
* fix import in settings/teams
* Use next `notFound()`
* fix type check
* fix type check
* remove unused code
* Fix calendar setting page
* Separate settings pages into route groups
* Refactor admin settings pages
* Remove meta instance from billing page route
* Update settings layoutAppDir
* Refactor developer settings pages
* Refactor out of office
* Refactor my account settings
* Refactor admin api page
* Refactor security pages
* Type fix
* fix styling in settings layout
---------
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* fix: fixed the flaky tests that failed maximum times
* Update action-based.e2e.ts
* another
* add
* add another
* update
* fix
* add
* fix
* update
* update and add
* fix
* update
* update
* chnages
* chore: updates
* reafactor and following best practice
* fix
* add and update
* update
* update and fix
* fix type
* another test
* update
* Update organization-invitation.e2e.ts
* refactor and update
* fix
* final update
* trying to create generic function for ors
* chore: Add generic function to run separate queries for OR
* Refactored getTotalNoShows to use separate queries
* Finished noshows
* Made the no shows logic handle single result
* feat: Create team event on a new team creation
* fix
* fixed failed tests
* move team event type form
* fix type error
* requested chnages
* update
* some update and refactor
* fix e2e test
* Update useCreateEventType.ts
* update
* fix type error
* fix e2e
* update
---------
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* perf: Separate OR clauses from Insights counts
* fixed bug with delete statement
* Fixed types
* Reverted unneeded change
* Need to use += so we capture data from all queries
* feat: Ability to Hyperlink text in Checkbox on Additional Questions
* update
* fix and update
* fix type error
* fix and update
* dpdate
* fix type error
* fix unit test
* Update
* fix tests
* revert test
* remove yarn.lock
* remove schema.prisma
* update
* remove log
* revert
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
* WIP
* services
* controllers + outputs
* unit tests for repositories
* use hard coded enum type
* use prisma import
* remove redunant input file
* fix packagejson
* rename to spec files
* fix typo in option service file name
* move membership call to org membership service
* move logic to service > repo
* fix membership query
* attribute controller e2e spec
* add options e2e test
* add jest watch for e2e
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
* Remove use of location from FormBuilder
* Add tests
* FormBuilderField and BookingFields tests
* More tests
* Remove always true if condition
* Fix ui import mockig that got broken after the last merge
* Ensure adding isBookingPage is done in components in /modules, not in /pages
* Detect isBookingPage prop coming from Page and add it to page wrapper app dir
* fix build
* fix
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* fix: use `userPhone` instead of `phone` for switch case
Currently this switch case never gets to the last case ("phone") as the type expected is wrong.
Here the type may have value `userPhone` and not `phone`.
* fix another case
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* fix: api v2 booking controller with api key
* add test
* fixup! add test
* fixup! Merge branch 'fix-booking-controller-api-key' of github.com:calcom/cal.com into fix-booking-controller-api-key
* fixup! Merge branch 'fix-booking-controller-api-key' of github.com:calcom/cal.com into fix-booking-controller-api-key
* chore: Add replexica for AI i18n
* Add write permission
* moved i18n to repo root
* Added checkout to i18n job
* Added contents:read
* Added actions: write for testing
* Updated contents: write
* feat: add missing translations
* Checking out the i18n files from PR head sha
* Added the rest of the languages
* Added i18n to list of required checks
* Added a comment explaining the custom common.json checkout
* Commented out languages to not crush Replexica usage
* Add a fetch-depth: 2
* Supporting fetch of external fork branch
* Put back the dynamic sha
* Added a check for null so this can run manually and not just on PRs
* Removed comments
* feat: update translations
* Reverted de and fr to re-run with new settings
* feat: update translations
* Reverted de and fr to re-run with new settings
* feat: update translations
* Removed crowdin
* Limited languages to major ones for 1st pass
* feat: update translations
* Fixing es test
* Reverted yarn.lock changes
---------
Co-authored-by: Replexica <support@replexica.com>
* feat: block pending meetings for requires confirmation
* add i18n
* fix:typecheck
* fix(requires-confirmation-block): Fixes type error
* fix(requires-confirmation-block): Fixes type error
* Tweak to set BookingWhereInput as the explicit type instead of as
* fix: type error
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Fix text for cookie consent checkbox in various languages
* update
---------
Co-authored-by: unknown <adhabal2002@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* feat: Add rescheduledBy & canceledBy fields in the DB
* fix: type check
* fix: type check
* fix: use session user email for reschedule
* fix: unit test
* feat: db field email validation
* feat: rescheduledBy and cancelledBy in webhooks
* revert unrelated changes.
* make session user secondary, default to Anonymous
* if condition not required
* Make cancelledBy optional
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
* update cancel booking type
* fix: update cancelledBy in db when requesting reschedule
* remove default value for fields
* fix: type check
* feat: manage fields via api v1
* fix: add fields in booking read api v1
* test: expand to cover new fields
* fix: use cancelledBy param on booking page
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Add handlePaste function and integrate it with options fields
* Prevents function running if user does not paste a list, allows list items to be pasted without deleting following items
* Subs useState for rhf useWatch to fix issues with multiple form fields
* Sets options array as optional property in zod schema
* Assigns default value to options array to fix possibly undefined type errors
* Sets placedholder property as optional
* maps selectText to options on mount
* Removes comma & semicolon delimiting for pasted lists (new line only) & defines regex as a constant
* Sets default value of placeholder to empty string, provides default fallback for component text field if placeholder is omitted.
* Fix type error on placeholder
* Extracts handlePaste to service function & tests thoroughly
* Some improvements and tests arent needed
* More fixes
* Fix reporting as well
* TS fixes
* Do transforms to and fro from label
* Add unit tests
* Unit test reporting
* Test Improvements
* Self review feedback addressed
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* Set the organizer in the organizer field
* Create generateIcsFile
* Add role enum and only disable for organizers
* Move emails to generateIcsFile
* Add new ics func to new emails
* Fix tests
* Type fix
---------
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* fix: Workflow action 'email to host' only sends to one host of team event
* add in missing files
* fix host logic
* uncomment working test
* code refactor
* use connected calendar email
* add changes to util file
* fix: extend eventType info in sendCancelledReminders
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* feat: ✨ support for adding script url added for umami
This will help self hosters in setting up umami.
* feat: ✨ set default value for script URL in the form field
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* update to fix seated event reschedule
* updated handleseats tests
* updated handleSeats timeslot
* updated test to expect error
* update to remove uid in where clause (isFirstSeat)
* feat: make the meeting duration time more visually toggleable
* final_update
* Update dynamic-booking-pages.e2e.ts
* fix e2e
* fix: e2e test
* fixed
* update
* show selcted item at the time of mount
* fix type error
* Update Duration.tsx
* fix
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* fix: Chinese traditional shows multiple durations of the event as a string
* revert
* make changes only in necessary files
---------
Co-authored-by: unknown <adhabal2002@gmail.com>
* feat:add prefilcheck check box in the field creation
* chore:formatted the li8 translations
* feat:add e2e test case for this feature
* refactor:reanmed the key from prefilledCheck to disableOnPrefill and moved the readOnly logic to formbuilderField
* chore:fixed the type check
* fix:if prefilled has error. do not disabble it
* chore:removed the e2e tests for prefill in e2e
* chore:revert back to old changes
* chore:remove unwanted code frome2e
* Support name field as well
* refactor:handled the feedback changes. still unit test cases pending
* feat: add unit tests for disable field on prefill logic
* chore: resolved the type check and typos
* chore:renamed the files and type clean up
* Apply suggestions from code review
* chore:renaming test files and moving the disableonprefill hook to formbuilderFeild.
* refactor: add unit test for serach params and form values check and minor code formatting and file name changes
* fix: validating the input value partially at the intialising phase. so that form response values and from ui values are same and making sure invalid data not sent to backend on submit.
* chore:fix the type check issue
* fix: field value valdiation at initilisation and add the unit test cases for that change
* chore:add comments to the tests
* chore:resolve type check
* chore: moved the tests to the formBuilder
* Simplify codebase by ensuring select and multiselect changes the value when no option is found
* Relocate and refactor tests
* handle special cases
* Dont disable for dirty fields
* Update schema.prisma
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
* WIP
* add frontend
* backend to update weight
* UI improvements
* WIP weight algorithm
* enable weights switch + algorithm improvements
* fix weightDescription
* clean up code
* remove OOOEntryHost from schema.prisma
* implement logic (not yet tested)
* add tests for weight algorithm
* add test with weight adjustment
* finish unit tests
* fix type error
* fix type error
* add migration
* fix type error
* fix event type update handler
* fix failing test
* UI fixes for saving hosts
* make sure weightAdjustment is not lost on host changes
* fix weightadjustment for new hosts
* add weightAdjustment to availableUsers
* fix type errors
* fix default value for weight
* make weight and weightAdjustment optional
* fix type errors from schema changes
* type fix
* clean up code
* improve comments
* remove comment
* clean up code
* add tests & weight adjustment improvments
* better variable naming
* fixes for weight adjustments
* make weightAdjustments proportional to weights
* fix previous host weight adjustments
* improved tests for weight adjustments
* save weight and priority + sort hosts correctly
* fix type error
* code clean up
* remove console.log
* use BookingRepository to fetch bookings of users
* use BookingRepository to fetch bookings in getLuckyUser
* fix type errors
* fix weightAdjustment if changed from fixed to rr host
* disable weights when 'assign all' is enabled
* typo
* allow 0 weight
* set min (and max) for weight and priority
* use useWatch
* code clean up
* fix type error
* only count accepted bookings for RR
* fix type error
* improve data fetching of bookings
* only filter bookings of availableUsers
* code clean up form feedback
* fix tests
* don't count no show bookings
* code clean up
* choose user with highest weight
* use one reduce instead of two
* use reduce instead of filter and map
* don't show weights toggle when 'assign all' is enabled
* design fixes
* fix type errors
* fix: type check
* Update packages/features/eventtypes/components/AddMembersWithSwitch.tsx
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Create confirmation dialog for attendees
* Add disabling host emails option
* Fix DOM issues
* Allow updating disabling emails on backend
* Pass metadata to sendEmails functions
* Clean up
* Type fixes
* Fix test
* Allow for enterprise only
* Type fix
* Test fix
* Check for parentId
* Disable emails for sendScheduledEmails and sendScheduledSeatsEmails
* Remove unused variable
* Only update disable all emails if event type belongs to an org
* Disable scheduling mandatory reminder workflow if attendee emails are disabled
* Refactor disable email UI
* Update copy
* Type fixes
* Fix missing params
* add gtm to load in us only
* fix: Tried to give typescript some help
* fix: Alternative fix
* fix: Add yarn.lock
* fix: Oops
* fix: type err
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* test: prevent modal button clickable before flicker
* chore: add note to migrate to appDir to solve full page flicker issue
* chore: Improve OutOfOfficePage loading experience
Refactor the OutOfOfficePage component to improve the loading experience by using the `isPending` property from the `trpc.viewer.outOfOfficeReasonList.useQuery()` hook. This workaorund eliminates the full page flicker issue and provides a better user experience. The "Add" button now shows a loading state when the query is pending.
* Update index.tsx
* chore: Update outOfOffice.handler.ts to use input.offset instead of calculating offset
* fix e2e
* Update
* revert
* chore: Fix offset calculation for out of office bookings
* chore: Update date range calculation for out-of-office modal
* chore: Remove console.log statement in out-of-office modal
* chore: Update TimeZoneEnum with additional time zones
This commit updates the TimeZoneEnum in the types.ts file to include additional time zones. The new time zones added are:
- ID: Asia/Jakarta (UTC+7)
- SAMOA: Etc/GMT+12 (UTC-12)
- AMERICAN_SAMOA: Pacific/Pago_Pago (UTC-11)
- HAWAII: Pacific/Honolulu (UTC-10)
- ALASKA: America/Anchorage (UTC-9)
- PACIFIC_USA: America/Los_Angeles (UTC-8)
- CENTRAL_USA: America/Chicago (UTC-6)
- EASTERN_USA: America/New_York (UTC-5)
- VENEZUELA: America/Caracas (UTC-4)
- ARGENTINA: America/Buenos_Aires (UTC-3)
- BRAZIL: America/Noronha (UTC-2)
- AZORES: Atlantic/Azores (UTC-1)
- FRANCE: Europe/Paris (UTC+1)
- GREECE: Europe/Athens (UTC+2)
- RUSSIA: Europe/Moscow (UTC+3)
- UAE: Asia/Dubai (UTC+4)
- PAKISTAN: Asia/Karachi (UTC+5)
- BANGLADESH: Asia/Dhaka (UTC+6)
- SINGAPORE: Asia/Singapore (UTC+8)
- JAPAN: Asia/Tokyo (UTC+9)
- AUSTRALIA: Australia/Sydney (UTC+10)
- SOLOMON_ISLANDS: Pacific/Guadalcanal (UTC+11)
- NEW_ZEALAND: Pacific/Auckland (UTC+12)
The purpose of this update is to provide a comprehensive list of time zones for users to choose from when setting their time zone in the out-of-office feature.
* update
* fix
* remove comment
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: unknown <adhabal2002@gmail.com>
* feat: provide option to allow rescheduling with the same round-robin
host
* update
* fix type error
* fix and update
* fix type error
* update
* remove
* Update getEventTypesFromDB.ts
* add test
* small fix
* fix requested changes
Simplify the hover effect on the Card component by adding a transition to the transform property. This improves the user experience and makes the hover effect smoother.
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* fix: uncaught errors in PaymentService
* fix: uncaught errors in WebhookService
* fix: uncaught errors in sendPayload
* fix: uncaught PaymentService typings in payment utils
* fix: Remove missing users from assignment (#16115)
* remove missing users from assignment
* early return
* fix: use organization default fixedPrice if self-serve/default price is passed in (#15966)
* Use fixed price if default (selfserve) is used
* fix conditional
* use .env instead of hard coded values
* feedback
* fix: display skeleton loader (#16114)
* fix: display loader
* fix: updated skelton loader
* feat: create new markNoShow endpoint (#15738)
* feat: create new markNoShow endpoint
* chore: add schema
* chore: update name
* chore: save progress
* refactor: improve code and types
* fix: unit test
* chore: improvements
* chore: move query to booking repository
* fix: type error
* chore: Remove cal.ai email assistant (#16003)
* Delete apps/ai directory
* removed cal-ai app from app store
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* feat: Add upcoming bookings feature to GET /api/bookings endpoint (#16060)
* feat: Add upcoming bookings feature to GET /api/bookings endpoint
- Added support for filtering upcoming bookings by adding the `upcoming` query parameter to the GET /api/bookings endpoint.
- When `upcoming` is set to "true", only upcoming bookings are returned.
- Regular users can now retrieve only their upcoming bookings by setting `upcoming` to "true".
- System-wide admins and organization admins can also retrieve only upcoming bookings by setting `upcoming` to "true".
* feat: Add status filter to booking API endpoint
This commit adds a new `status` filter to the booking API endpoint. The `status` filter allows filtering bookings by their status, overriding the `dateFrom` and `dateTo` filters. The only valid value for the `status` filter is "upcoming".
* Update _get.ts
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* fix: Hide personal booking theme when in an organization (#16117)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: uncaught errors in WebhookService
* fix: uncaught errors in sendPayload
---------
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Imamuzzaki Abu Salam <imamuzzaki@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* refactor: have system and user booking fields schemas and united schema
* fix: event-types output service filter out system booking fields for response
* chore: v2 update platform-libraries to 0.0.25
* chore: platform-libraries export types and update changelog
* chore: add updated lock file
* option to cancel/reschedule in past bookings
* allows reschedule and cancellation on past bookings
* make headline checks readable
* --
* --
* review feedback
* update for location identifier
* for typecheck err
* Update packages/features/bookings/lib/handleNewBooking/getBookingData.ts
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
* update to use custom label for location, remove usage of hideWhenOneOption, remove string conversion of booking field
* nit
* nit
* nit
* Use the dataStore only instead of modifying bookingFields directly from outside the FormBuilder
* Dont unset the actual label, instead have a different property noLabel for this
---------
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
* feat: Add upcoming bookings feature to GET /api/bookings endpoint
- Added support for filtering upcoming bookings by adding the `upcoming` query parameter to the GET /api/bookings endpoint.
- When `upcoming` is set to "true", only upcoming bookings are returned.
- Regular users can now retrieve only their upcoming bookings by setting `upcoming` to "true".
- System-wide admins and organization admins can also retrieve only upcoming bookings by setting `upcoming` to "true".
* feat: Add status filter to booking API endpoint
This commit adds a new `status` filter to the booking API endpoint. The `status` filter allows filtering bookings by their status, overriding the `dateFrom` and `dateTo` filters. The only valid value for the `status` filter is "upcoming".
* Update _get.ts
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* test: Add tests for POST /api/event-types endpoint
* revert: undo last unintended change in yarn.lock
* revert: undo last unintended change in package.json
* managed by tooltip
* updated for team admin
* updated for typechecks and naming
* for multiple admins
* update to show team link when more than 2 admins
* nit/chore : variable naming
* improvement
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: unknown <adhabal2002@gmail.com>
The commit refactors the form submission logic in the CloseComSetup component to use the URLSearchParams API for constructing the URL and removes unnecessary code.
* add reassign host to edit dropdown
* add dialog to reassign rr host
* Design improvements
* add translations
* only show reassign for admin/owner
* add first version of email template
* Init rr assign endpoint
* Pass booking information to rr assign endpoint
* Only allow attendee of booking to reassign themselves
* Send email to reassigned and cancelled member
* On reassign change calendar events
* Add workflows for new host
* On reassign new host - rr
* Fix icon
* Abstract reassignment logic
* Update calendar invite
* Add tests
* Clean up
* Merge with `main`
* Type fixes
* Add back dialog and handle no available hosts
* Handle if rr host is not organizer
* Fix calendar invites when organizer doesn't change
* Clean up
* Clean up
* Type fixes
* Type fixes
* Type fixes
* Type fixes
* Type fix
* Type fixes
* Type fixes
* Add custom responses to evt object
* Type fixes
* Type fix
* Type fix
* Type fixes
* Type fixes
* Type fix
* Type fix
* Update tests
* Type fixes
* Fix tests
* Fix tests
* Add booking repository
* Fix tests
* Fix tests
* Add doesUserIdHaveAccessToBooking for user
* Add check if user is team admin
* Check user permission tRPC route
* Type fixes
* Correct Promise.all
* UI fixes
* UI fixes
* Remove unused assigned hosts prop
* Type fix
* Remove unused frontend code
* Include user priority
* Fallback to event type users for older event types
* Get booking workflow reminder
* Revert back to eventType.hosts
* Fix lint
* Handle changing workflows
* Type fixes
* Type fixes
* Type fix
* Fix tests
* Update new booking imports
* Fix imports
* Type fix
* Type fix
* Fix adding all members to reassignment emails
* Fix cancelled RR emails to show old host
* Ensure consistent event titles
* Send new event workflows to new host
* Change event name if organizer changed
* Fix query error
* Delete old booking reference when reassigning
* Type fixes
* Type fixes
* Fix test
* Rename func isAdminOfTeamOrParentOrg
* Select specific workflow fields
* Address workflow feedback
* Delete const
* Address feedback
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* feat: Make event duration a dynamic text variable
* Update common.json
* final update
* update
* fix type error
* fix unit test
* refactor and update
* For now log the situation when duration isnt a number
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* fix/typoe
* use noop
* Update packages/features/ee/common/server/LicenseKeyService.ts
* wip - try unbork e2e
* update conditional
* use e2e value for NOOP resolve value
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* fix: meeting link is not updated
* fix: broken ui in edit location dialog
* Update editLocation.handler.ts
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* test: add VariableNode test suite
* test: add ToolbarPlugin test suite
* test: add AutoLinkPlugin test suite
* test: add AddVariablesDropdown test suite
* test: add Editor test suite
* chore: Remove unnecessary comments in ToolbarPlugin.test.tsx
---------
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
* chore: platform-libraries export updateNewTeamMemberEventTypes
* chore: platform-libraries export updateNewTeamMemberEventTypes
* chore: v2 api bump platform-libraries to 0.0.22
* fix: add created managed user to assignAllMembers: true team event-types
* fix: add created organizations user to assignAllMembers: true team event-types
* refactor: organization teams chose if team creator is auto-accepted
* refactor: managed users have only 2 default event types with video
* refactor: lowercase schedulingType for creating team event-types
* refactor: lowercase schedulingType for creating team event-types
* feat: separate platform teams by OAuth client
* swagger regenerate
* refactor: delete platform team when oauth client deleted
* revert: keep 4 default event-types
* fix: tests && merge of main into this branch
* fix: typecheck
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* fix: dont check OrganizationSettings.orgAutoAcceptEmail uniqueness for platform teams
* feat: display organizationId in OAuthClientCard
* feat: ApiAuthStrategy handle oauth credentials
* refactor: clean up ApiAuthStrategy test
* refactor: use ApiAuthGuard in OauthClientsUsersController and OAuthFlowController
* fix: copying org id
* refactor: more specific error message when api auth
* refactor: auto accept team creator membership
* feat: useTeamEventType and useTeamEventTypes hooks
* refactor: make team event-types public & searchable by eventSlug
* feat: include host name in team event-types hosts response
* fix: isFixed=true by default for COLLECTIVE event hosts
* fix: useTeamEventType eventSlug access
* feat: BookerPlatformWrapper enable team events by exposting orgId and teamId props
* refactor: provide orgId in atoms context
* refactor: use orgId from context in team event-types hooks
* refactor: return teams in useMe
* chore: examples app teams setup
* Revert "refactor: return teams in useMe"
This reverts commit de992ddc9af6ee9a2111938069f5b9c34cc2d8ea.
* Revert "chore: examples app teams setup"
This reverts commit 0766aa21acc25efa2361d38c3f87ddba773a0245.
* feat: useTeams hook
* chore: setup examples app with team event-type
* fix: small fixes
* swagger
* Revert "refactor: provide orgId in atoms context"
This reverts commit f053a498ee6f8fa8ece5ec8d8630c59eda8873e3.
* feat: orgId in atoms context
* feat: PlatformBilling guard
* chore: delete test of the deleted oauth-client-credentials.guard
* refactor: org event-types collective events isFixed always true and priority medium
* refactor: org event-types COLLECTIVE response ignore isFixed and priority as they are same
* fix: organizations event-types e2e
* fix: billing guard
* refactor: tests cleanup
* fix: platform plan guard spec
* refactor: e2e test cleanup
* seed error if not team
* refactor: rename authenticateApiKey to authenticateBearerToken
* refactor: transforming response hosts
* refactor: rename findUniqueByMatchingAutoAcceptEmail to findUniqueNonPlatformOrgsByMatchingAutoAcceptEmail
* refactor: rename findUniqueByMatchingAutoAcceptEmail to findUniqueNonPlatformOrgsByMatchingAutoAcceptEmail
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* Init
* Add mock trpc context
* Intro mockDatabaseClient
* Introduce mockDatabaseClient class
* Add delete video app test
* Add calendar test
* Remove unused func from bookingScenario
* Remove console.log
* Add app repository
* Add createMany method to event type repository
* Remove instance of MockDatabaseClient from video test
* Add destination calendar repository
* Remove instances of MockDatabaseClient
* abstract logic to own handler
* Remove dev dependency
* Clean up
* Type fix
* Pull yarn.lock from main
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* feat: No-show bookings - do not count towards a member's round robin assignment
* filter no show organizer
* remove logs
* fix: filter bookings where host attendee is no show
* fix: use not condition for noShow
* chore: test
* add default false for noShowHost
* Revert "chore: test"
This reverts commit c914a8fc4a14ca9c7d8c4a08ff8b0f463789171c.
* chore: integration test
* fix: noShowHost not working for null
* Update packages/lib/server/getLuckyUser.ts
* chore: update test description
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: gh0st91848 <gh0st91848@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* fix: Change minimum number of teams required for org self-serve
Signed-off-by: Souptik Datta <souptikdatta2001@gmail.com>
* refactor: Use a new constant for displaying org helper text dialogue
Signed-off-by: Souptik Datta <souptikdatta2001@gmail.com>
* Update packages/lib/constants.ts
* Update turbo.json
---------
Signed-off-by: Souptik Datta <souptikdatta2001@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* removed reduntand check on assignedusers
* update for managed eventtype
* formatted
* comments
* Updated comments
* extracted checkForEmptyAssignment and added tests
* updated comments
* updated to show dialog also when not yet saved
* update translations
* updated comments
* updated translation
* updated types
* chore: update naming and comments
* Delete apps/web/lib/checkForEmptyAssignment.ts
deleted since file was renamed
* Delete apps/web/test/lib/checkForEmptyAssignment.test.ts
deleted as the file is renamed to be more descriptive
* update to do teamcheck before
* chore: revert name to CheckForEmptyAssignment
* updated check conditions
* updated useEffect dependencies
---------
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* WIP: UI created to see if it matches RFC idea
* Remove schema as we validate on the backend with old+new key schemas
* Add comment about proxy URL request when on older versions
* feat: create custom axios instance to use signature middleware
* fix: update form to respect new schema
* Add cal signature token to trubo env
* use backend mutation for creating license keys
* add loading state to creation button
* update form to have a success state
* fix type error for console.warning :')
* use api version v1
* Inital setup
* Fix verifyApi Key tests
* Implement tests for LicenseKeyService
* Restore old checkLicense code
* check license key first
* fix imports
* fix url in tests. Implement prisma extention to track creation
* Use data.status for licenseCheck
* extract fetch to class
* improve error
* [wip] per user tracking
* Remove new URL as it was breaking search params
* Use client extention in customPrismaClient
* Remove log
* Remove license required from creation form as itll fail
* Fix annual price calculation
* add api route to .env.example and constants
* re-word instructions in .env.example
* chore: feedback
* Update packages/features/ee/common/server/LicenseKeyService.ts
* Add IS_E2E_ENABLED constant + update tests
* Revert "Add IS_E2E_ENABLED constant + update tests"
This reverts commit d059b73f6272bc06fd2ab5ed505b6d52ea030a56.
* chore: tests fixes
* fixes: unit tests
Signed-off-by: zomars <zomars@me.com>
* chore: add missing instructions
---------
Signed-off-by: zomars <zomars@me.com>
Co-authored-by: sean-brydon <sean@cal.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* feat: org members can fetch their teams apiv2
* fixup! feat: org members can fetch their teams apiv2
* feat: org members can fetch their teams apiv2
* fixup! feat: org members can fetch their teams apiv2
* fixup! fixup! feat: org members can fetch their teams apiv2
* fixup! fixup! fixup! feat: org members can fetch their teams apiv2
* fixup! fixup! fixup! fixup! feat: org members can fetch their teams apiv2
* chore: Remove unit tests from running after crowd in
* Update permissions on all workflows
* Updated pr permissions
* Added actions:write to top-level pr
* Update .github/workflows/unit-tests.yml
* Removed the linting annotation
* feat: Link to rescheduled booking from the old one
* add original comment
* use fromReschedule
* fix: type check
* review updates
* Update common.json
* change booking page text
* Delete packages/features/bookings/lib/getRescheduledToBooking.tsx
---------
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
* refactor: event-types CREATE, UPDATE accept scheduleId and return scheduleId
* chore: enable passing scheduleId to event-types create handler
* chore: use platform-libraries at version 0.0.20
* fix: remove team output schedule
* finish merge main into this branch
* fix: dont allow adding scheduleId to event-type if user does not own schedule
* Support automatically adding user to organization
* Use Repository
* Fix unit test
* Code Improvements
* Fix type error
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* bugfix - CAL4052 TimeZone select should show the selected timezone
* Pusheding the code for type - check failure
* Updating MenuPosition as absolute
---------
Co-authored-by: sumantha <sumantha-ullasa-prabhu@hpe.com>
* fix: event-types input service transform length property
* feat: create organizations event-types controller, service and repository
* feat: enable organizations event types
* fix: create team request user isOrgAdmin check
* refactor: hosts array required in team input and output
* chore: use platform-libraries at version 0.0.19
* tests: test organizations event-types
* feat: enable managed event-types
* chore: fix main merge into this branch
* feat: assign all team members for managed event-types
* refactor: gathering managed event-type users ids
* chore: include assignAllTeamMembers in team event response
* test: assign all team members db event
* chore: delete unused files
* docs: swagger create and update request body objects
* revert: event-types platform-libraries update
* refactor: organisations event-types endpoints accessible by TEAM_ADMIN and up
* fix: managed event types output hosts array empty
* fix: dont allow creating event-type for non-team member
* chore: delete unused variables
* tests: negative tests
* chore: finish main merge
* update documentation for proper hostile command
* add OrgBanner component and replace it in ee organization profile settings
* add width and height defaults, with option to override
* updated sizing with image loaded
* fix: add alt to OrgBanner in test
* fix: failing OrgBanner test, added neg test
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix#15787 created signoutbtn on onboarding screen
* fix: Add signout button on onboarding screen and changes done as per feedback
* small error removed
* update to display availability page as per weekstart setting
* update to accomodate any day
* update for AvailabilityTab
* reusable and tests added
* update test description
---------
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
* fix: filter admin_api if org is present
* remove admin_api from developers tab when org is present
---------
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
* fix: set conferencing apps as default
* fix in other oauth conferencing apps
* creating default event-types should set the user's default location
* Update getDefaultLocations.ts
* fix: unit test
* default install only for first oauth app
* fix: type-check
* update default on success
* fix: pass callback prop
* chore: code cleanup
* Fix condition
* no longer needed
- as we reverted https://github.com/calcom/cal.com/commit/20fdb50081ae684723a5af78436068c0b09509a4
---------
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
* fix: disable google-meet in user onboarding if google-calendar is not installed
* add tooltip
* fix: type check
* fix: type check for tooltip
- allowed `ReactNode` for tooltip content prop
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* fix: wrong booking seats full error on collective event
* test: verify seat availability calculation based on booked seats, not total attendees
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
* fix: Update stripe customer email when a user updates cal.com email
* Only update email on stripe if stripe is enabled and if there is a stripeAccountId already associated with the user
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* add org to create workflow button
* add save button for testing in dev mode
* add select all to multi select dropdown
* fix select all
* pass isOrg to WorkflowDetailsPage
* add checkbox to apply to all including future
* fix count text on select
* WIP schema
* shows teams in dropdown
* add team option to UI
* [WIP] refactor for update handler
* filter out "all" from activeOn
* fix type error
* create more helper functions
* create reusable function for scheduling all booking reminders
* finish update workflows for orgs (without testing)
* fix isAuthorized check for orgs
* fix getting newActiveOn
* move all helper functions to util file
* more code clean up
* fix deleting reminders for org workflows
* fix adding and editing steps
* update form data when workflow is saved
* code clean up
* fixing creating/deleting reminders when user is member of several teams
* fix setting activeOn for teams in useffect
* add on delete cascade
* make multiSelectSchenbox searchable
* set activeOn correctly when checkbox true
* WIP
* fix type errors in MultiSelectCheckboxes
* implemented scheduling org-wide workfow notifications (not yet tested)
* fix type errors
* type error
* add missing changes from merge conflict
* remote not needed include statement
* fix type errors
* code clean up + some todo comments
* support org workflows for cancelled workflows
* delete reminders from removed members
* remove reminders if isActiveOnAll is turned off
* fix unti test and type error
* code clean up
* create basis for testing to book org team event
* create org workflow with active team
* fix getting active org workflows on team + test setup
* fix creating workflow step for tests
* fix first org test
* add test for user event type with org workflow active
* use deleteAllWorkflowReminders everywhere
* add test for deleteRemindersFromRemovedActiveOn
* fix type errors
* make all tests pass
* fix type error
* fix getSchedule test
* code clean up
* add missing import
* fix type error
* fix tests
* code clean up
* fix imports
* update reminders when trigger was changed
* check for teamId before userId in reminderScheduler
* move getOrgIdFromMemberOrTeamId to different folder
* code clean up
* fix tests
* test setup for scheduleBookingReminders
* fix typo
* add tests for scheduleBookingReminders
* fix prisma default import
* fix workflowStep type
* add scheduleBookingReminders test for sms
* return dummy sid for scheduleSMS testMode
* clean up + fixes
* add lost changes from merge
* get teamId and userId from incoming evt object
* removing not needed select
* add org support for scheduleMandatory email reminder
* add other teams to dropdown
* move getAllWorkflows to seperate file and call it in parent function
* include org wide workflows in createNewSeat
* some fixes + code clean up
* add new team to select text count when including future teams is checked
* fix upsert and remove sms reminder field
* correctly update activeOn if 'including future ...' is enabled
* list active Org workflows in event workflows settings
* fix sms reminder field in all handlers
* add helper function to check if step was edited
* fix active on badge on workflow
* fix type error
* fix double reminders
* add teamId: null for userWorkflow query
* fix activeOnAll with managed event types
* add missing teamId in getAllWorkflows
* add a dafaut to prisma param
* fix managed event types on select all user workflows
* code clean up
* better variable name
* small fixes in update handler
* fix test name to match function name
* add info badge
* fix workflow count in event type settings
* fix getting bookings from children manged event types
* delete reminders when user is not part of any time no more
* implement feedback
* fix disbale workflow in event type settings
* fix remove member
* create new function getAllWorkflowsFromEventType
* add some removed code
* use promise.allSettled when deleting workflow reminders
* create new function deleteWorkflowRemindersOfRemovedMember.ts
* fix userId param
* delete org worklfows when team is disbanded
* don't trigger active on all workflow if not part of any team
* fix active on count badge
* add test for deleteWorkflowRemidnersOfRemovedMember
* trigger workflow also if not member of any subteam
* fix failing test
* remove unused code
* use testId for go back button
* fixes for managed event types & activateEventTypeHandler
* code clean up
* don't activate workflow on locked managed event type
* fix type error
* type error
* more type fixes
* feedback
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* feat: RECORDING_TRANSCRIPTION_READY webhook
* refactor: split into diff files and restructuring
* feat: finish batch processor finished
* chore: types
* fix: type error
* chore: change name of triggger
* test: add unit test
* fix: type
* fix: type err
* chore: test
* feat: add booking reference repository and other imp
* chore: log
* fix: import
* chore: type error
* fix: update test
* fix: test
* fix: test
* fix: add timeout
* chore: move beforeEach
* Mock missing env variables to test. These vars are not set in CI
---------
Co-authored-by: Hariom <hariombalhara@gmail.com>
* chore: remove personal branding if in an org and use org branding
* fix: minor fix
* Update SettingsLayout.tsx
* Update SettingsLayout.tsx
* Update profile.tsx
* some fixes and e2e test
* fix: e2e test
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* chore: update formbricks-js to newest version
* fix: Regenerate yarn.lock with right deps
* update formbricks-js version to 2.1
* Update yarn.lock
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* fix(@cal.com/web): update debounce logic to work correctly and not show non-premium usernames as premium
- removes redundant useMemo hook from UsernameTextfield.tsx & PremiumTextField.tsx
- cancles the debounceAPICall on every unmount of UsernameTextfield.tsx & PremiumTextfield.tsx via useEffect cleanup function
Fixes#15628
* fix(@cal.com/web): update the debounce logic to use the pre-existing useDebounce hook
- update the debounce logic in UsernameTextField.tsx & PremiumTextField.tsx to use the pre-existing useDebounce hook instead of loadsh debounce
- update the debounce delay to 600ms to be consistent with the signup.tsx behavior
Fixes#15628
* fix: signup debounce not working properly
---------
Co-authored-by: Amit91848 <samit91848@gmail.com>
* feat: Support running webapp and embed-core playground on HTTPS. It allows to test SameSite attribute easily in embed
* Update yarn.lock
* feat: Support running webapp and embed-core playground on HTTPS. It allows to test SameSite attribute easily in embed
* Update yarn.lock
* Fix git-setup.sh
* Fix yarn.lock
* refactor: move functions to separate files
* chore: remove inline function
* chore: type error
* fix: type error
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* fix: getPublicEventType of NonOrgUser fetch OrgUser event-type with same username
* Fix the test that was supposed to verify the scenario
---------
Co-authored-by: Hariom <hariombalhara@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
* init apple calendar service
* update apple calendar service logic
* update typing for CalendarApp interface
* add id and type for apple calendar
* fixup: logic for apple calendar service
* update logic for checkIfCalendarConnected function
* add apple calendar service to calendars module
* fixup
* update calendars to include cases for apple calendar
* fix imports
* init frontend for apple calendar connect
* add apple connect atom to connect atom
* fixup
* fixup
* add alias for latest version of platform library
* fix import paths
* custom hook for saving apple calendar credentials
* add apple calendar to examples app
* add interface for credentials syncing calendars
* bring calendars controller to orginal state
* refactor
* update custom hook to sync credentials
* update atom
* resolve merge conflicts
* add endpoint for syncing calendar credentials
* fixup
* update atom
* update useCheck to invalidate queries onSubmit
* fix typo
* fixup
* remove unused tokens respository
* rename controller
* cleanup
* fix: reset react queryClient on access token change
---------
Co-authored-by: Rajiv Sahal <rajivsahal@Rajivs-MacBook-Pro.local>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* fix: Error in team members migration during org onboarding
* Add invitationMemberHandler tests
* Add unit tests
* Improve tests and refactor
* Improve tests and refactor
* Fix type issue
* Fix createNewUsersConnectToOrgIfExists args
* fix: office#65Video expiry_date
* Revert "fix: office#65Video expiry_date"
This reverts commit 6142287805b5c6a40e746126735745a5617334c7.
* Change logger.debug to logger.error for better visibility of all log cases
* refactor: loadUsers and move to separate file
* fix: improvement
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* fix: Error thrown due to missing user
* chore: Remove unnecessary logs
* fix: Remove PageWrapper in order to prevent double signIn
* Change profile typing to optional
* further type fix
* further type fix..
* Added a log for pull_request
* Added labels logging
* Using labels straight from event PR object
* Converting to JSON
* Switching to use payload
* Fixed issue with undefined pr
* Fixed non-mapping issue
* Removed the types
* Added another cache key segment using the head commit sha
* Added separate workflow for labeled action
* Fixed syntax error
* Fixing payload issue
* Added log
* logging full object
* Put e2e back in the names to help find them
* Limited logging
* fix: v2 even-types versioning
* test: old v2 even-types request with VERSION_2024_06_11
* test: old v2 even-types request with VERSION_2024_04_15
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* Added a log for pull_request
* Added labels logging
* Using labels straight from event PR object
* Converting to JSON
* Switching to use payload
* Fixed issue with undefined pr
* Fixed non-mapping issue
* Removed the types
* Removed issue with run-jobs
* Put back the types
* chore: Make ready-for-e2e label check more robust
* fixed owner issue
* Try that again
* multi-step check for PR
* added catch
* Using the output from changes
* more fixes
* logging the sha
* Attemptig to fix the sha problem
* Cleanup
* Cleanup
* Testing with the same sha reference as checkout
* Reverted back
* cleanup
* chore: Improve CI workflow
* Made a new pre-merge flow that runs the builds and e2e
* Refactored back into 1 file
* Adding another condition for checking the ready-for-e2e
* syntax
* More syntax
* Change e2e-required to only run when ready so it doesn't fail
* A different attempt at getting the ready-for-e2e label
* Supporting PRs and workflow_dispatch
* logging the branch
* hardcoding to test
* Trying the rest call
* Added logging
* Check for the label in the same step
* More logging
* Added job-level output
* Reverted back to 'true'
* Moved the e2e required check into the main required check
* More logging
* Peeling the branch off of the ref
* Fix the ref
* Trying a separate workflow for labeling
* Updated name for the labeled file
* Checking label events to avoid unnecessary runs
* Got rid of the extra check to see if required should run
* Upgraded old actions running Node 16
* Updated the pre-reqs for running jobs
* Removed the dependency of API builds before starting E2E suites
* Removed extra production build used by analyze job
* Fixed the run-e2e check
* Using the pull request object when available
* Checking for null PR
* Added check for no event
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* refactor: UserAvatarGroupWithOrg.tsx remove unecessary profile prop
* chore: define event-type types in platform/types
* feat: event-type transformes in lib and re-exported through platform-libraries
* chore: define user types in platform/types
* chore: add users endpoint to platform-constants
* refactor: app-store use narrowed down booker event type
* chore: version old event-types module
* fix: old event-types e2e test
* fix: libraries add missing export
* fix: reset libraries version to 0
* feat: new event-types module and users endpoints
* feat: make booker atom work with v2 event-types
* updating event type
* refactor: remove guard for get event-types
* refactor: move private hook to public
* Revert "refactor: remove guard for get event-types"
This reverts commit d41204069f1d5bb1305b388ce53399f9175f4249.
* Revert "refactor: move private hook to public"
This reverts commit 09322e8fba102e57104959f79ed6bfa9a677dc9d.
* refactor: get by username and slug in /event-types
* remove console log
* feat: locations handle displayEventPublicly
* test e2e event-types
* revert: user output from types
* refactor: event-types hooks have private and public folders
* refactor: require event-type.slug in input
* refactor: demand that all labels of booking fields are unique
* refactor: remove unused import
* refactor: only have email and name by default in booker
* refactor: add booking field slug
* fix: display event-type location publicly / hide it in booker
* fix: display event-type location publicly / hide it in booker
* fix: packages/lib tests
* fix: typescript in e2e test
* fix: dynamic event types input
* refactor: use IsIn instead of IsEnum
* refactor: simplify getEventTypes
* fix: use ApiAuthGuard instead of AccessTokenGuard
* chore: export more stuff from libraries
* refactor: SchedulingTypeEnum and Type
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* your name translation fixed
* do translation outside Components as that is needed by all components. Allows the code to stay DRY
---------
Co-authored-by: Hariom <hariombalhara@gmail.com>
* chore: enable apiv2 auth with api keys
* chore: enable apiv2 auth with api keys
* chore: enable apiv2 auth with api keys
* chore: enable apiv2 auth with api keys
* chore: enable apiv2 auth with api keys
* fixup! chore: enable apiv2 auth with api keys
* fixup! Merge branch 'chore-apiv2-auth-api-key' of github.com:calcom/cal.com into chore-apiv2-auth-api-key
* fixup! fixup! Merge branch 'chore-apiv2-auth-api-key' of github.com:calcom/cal.com into chore-apiv2-auth-api-key
* fixup! fixup! fixup! Merge branch 'chore-apiv2-auth-api-key' of github.com:calcom/cal.com into chore-apiv2-auth-api-key
* set status code
* Add tests
* Update apps/api/v1/lib/helpers/rateLimitApiKey.test.ts
* Update apps/api/v1/lib/helpers/rateLimitApiKey.test.ts
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* remove console.log
* fixup: logic to convert overrides was not calling functions
* refactor handleSubmit function
* add portal to platform dialog component
* cleanup
* add props to enable and disable date overrides
* show date overrides for availability settings atom
* fix: date overrides formatting for api request
---------
Co-authored-by: Rajiv Sahal <rajivsahal@Rajivs-MacBook-Pro.local>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* fix: large padding on small screens for embedded booking widgets
* removed unused
* cssConflict - 'border-booker-width' applies the same CSS properties as 'border'.
---------
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* When rescheduling to new time slot don't trigger reschedule logic
* Add unique iCalUID when rescheduling to new slot
* Generating iCalUID use v4 uuid
* When moving an attendee to a new booking. Only move the attendee
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* chore: Upgrade Sentry in v1, v2 & web
* fix: Keep ./instrument to be the first line
* Remove eslint-plugin-import (fixed in prettier)
* Optimistic removal pending some feedback
* Simplified and fixed sentry wrapper
* Create instrumentation.ts also in APIv1
* sentry key in main nextConfig is deprecated
* fix booking via api not picking default location when unspecified
* test:add tests for default location of event for booking
* fix:failing tests
---------
Co-authored-by: Shaik-Sirajuddin <sirajudddinshaik30@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* fixed the padding at the footer in /signup
* reverted /auth/login Link style to original
* Update apps/web/pages/signup.tsx
---------
Co-authored-by: Peer Richelsen <peer@cal.com>
* refactor: platform-types schedule types
* refactor: lib add bidirectional schedule transformers api <-> atom
* refactor: trpc handlers use renamed lib transformers
* refactor: platform-libraries export new bi-directional transformers
* chore: v2 update platform-libraries
* chore: enable also old platform-libraries
* fix: platform-types support previous types
* refactor: versioning date
* chore: version old schedules as schedules_2024_04_15 module
* chore: version old schedules as schedules_2024_04_15 module
* feat: new 2024_06_11 schedules module
* feat: atoms use refactored schedule api
* refactor: remove ?for=atom in schedules hooks
* fix: unit test
* feat: go to Assignment tab after creation and warn if existing without assigning
* Update AssignmentWarningDialog.tsx
* fix: some changes
* fix: some updates
* Update EventTeamTab.tsx
* update
* update
* update test
* some fixes
* refactor one test and update
* Update managed-event-types.e2e.ts
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
* fix: Kbar component styles
Fix Kbar styles on active state
* refactor: Add transition to event type list item
The commit refactors the event type list item component by adding a transition effect to improve the user experience.
* refactor: Add transition effect to DatePicker component
Add transition effect to improve the user experience in the DatePicker component.
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* WIP: UI created to see if it matches RFC idea
* Remove schema as we validate on the backend with old+new key schemas
* Add comment about proxy URL request when on older versions
* feat: create custom axios instance to use signature middleware
* fix: update form to respect new schema
* Add cal signature token to trubo env
* use backend mutation for creating license keys
* add loading state to creation button
* update form to have a success state
* fix type error for console.warning :')
* use api version v1
* restore checkLicense from main
* Add env vars to example
* nit: rename page export
* use US spelling
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* chore: Remove deprecated logo/avatar/away fields
* Use right variables for accounts-step-card
* Remove more deprecated logo/avatar usage
* Dont drop the fields until all usages are gone
* Remove the avatar/logo drops for staggered release
* fix: Typescript blindspot (unvalidated include fields)
* fix: Further updates (mostly to API) typescript missed
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* added dropdown for no-shows in past bookings
* added layout
* nit
* todo comment: figure out how to close dropdown
* more todo comments
* Adds TRPC route among other WIP
* functional update
* fixes type err
* fix type err
* fix: styles
* strikethrough in email
* NITs
* removed stale comment
* add tests
* err comment
---------
Co-authored-by: Peer Richelsen <peer@cal.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: sean-brydon <sean@cal.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* feat: API v2 subversioning
* Update app.ts
* Added multiple versions to existing controllers
* Updated the slots controller
* chore: version platform library package with npm package alias
* chore: use consts to version
* chore: use consts to version
* chore: version api for cal provider
* chore: remove timezone controller subversion poc
* fixup! Merge branch 'main' into feat/api-v2-subversioning
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* init endpoints for office 365 syncing
* get web app url for oauth
* update typings
* nethods for office 365 calendar
* update office 365 connect endpoint
* update packages
* add calendar type and if office 365 calendar
* add SelectedCalendarsRepository and TokensModule
* add functions for getting oauth credentials, getting default calendars and redirect url for office 365 calendar
* update controllers
* e2e tests for office 365 calendar endpoints
* fixup! Merge branch 'main' into rajiv/cal-3544-outlookoffice365-integration-connect-atom
* fixup! fixup! Merge branch 'main' into rajiv/cal-3544-outlookoffice365-integration-connect-atom
* fix merge conflict
* update typings
* abstract microsoft outlook into its own module
* add one common interface for calendar apps
* make calendars dynamic
* abstract every calendar app into its own service
* cleanup
* make all calendar endpoints dynamic
* calendar app constants
* cleanup
* remove unused repositories
* rename microsoft calendar type
* fix typings
* add google and outlook calendar service to calendars module
* fixup
* some more e2e tests including google calendar
* chore: small type change and apple calendar not implemented yet
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: Rajiv Sahal <rajivsahal@Rajivs-MacBook-Pro.local>
* fix: Kbar component styles
Fix Kbar styles on active state
* refactor: Add transition to event type list item
The commit refactors the event type list item component by adding a transition effect to improve the user experience.
* feat: ability to assign people to round robin from org members
* fix: include schedulingtype in filter
* fix: type check
* rename to EventTypesList
* rename to teams, change icon to link, early return if no events or teamId
* filter scheduling type array, change filter name
* rename to bulkAddMembersToTeams and bulkAddMembersToEventTypes
* filter refactor
* remove bulk
* filter remove null return
* Revert "filter remove null return"
This reverts commit 8ae6296dac24e5081b5896bb9dfe0c000c0f7faf.
* show checked if user already host in event type
* check boxes if user is part of the team
* remove hosts on unchecking boxes
* fix isSelected condition
* remove selected members from teams
---------
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
* During signup, if the account already exists, we redirect the user to /event-types instead of onboarding. Adding this redirection logic to /event-types page as well to ensure the user is redirected to the correct redirectUrl.
* fix timezone display on booking page to reflect event availability timezone
* migrate fetching event owner's schedule to server side
* migrate fetching event owner's schedule to server side
* fix e2e test errors
* Add WEBAPP_URL_FOR_OAUTH to salesforce auth
* In event manager constructor include "_crm" credentials as calendar creds
* Change crm apps to type to end with `_crm`
* Move sendgrid out of CRM
* Add zoho bigin to CRM apps
* When getting apps, use slug
* Add `crm` variants
* Hubspot Oauth use `WEBAPP_URL_FOR_OAUTH`
* Refactor creating credentials
* Fix empty CRM page
* Use credentials with `_crm`
* Abstract getAppCategoryTitle
* Add integration.handler changes
* Init crmManager
* Change salesforce to CrmService
* Create crmManager
* Create contact on new event
* Create event
* Create new CRM reference
* - Fix create new contact for salesforce
- Add reschedule to crmManager
* Create deleteAllCRMEvents
* When searching for credential, look for current credentials in class
* On cancel, delete 3rd party events
* Add delete method
* Type fix
* Type fix
* Convert Close.com to CrmService
* Convert Close.com to CrmService
* Move hubspot to CrmService
* Convert Pipedrive to CrmService
* Rename classes to CrmService
* Move ZohoCrm to CrmService
* Move Bigin to CrmService
* Type return for CrmServices
* Fix type errors
* Close.com create leads and contacts
* Fix tests
* Type fix
* Zoho bug fixes
* Clean up
* Type fixes
* Remove apiDeletes
* Type fixes
* Specific typing
* Type fix
* Type fix
* Type fix
* Type fix
* Type fix
* feat: Enable CRM apps on a per event type basis (#14450)
* Add Salesforce to be an event type app
* Handle new booking, only get enabled CRM credentials
* Abstract generating search params
* Add close.com to event type
* Clean up
* Move hubspot to event type
* Add pipedrive to event type
* Add zoho bigin to event type
* Add zoho crm to event type
* Remove console.log
* Add deleting CRM apps from event type
* Delete event type apps
* Fix deleting credentials
* Add CRM app data to event type metadata
* Backwards compatibility: add CRM credential if doesn't exist on event type
* Don't include user CRM credentials for backwards comp
* Backwards compatibility show CRM app is enabled and dirty field
* Clean up
* Type fixes
* Type fixes
* Type fix
* Type fix
* Remove console.log
* Test fix
* Upgrade embed-react vite version - dev
* Change build can't find error message
* Add back omni install prop
* Clean up
* Refactor `writeAppDataToEventType`
* Use eventType repository in writeAppDataToEventType
* Clean up old comments
* Add error logging
* createCRMEvents pass event uid as created event uid
* Use `getUid`
* Clean up props in create crm event
* Small changes to `crmManager`
* Fix zoho CRM
* refactor crmManager
* Undo vite config change
* Fix teamId query
* Fix bigin error
* Remove need for `writeAppDataToEventType`
* Add `getAllCredentials` test
* Add crmManager tests
* Type fixes
* Fix type errors
* Fix getAllCredentials test
* Fix tests
* Skip CRM manager tests for now
* feat: Skip RR Assignment if Contact Exists In Salesforce (#14556)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* Update yarn.lock
* @zomars feedback - use new URL for state params
* fix: update hook to not produce enabled === undefined
* fix: update app card interfaces to use the new enabled from useIsAppEnabled
* fix: feedback for crm RR skip (#15160)
* code clean up
* fix type any
* test setup for RR lead skip
* code clean up
* simplify code
* type error
* finshed first test for RR lead skip
* add seconds test
* add test for handleNewBooking
* test if teamMember is set
* fix missing enabled key
* fix tests
* fix type error
* use setSystemTime instead of getDate
* remove nested if
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* fix type error
* fix: remove app metadata from all eventTypes on deleting the app
* fix: update hook to not produce enabled === undefined (default to false)
---------
Co-authored-by: Shaik-Sirajuddin <sirajuddinshaik30gmail.com>
Co-authored-by: Shaik-Sirajuddin <sirajudddinshaik30@gmail.com>
Co-authored-by: Shaik-Sirajuddin <89742297+Shaik-Sirajuddin@users.noreply.github.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: sean-brydon <sean@cal.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
* feat(i18n): complete Simplified Chinese translation
* chore: check for missing translation items
* fix: put the prevent merge conflict line at the end
* feat: put new translations at the beginning
* Rename translate-locales.ts to check-missing-translations.ts
* Update package.json to use check-missing-translations
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
* fix: remove ts-ignore by converting to string[]
* chore: remove extra space
* chore: make word lower case
* Possible fix for endpoints.ts
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* chore: Removing E2E test sharding
* Added back 4 shards for main E2E
* Bump build machines to use 8vCPUs
* Downgrading builds to 2 vCPUs to see time difference
* Reduced shards to 2 to see if flakes are reduced
* Increased E2E vCPUs
* Put builds back to 4 vCPUs since they need it
* Updated E2E suite to use 16 vCPUs and no sharding
* Not running in parallel just to test
* Put back the parallelism
* Get rid of themeBasis warning in test suite
* Skipping another flaky test
* 2 shards
* Update e2e.yml
* fix: platform booker icons
* fix label not being shown for address
* fix type check
* PR feedback
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
* feat(appStore): add isOAuth config
* refactor(appStore): EventTypeAppSettngsInterface
* refactor(qr_code): split EventTypeAppCardInterface and EventTypeAppSettingsInterface
* feat(appStore): redirect to onboarding for stripe and basecam
* fix(ui/ScrollableArea): overflow indicator not working
* feat(apps): new install app flow
* fix(configureStep): get disabled props for settings
* fix: getAppInstallsBySlug now use teamIds
* chore: Alby to AppSettingsInterface
* chore: Giphy to appsettings interface
* chore: GTM migration
* chore: GT4 - migration
* chore: fathom migration
* chore: paypal
* feat: basecamp migration
* feat: metapixel migration
* feat:plausable
* feat:stripe
* fix merge issues
* fix merge issues in new app install flow steps
* wip: callback to onboarding
* fix: imports
* fix: more imports
* feat: use redirect to onboarding on install flow
* fix: redirect to event-type after oauth flow
* When clicking on install new app button, only redirect to the new app install flow if it is an oAuth app or an app that extends the EventType feature in it's config
* code refactor, skip event-type step
* removed extra consoles
* so that no one can change the eventTypeId in url
* theme support enabled
* only pass eventTypeId instead of whole evetType obj to OmniInstallAppButton
* fix: clicking on event-type gives error and redirects to /apps
* saved appOnboardingRedirectUrl to OAuth State
* fix: a user having no team breaks the onboarding flow
* add optional chaining to appMetadata.extendsFeature and appMetadata.isOAuth;
* encode appOnboardingRedirectUrl
* fix: dark theme ui issues
* skip configure step if no-event types
if user/team does not have event-type then skip configure step and goto apps/installed/[category]
* exclude calendars from apps- onboarding flow
* Update getAppOnboardingRedirectUrl.ts
* fix: On configure step, inputs aren't showing errors
* change route from `apps/onboarding` to `apps/installation`
* fix: flow not correctly working for teams
* should only allow team ADMIN or OWER to install an app to team
* Prevent two payment apps to be enabled
* removed loading state
* Fix type error
* undo new-app-flow from OmniInstallAppButton
* remove OAuth Step, handle step numbering
* fix: redirect url
* getAppOnboardingRedirectUrl refactor
* for debugging
* Revert "for debugging"
This reverts commit b9362c1a8f47f2280e684c213d7ec08d04a8ac4c.
* fix: added toaster
* feat: added support to select multiple events (almost)
* hide button
* Move inner form outside outer form using portal
Due to limitations with nested forms in React Hook Form, moved the inner form outside the outer form using a portal to ensure proper form handling.
* submit buttons refs madness
* removed configure step
we had to use query params to manage selected event-types, between routes which was causing 2 issues:
* each time we selected or unselected an event the whole page was reloaded including getserversideprops being called again and again
* the form was reloaded causing more issues
* removed extra unwanted code
* small fix
* fix: type error
* fix: types
* implemented suggested changes
* removed step footer
* fixed error.message
* removed commented styles
* removed step footer
* fix: Display team event types instead of user's on event types step when team selected
* fix: typo
* removed shouldLockDisableProps
* refactor setUpdatedEventTypesStatus, fix type
* removed extra code
* can't delete while saving
* added translations
* fix: loading in select account step, fix handle onSelect params type
* Fix typo
* feat: add skip button to event-types step
* use set-up-later button in tests
* added skip button to configure step as well
* feat: add test for analytics apps using the new app install flow
* feat: add test for stripe 1
* feat: add test for stripe 2
* Fix: Redirect only those apps that extend 'EventType' to the new app install flow (#14527)
* fix: type errors
* fix: failing tests
* fix: tests
* fix test flakiness
* better naming and code refactor for analytics apps tests
* run tests parallelly
* removed network idle, giving error
* another shot at test flakiness
* Fix: can't install apps without team selector dropdown on main app store page.
* fix: test flakiness
* fix: account select loading issue
* removed getPaymentCredential (unused)
* fix: only redirect after the app has been added to all the event-types
* remove overflowIndicatorStyles
* fixed failing test
* fix: exclude org team events
* undo some random merge changes
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: sean-brydon <sean@cal.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
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: Omar López <zomars@me.com>
* Fix seeder and update message to inform well about org deletion implication
* Cleanup tempOrgRedirect as well
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* chore: Skip flaky tests that have been failing often
* Update basic.e2e.ts
* Skipped another test
* Only run on legacy routes as a test
* Removing future routes from build
* Updated the remove script
* Fixing command
* Bring back the future routes
* Skipped another
---------
Co-authored-by: Omar López <zomars@me.com>
* fix: Use origin as provided in HeadSeo. origin would be different for Domain cases
* Add a test
* add more test
* Add tests
* Cleanup tests
* Add an e2e as well
* fix-test
* Reset mocks
* feat: Workflow — Send Email to Specific Email
* disable button when verifyEmail pending
* add verified emails table and routes
* fix: include teamId in verifyEmailCode
* fix: include email address in activate handler
* fix: check team before adding email
* feat: check verified email, add to team if only users
* remove logs
* fix: if statement
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* change email to verify your email
* fix: show error if saving unverified email
* fix: show email in subject
* verify email when editing steps
* remove double calls from same block
* verify email when creating new step
---------
Co-authored-by: v0ltZzie <161201747+v0ltZzie@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* wip
* wip
* wip
* Add tests
* Update getSchedule.test.ts
* Update types.ts
* Self review fixes
* Update text
* PR feedback from Carina
* Use utcoffset for range as well
* Remove logging from the function that runs on every timeslot
* Add one more test
* Show x days instead of x+1 days for both ROLLING and ROLLING_WINDOW
* refactor tests
* Move bookingScenario imports to the top as they import prismock mock that has to be imported very early
* More reordering of imports
* Fix accidental min update at wrong place
* Handle legacy value of zero for periodDays
* Range fix
* Fix isDateOutOfBound not being checked properly during booking. Also added a test for the case
* Fix duplicate element, how the hell it reached there
* Use today plus x days for ROLLING periodType
* Add disabled for Checkbox as well
* Revert logger.ts
* Formatting
Signed-off-by: zomars <zomars@me.com>
* Fix ordering of imports that is causing tests failure
---------
Signed-off-by: zomars <zomars@me.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* Added cache retrieval steps for api v1, v2 in production builds workflow run
* Removed .turbo and .next specific arguments as path in v2 API build
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* chore: Add test for booking cancelled webhook
* added unit test
* assertions to check booking created successfully
* remove booking cancelled e2e
* test: add webhook cancelled test
* chore: remove old test
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* disable emails for platform
* check for if user is platform and skip verification accordingly
* skip isPlatform check for verify email in create org handler
* use if instead of &&
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* api: createSchedule refactor - still need to handle overrides
* createSchedule: handle overrides
* createSchedule: default schedule e2e test fix and pad hours:minutes
* get default schedule, by id and all schedules
* update schedule
* refactor: update handler delete only if overrides or availabilities given
* remove comment
* refactor: move schedules inputs, outputs to platform-types + e2e tests refactor
* refactor e2e
* fix: overrides and test
* fix managed user create
* my brain is fried but refactor good
* WIP: transform api schedule for atom
* WIP: transform api schedule for atom
* WIP: transform api schedule for atom
* fix: re-export atom transformer from lib
* fix: format schedule for api from atom
* fix ts ignore
* refactor: move schedule hooks into hooks/schedules
* feat: useSchedules hook to get count of user schedules
* tests: setup atom tests & test transformScheduleForAtom
* rename transformers
* test transformAtomScheduleForApi
* reset scheduel update handler for trpc
* fix: import path
* refactor: transformers
* swagger docs fix
* get rid of unused availabilities module
* get rid of eslint-disable-next-line in schedules repository
* refactor: remove crypto from atoms vite rollupOptions
* refactor: comment schedules repository update logic
## What does this PR do?
<!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. -->
- Fixes#14977
<!-- Please provide a loom video for visual changes to speed up reviews
Loom Video: https://www.loom.com/
-->
## Mandatory Tasks (DO NOT REMOVE)
- [ ] I have self-reviewed the code (A decent size PR without self-review might be rejected)
- [ ] I have added a Docs issue [here](https://github.com/calcom/docs/issues/new) if this PR makes changes that would require a [documentation change](https://docs.cal.com)
- [ ] I have added or modified automated tests that prove my fix is effective or that my feature works (PRs might be rejected if logical changes are not properly tested)
## How should this be tested?
<!-- Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration. Write details that help to start the tests -->
- Are there environment variables that should be set?
- What are the minimal test data to have?
- What is expected (happy path) to have (input and output)?
- Any other important info that could help to test that PR
## Checklist
<!-- Remove bullet points below that don't apply to you -->
- I haven't read the [contributing guide](https://github.com/calcom/cal.com/blob/main/CONTRIBUTING.md)
- My code doesn't follow the style guidelines of this project
- I haven't commented my code, particularly in hard-to-understand areas
- I haven't checked if my changes generate no new warnings
* chore: open disableGuests for eventtypes apiv2
* fixup! chore: open disableGuests for eventtypes apiv2
* fixup! fixup! chore: open disableGuests for eventtypes apiv2
* chore: add disableGuests to create handler
* implement basic UI - WIP
* Add copy + open in tab + center correctly
* use paragraph for link
* fix button spacing and domain takes up w-full
* Add fade in to bar instead of framer motion
* Move truncate to block level element instead of p
* chore:fix tablet styles
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* add rewrites for platform dashboard
* fix loading checking
* add checks
* dont display banner for platform client
* custom hooks for pllatform
* add comment for better explanation
* get data from custom hook
* update returned user attributes
* get data from custom hook
* fix: save workflow button not visible on dev env
* refactor: use the CALCOM_ENV constant
* fix: ui fix for header on workspace pages
* refactor: remove unused variable
---------
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* add endpoint to fetch managed user from client id
* update typings
* minor tweaks
* custom hook to fetch managed users from client id
* add translations for platform onboarding
* add isPlatformOrg boolean to figure out which is platform and which is not
* set isPlatform hook based on data obtained from org
* add limitWidth prop to control component width
* add props to shell to make sidebar display different tabs based on if the shell isPlattform or not
* platform related pages
* fix merge conflicts
* fix merge conflicts
* platform oauth client form and card
* remove everything related to platform from organization
* update oauth client card and form
* fixup
* fix imports and remove logs
* fixup
* update redirect url
* split oauth client form into separate update and create forms
* separate forms for create and edit oauth clients
* fixup
* fixup
* dynamic routes for oauth client edit page
* fixup fixup
* fix to not show error when redirect uri is empty
* refactor create handler for org
* cleaup comments
* add custom hook to check user billing
* export managed user type
* refactor platform index page
* refactor edit and create pages
* dashboard component containing oauth client list and managed user
* common oauth client form used for create and edit form
* platform pricing helper
* platform pricing component
* fix typing and data response for billing
* use custom hook to check team billing info
* fix type checks
* upgrade conditional rendering for upgrade to org banner
* add isLoading prop to check button loading state
* pass in button handler
* add custom hook to subscribe to stripe and typings
* update typings
* fix incorrect endpoint
* pass in team id as prop
* fix type check
* update stripe success and cancel redirect url
* add and pass redirect url param to custom hook
* custom hooks for platform
* cleanup
* update imports
* fix merge conflicts
* fixup
* fixup fixup
* fixup
* merge conflicts fixup
* merge conlficts battle :(
* minor fixes
* skip admin checks for a platform client
* fix typo
* append slug with _platform for a platform user
* PR feedback
* dashboard refactor
* bring back org form to its orginal state
* add platform folder to ee
* update typings
* use new create platform form
* fixup
* fix typo and update plans
* simplifying rendering
* remove managed users endpoint since it already exists
* url for endpoint
* rename tabs
* pr feedback
* managed users endpoint
* update endpoint
* remove form
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: exception <erik@erosemberg.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* get buffer busy time from bookings outside of start and end time
* add test for buffers
* fix typo
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* refactor: create, update user inputs use types instead of custom validators
* fix: save weekStart, timeFormat, timeZone when creating user
* fix: save weekStart, timeFormat, timeZone when creating user
* e2e: fix env variables and test weekStart, timeZone and timeFormat during user create
* feat: Redirect when event type does not match booking type
* Favour early return
* If multiple bookingUid/rescheduleUid given, use first
* rescheduleUid/bookingUid behaviour is required
* chore: Removed duplicate production build
* fix references
* Move env vars to top level of e2e
* job renaming
* Added env vars to top level of all e2e jobs
* Removed part of cache key that causes issues and is moot
* Using buildjet hardware so the caching works
* clean up
* feat: impersonate trigger when there is a URL param
* feat: update intercom sidebar
* fix: add to onOpen too
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* feat: setup usePublicEvent with orgSlug and duration
* feat: setup useAvailableSlots with eventTypeSlug and orgSlug
* fix & feat: fix TS issues and allow passing multiple users to Booker
* refactor: dont show [15min] [30min] [60min] [1h30min] picker
* fix: pass orgSlug to handleNewBooking -> loadUsers -> findUsersByUsername to not return empty users[]
* refactor: display attendees in booking confirmation screen
* fix: getting slots get orgSlug from props not event
* revert: Booker username use props instead of hardcoded values
* refactor: setup BookerStore org and use it for selectedTime + isDynamic logic
* refactor: hide 'what is this meeting about' input in final booking step
* fix: TS error
* revert: what is the meeting about field hiding
* revert: make org as org? in booker store
* revert: createNewBooking -> loadUsers -> get forced orgSlug from header not body
* refactor: useHandleBookEvent get orgSlug from booker store not props
* fix: if entity undefined dont access orgSlug
* refactor: add isDynamic prop as queryKey for usePublicEvent
* refactor: remove unused prop
* re-add docs
* fix: typescript error
* fix: force platform orgSlug in handleNewBooking.ts
* fix: remove duplicate setSelectedDuration declaration
* refactor: destructure properies from body instead of req.body
* fix: entity optional and hide event members
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* fix: reschedule with google meet
* fix: type err
* test: add google meet test
* chore: save progress
* test: add individual event type
* chore: add one more check
* fix: type err
* chore: use updatedEvent before createdEvent
* refactor: update event
---------
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* chore: Add build of API v2 to PR checks
* Actually added the v2 build to the pipeline...
* Added back the original yarn install
* Updated the main PR flow to require API builds before tests
* feat: Add an Override calendar starts with the day specified in general settings
* fix: types not matching
* fix: update edit calendar to use user's weekStart
* fix: weekstart defaults to 0 when not provided
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* centered cal video logo
* Update apps/web/modules/videos/views/videos-single-view.tsx
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* fix: include id information to be consistent with create/reschedule flows
* fix: include username as well
* function expectBookingCancelledWebhookToHaveBeenFired created
* chore: undo yarn.lock
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* fix: Support adding an non-existent email as the owner of the organization
* Remove dead code
* fixes
* add test
* self review changes
* Update packages/trpc/server/routers/viewer/organizations/create.handler.ts
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* Fix typo everywhere
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Install upstash redis again - base of noficationSender
* Setup email handler etc and use tasker
* Remove logs
* Sending emails and correct format and spacing in emails
* Update email styles
* Update email styles
* add switch to enable feature
* fix: reset tasker types - will fix in new PR
* WIP: test suite
* WIP: test suite
* Add redis service and add WIP mock test
* Add tests for redis service and fix lpush
* More working tests
* More working tests
* fix: type error + typo
* update export to match i18n next mock
* (debug) push for debug
* Fix: fixed hosting in mocks
* Add common.json i18n
* add better test descriptions
* reset mocks after each test to allow concurancy
* Remove redundant RedisService.test.ts
* Rename and remove redundant isAdmin check
* Rename to .d.ts
* Add key versioning to constructRedisKey
* Update packages/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots.ts
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* Update packages/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots.ts
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* Add try/catch
* fix breaking when option === undefined
* Add missing await to Promise.all
* Rename data stored in redis to save space
* Include thrown error in logs
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* chore: Billing Service
* chore: others
* chore: don't type
* chore: typo
* chore: use proper wh secret
* chore: updates
* chore: lockfile
* chore: docs and comment out
* chore: updates and include plan
* chore: config
* chore: bring back alias
* chore: update lockfile
* chore: refactor
* chore: default none plan in db
* chore: read from env vars
* chore: feedback
* chore: remove json config
* chore: proper type
* feat: Add linting rule to recursively check for Prisma includes using only 'true'
* Fixing linting errors
* More linting fixes
* Disabled linting for forms
* Update recommended.ts
* Removed ignores
* Fixed warning
* Type fix
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* feat: add DateRangePicker.tsx and Calendar.tsx to match DS
* chore:cleanup
* tests: remove as these are duplicate tests from the library themselves
* fix: mobile sizes
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* remove event type requires confirmation
* allow sms sending also for team (frontend)
* allow text to attendee for team (backend)
* add rate limiting for SMS (WIP)
* add functionality to lock and unlock SMS sending (+admin UI view)
* rename to smsLockState
* add ability to lock users and teams
* don't send sms if locked
* add missing imports
* fix rate limit namespace
* add translation
* fix type error
* remove prop from UsersTable
* add smsLockState to buildUser
* code clean up
* create seperate sms rate limit function
* fix type error
* add missing userId and teamId to sendSMS
* code improvements
* add User Team type
* fix marking as reviewed
* check monthly sms limit only for user
* don't lock orgs
* fix type error
* fix avatars
* fix type error
* fix type error
* fix type error
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* fix timezone display on booking page to reflect event availability timezone
* migrate fetching event owner's schedule to server side
* migrate fetching event owner's schedule to server side
* fix e2e test errors
* Add WEBAPP_URL_FOR_OAUTH to salesforce auth
* In event manager constructor include "_crm" credentials as calendar creds
* Change crm apps to type to end with `_crm`
* Move sendgrid out of CRM
* Add zoho bigin to CRM apps
* When getting apps, use slug
* Add `crm` variants
* Hubspot Oauth use `WEBAPP_URL_FOR_OAUTH`
* Refactor creating credentials
* Fix empty CRM page
* Use credentials with `_crm`
* Abstract getAppCategoryTitle
* Add integration.handler changes
* When searching for credential, look for current credentials in class
* On cancel, delete 3rd party events
* Fix tests
* Type fix
* Type fixes
* Remove apiDeletes
* Type fixes
* Specific typing
---------
Co-authored-by: Shaik-Sirajuddin <sirajuddinshaik30gmail.com>
Co-authored-by: Shaik-Sirajuddin <sirajudddinshaik30@gmail.com>
Co-authored-by: Shaik-Sirajuddin <89742297+Shaik-Sirajuddin@users.noreply.github.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Omar López <zomars@me.com>
## What does this PR do?
1. cal.com/sales page is a special case where embed-iframe exists in top as well as in iframe. This causes a looping of events somehow due to embed-iframe firing events and those being received by the top embed-iframe.
2. Added new `navigatedToBooker` event to know when the user lands on booker page.
Corresponding PR in website that uses `navigatedToBooker` event and has a demo as well https://github.com/calcom/website/pull/741
Earlier added `routed` event seems to happen too early
## Type of change
- Bug fix (non-breaking change which fixes an issue)
## How should this be tested?
- Simply navigate to booker and wait for the event.
## Mandatory Tasks
- [x] Make sure you have self-reviewed the code. A decent size PR without self-review might be rejected.
## Tests
- Didn't add any tests for this as the changed seems straightforward
## Checklist
- I haven't added tests that prove my fix is effective or that my feature works
* fix: invalid Cancelled / Rescheduled downstream calendar block
* Adjust test so no calendar is connected
* Remove the googleCalendar from multiple tests
* fix: team memebrs being hidden for admin when org is private and they are not org admin
* chore: remove console.loog
* chore: make permissionCheck more readable
* test: push e2e test for normal privacy banner in orgs
* test: add a few more edge cases
* chore: negate names
* feat: update func to make more sense
* Fix
---------
Co-authored-by: Hariom <hariombalhara@gmail.com>
* chore: Remove all avatar/logo references
* Updated user profile to only use avatarUrl
* fix: minor style issue
* chore: Remove redundant includeTeamLogo
* fix: Use right avatar default in event type list
* fix: placeholder avatar team profile, target
* chore: Add logoUrl/avatarUrl to JWT
* fix: Bunch of org avatar issues, fix members list
* Fix logoUrl on org pages
* More type fixes
* Hopefully final type fixes
* Another round of type fixes
* fix: UserForm ts
* fix: Handle as return types, not input types
* fix: Remove profile and add avatarUrl
* fix: notFound as const
* fix: Seeder avatarUrl params
* revert: Migration changes for easier recovery
* fix: Add explicit type to builder as avatar is now set
* Add logoUrl to unpublished entity
* Avatar test out of scope here
* fix: Use the new avatarUrl after save
* chore: Removed getOrgAvatarUrl/getTeamAvatarUrl
* fix: Update sidebar image immediately after change
* Unable to safe unnamed user, so default
* fix: Unpublished page, add organization test
* Add more tests
* frontend: handle booking locationUrl
* backend: pass booking locationUrl to handleNewBooking
* examples app: display booking location if provided
* fix: v2 not starting: contains -> includes
* backend: pass booking locationUrl to handleNewBooking
* swagger docs update
* examples app: dont display where of booking if does not start with http
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* Remove pushing team member destination calendars
* Only create the event on the first destination calendar
* Only create event on the first destination calendar
* refactor: rename event-types/:username/public to event-types/public/:username
* refactor: move /events/public to /event-types/public/:username/:eventSlug
* fix: remove EVENT_TYPE_READ permission from public GET event-types/public/:username
* docs: add response DTO to generate docs for /public/:username/:slug aka ex. events/public
* tests: public event types endpoints
* refactor: have /public at the end of event-types routes
* correct swagger doc
* chore: fix class type and bump version
* fixup! chore: fix class type and bump version
* fixup! fixup! chore: fix class type and bump version
* fixup! Merge branch 'main' into atoms-package-version-1.0.18
* fixup! fixup! Merge branch 'main' into atoms-package-version-1.0.18
* add Travel Schedule modal
* UI to list schedules
* set shouldDirty
* add backend to add new travelSchedule
* implement deleting a schedule
* check if schedule is overlapping
* WIP
* fix finding overlapping travel schedule
* only use travelSchedule when default availability is used
* adjust date overrides to timezone schedule
* first version of changeTimeZone cron job
* fix tests by adding travelSchedules
* fixes for cron job api call
* improve unit tests
* add migration
* fix type error
* fix collective-scheduling test
* clean up cron job
* code clean up
* code clean up
* show timezone from travel schedule for date override
* add date override tests
* show tz on date override only in default schedule
* fix deleting old schedules
* minor fixes in cron api handler
* code clean up
* code clean up from feedback
* fix asia/kalkota comment
* fix dark mode
* fix start and end date conversion to utc
* add first unit test for travel schedules
* Fix modal render issue
* show timezone city wtihout _
* fix dark more for datepicker
* reset values after closing dialog
* remove session from middleware
* exit loop early once schedule is found
* fix type error
* add getTravelSchedules handler
* clean up DatePicker
* fix type error
* code clean up
* code clean up
* add indexes
* use deleteMany
* fix icons
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* feat: Delete/Create WebhookScheduledTriggers for existing bookings
* fix: type check
* fix: early return, query status in prisma, unnecessary trigger type check
* feat: add/delete scheduled webhook triggers for team and user
---------
Co-authored-by: v0ltZzie <samit091848@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* fix: [CAL-3374] Says Number is not Verified, but it is Verified
* clearing error only when verified
* type-checks fixed
* chore: improvement
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* feat: always show intercom on desktop by default (hidden on mobile)
* Revert "feat: always show intercom on desktop by default (hidden on mobile)"
This reverts commit d14a7b0808a5c3b7f15de75d3a422c4ec5e14f2b.
* feat: always show intercom on desktop by default (hidden on mobile)
* fix: type error
* refactor
* saved showIntercom in localstorage instead of DB
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* update typings
* update prisma to include redirect uris for booking success, cancel and reschedule
* update migrations
* add input for uris and send them back in custom hook
* display new uris
* add type for enabling emails
* update prisma schema and add migrations
* chores
* fixup
* chore: fix style, remove console log, rewrite migration
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* Consider requestedSlug as well for instances that require payment
* fix
* Though we should add isTeamEvent to avoid duplicate /event request. But right now that is not breaking functionality
* fix small frontend issues with Booker
This commit fixes the following:
- The "location" icon is now visible in light move when using the "in person (Organizer Address)" option
- The language in which the date and length is shown in modals now corresponds to the language of the creator of the calendar (before this is was always in english)
- If the text is too large for the modal, they will adapt into a collumn
-
* correct small mistakes
* chore: getDurationFormatted
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* feat(appStore): add isOAuth config
* refactor(appStore): EventTypeAppSettngsInterface
* refactor(qr_code): split EventTypeAppCardInterface and EventTypeAppSettingsInterface
* feat(appStore): redirect to onboarding for stripe and basecam
* fix(ui/ScrollableArea): overflow indicator not working
* feat(apps): new install app flow
* fix(configureStep): get disabled props for settings
* fix: getAppInstallsBySlug now use teamIds
* chore: Alby to AppSettingsInterface
* chore: Giphy to appsettings interface
* chore: GTM migration
* chore: GT4 - migration
* chore: fathom migration
* chore: paypal
* feat: basecamp migration
* feat: metapixel migration
* feat:plausable
* feat:stripe
* fix merge issues
* fix merge issues in new app install flow steps
* wip: callback to onboarding
* fix: imports
* fix: more imports
* feat: use redirect to onboarding on install flow
* feat: New app install flow 2 (#14077)
* fix: redirect to event-type after oauth flow
* When clicking on install new app button, only redirect to the new app install flow if it is an oAuth app or an app that extends the EventType feature in it's config
* code refactor, skip event-type step
* removed extra consoles
* so that no one can change the eventTypeId in url
* theme support enabled
* only pass eventTypeId instead of whole evetType obj to OmniInstallAppButton
* fix: clicking on event-type gives error and redirects to /apps
* saved appOnboardingRedirectUrl to OAuth State
* fix: a user having no team breaks the onboarding flow
* add optional chaining to appMetadata.extendsFeature and appMetadata.isOAuth;
* encode appOnboardingRedirectUrl
* fix: dark theme ui issues
* skip configure step if no-event types
if user/team does not have event-type then skip configure step and goto apps/installed/[category]
* exclude calendars from apps- onboarding flow
* Update getAppOnboardingRedirectUrl.ts
* fix: On configure step, inputs aren't showing errors
* change route from `apps/onboarding` to `apps/installation`
* fix: flow not correctly working for teams
* should only allow team ADMIN or OWER to install an app to team
* Prevent two payment apps to be enabled
* removed loading state
* Fix type error
* undo new-app-flow from OmniInstallAppButton
* remove OAuth Step, handle step numbering
* fix: redirect url
* getAppOnboardingRedirectUrl refactor
* for debugging
* Revert "for debugging"
This reverts commit b9362c1a8f47f2280e684c213d7ec08d04a8ac4c.
* fix: added toaster
* feat: added support to select multiple events (almost)
* hide button
* Move inner form outside outer form using portal
Due to limitations with nested forms in React Hook Form, moved the inner form outside the outer form using a portal to ensure proper form handling.
* submit buttons refs madness
* removed configure step
we had to use query params to manage selected event-types, between routes which was causing 2 issues:
* each time we selected or unselected an event the whole page was reloaded including getserversideprops being called again and again
* the form was reloaded causing more issues
* removed extra unwanted code
* small fix
* fix: type error
* fix: types
* implemented suggested changes
* removed step footer
* fixed error.message
* removed commented styles
* removed step footer
* fix: Display team event types instead of user's on event types step when team selected
* fix: typo
* removed shouldLockDisableProps
* refactor setUpdatedEventTypesStatus, fix type
* removed extra code
* can't delete while saving
* added translations
* fix: loading in select account step, fix handle onSelect params type
* Fix typo
---------
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
* fix: type errors
* fix: failing tests
---------
Co-authored-by: sean-brydon <sean@cal.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
* fix: view team bookings
* fix: edge case- common user across 2 different teams
* @SomayChauhan fix: edge case- common user across 2 different teams v2.0
* feat: added booking list test for collective event-types
* feat: added booking list test for round-robin event-types
* feat: added test for managed event types bookings
* feat: added test for individual events bookings
* refactor code
* added comments
* added isFixed to collective event hosts
* better function naming
* code refactor
* fix: assertBookingVisibleFor ignoring today's meetings
* fix: handling case for organizations
* fix: non org bookings-list test
* feat: added tests for organisations booking list
* added comments for better clarity
* booking-list in org tests
* uncommented doOnOrgDomain
* removed extra selectors
* fix: failing tests
* fix: db-load on bookings.get
* fix: only select the required fields
* followUp: Improve getUniqueBookings perf
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Omar López <zomars@me.com>
* fix timezone display on booking page to reflect event availability timezone
* migrate fetching event owner's schedule to server side
* migrate fetching event owner's schedule to server side
* fix e2e test errors
* Add WEBAPP_URL_FOR_OAUTH to salesforce auth
* In event manager constructor include "_crm" credentials as calendar creds
* Change crm apps to type to end with `_crm`
* Move sendgrid out of CRM
* Add zoho bigin to CRM apps
* When getting apps, use slug
* Add `crm` variants
* Hubspot Oauth use `WEBAPP_URL_FOR_OAUTH`
* Refactor creating credentials
* Fix empty CRM page
* Use credentials with `_crm`
* Abstract getAppCategoryTitle
* Add integration.handler changes
* Fix tests
* Type fix
---------
Co-authored-by: Shaik-Sirajuddin <sirajuddinshaik30gmail.com>
Co-authored-by: Shaik-Sirajuddin <sirajudddinshaik30@gmail.com>
Co-authored-by: Shaik-Sirajuddin <89742297+Shaik-Sirajuddin@users.noreply.github.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* Update README.md
Updating the description about POSTGRES DB port
* Update README.md
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Add minimum version number to PostgreSQL in 'Getting Started,' to help potential contributors successfully set up environment with local database.
I tried to set up local dev environment on Ubuntu 20.04 with PostgreSQL 12.18 which failed when running 'yarn workspace @calcom/prisma db-migrate'
PostgreSQL version 14.11 worked for me. I saw another dev say v. 13+ would work. Could save folks some troubleshooting time.
This is the error on PostgreSQL 12.18:
Error: P3006 Migration `20240321143215_move_avatars_cols_to_avatar_table` failed to apply cleanly to the shadow database. Error: ERROR: function gen_random_uuid() does not exist HINT: No function matches the given name and argument types. You might need to add explicit type casts. 0: sql_schema_connector::validate_migrations with namespaces=None at schema-engine/connectors/sql-schema-connector/src/lib.rs:324 1: schema_core::state::DevDiagnostic at schema-engine/core/src/state.rs:270
* chore: change timezone format
* chore: set guest email and guest company to null
* feat: also check states to get id
* chore: improve code
* chore: fix type erro
* chore: update zod schema
* feat: retell AI webhook url
* fix: type error
* chore
* chore: make company and email optional
* chore: remove logs
* chore: type error
* chore: type error
* fix: type err
* fix: pass guest email
* fix: type err
* chore: change date format
* chore: move advanced format
* fix: filter and listMember handler
* Update packages/trpc/server/routers/viewer/teams/listMembers.handler.ts
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* Update packages/features/bookings/components/PeopleFilter.tsx
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* added email and company form
* i18n
* feat: add guest email and company
* chore: update and format prompt
* chore: hint var
* chore: fix err message
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* make sure modal always appears
* separate event form wrappers into two components
* platform hook to fetch event type by id
* testing useGetEventTypeById hook
* add useGetEventTypeById to monorepo exports
* use platform hook for event type by id
* create event type: use createEventType from trpc handler
* create event type: simplify handler input and create e2e test
* update event type + test
* delete end point
* check if owner owns event type
* fix: starting v2
* fixes
* remove unused enum
* fix TS issue for update input
* docs refresh
* docs
* docs
* simplify event types docs
* docs refactor
* fix: check if user already has event type with existing slug
* refactor update into a service
* fix tests
* remove unused import
* update create event link
* refactor: create event handler process passed locations
* move input out of folder
* reuse eventtype location for inputs
* docs: example POST event-type return
---------
Co-authored-by: Rajiv Sahal <sahalrajiv-extc@atharvacoe.ac.in>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* chore: rewrite api.cal.com/v2 to api v2
* fixup! chore: rewrite api.cal.com/v2 to api v2
* fixup! fixup! chore: rewrite api.cal.com/v2 to api v2
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* fix: embed env var EnvrionmentPlugin config
* fixup! fix: embed env var EnvrionmentPlugin config
* fixup! fixup! fix: embed env var EnvrionmentPlugin config
* fix: auto switch to VERCEL_URL if WEBAPP_URL is undefined
* init bookings endpoint
* abstracting functions
* e2e tests for bookings
* hooks for bookings endpoint
* bookings respository fixtures
* typings for booking input
* fixup
* abstract booking info code and use it as handler
* import handlers for bookings endpoint
* add cancel booking input
* add handleCancelBooking handler in platform libraries
* cancel booking endpoint
* abstract call into its own separate fn
* cancel booking hook
* e2e test for cancel booking endpoint
* fix import
* export getBookings function
* move getAllUserBookings into lib
* add bookings folder to package exports
* use getAllUserBookings from lib
* fix import path
* fix: hooks, endpoint and example for cancel / reschedule / list / booking success page
* fix: unit test mock classNames import from lib
* fix: unit test mock classNames import from lib
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* feat: use unkey for global ratelimiting and identifier overrides
fixes#13672
* revert: make test pass
* chore: push timeout incase unkey ever dies
* chore: push timeout incase unkey ever dies
---------
Co-authored-by: sean-brydon <sean@cal.com>
* WIP
Adds the capability to add SSO setup in orgs
if you are an Admin or an Owner of the org
* remove sso setup from teams
* allows account creation on first login
* auto-add on login and dsync fixes
* allow SP & idP initiated login for SAML
* revert change to checkIfUserShouldbelongToOrg
* fixes SP initiated Login for first time
* removed stale comment
* code improvement
* --
* minor fixes
* more fix
* add description for non-admin sso settings page
* refactor: extract getEventTypeByViewer for private user dashboard event types
* refactor: extract getEventTypesPublic for public event types to book
* refactor: group event-types lib functions in single folder
* refactor: rename getEventTypeByViewer to getEventTypesByViewer
* feat: add event type helpers from lib to platform libraries
* feat: v2 endpoint for private event types
* driveby:fix: fixed date in docs instead of being re-generated
* feature: endpoint to fetch public endpoints
* fix: getting private event types
* tests: fetch private event types
* tests: fetch private event types
* feat: hooks for public and private events
* fix: yarn test
* tests: IMO better mocking
* refactor: track dynamic prop in react query
* fix: distinct query key for public events
* fix: username in query key and example app demo
* fix: swagger for endpoint get public event input
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* feat: add isPlatformManaged property to user
* do not allow deleting non managed users
* refactor: rename managed user create and update inputs
* refactor response code
* feat: add isPlatformManaged when creating managed user
* fix TS
* refactor: v2 api remove defaultScheduleId from create user input
* refactor: ensure user from test is deleted
* fix: oauth-client-users test and allow deleting oauth users
* feat: isPlatform flag for teams
* feat: create organizations service to check if org is platform
* feat: check if organization is platform in the OrganizationRolesGuard used by OAuthClientsController
* remove unused variable
* refactor: reduce nesting in create handler and abstract check in function
* feat: dont create domain for platform orgs
* fix: Attendee address and phone number field not shown in booking questions
* Address review comments
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* fix: getEnv not returning fallback API_URL breaking examples app
* refactor: use vite as the only way to build atoms
* refactor: web use atoms from web.ts and rest from dist
* refactor: update atoms version, description and set privacy to public
* fix: lib and ui import from web atoms
* refactor: rename @calcom/platform-atoms to @calcom/atoms
* feat: atoms as npm works with example app outside monorepo
* start atoms from v1.0.0
* refactor: monorepo atoms for internal use
* document atoms publishing
* refactor: remove unused import in v2
* fix: mistakes made during main merge
* refactor: move back examples app while still having it in atoms-examples repo
* refactor: monorepo examples readme
* feat: atoms yarn publish command
* refactor: atoms css file simplify
* fix: mocking atoms in ui unit test
* fix: mocking atoms in app-store unit test
* Add UI to select members to receive emails in routing form
* Add backend changes to support frontend to select team members to get routing form updates to
* Fix type error
* Fix all the members of all the teams the user is part of shown instead of only the current team where the routing form is created
* Fix type error
* Refactor components to a shared folder
* fix type error
* Fix review comment: only include emails
* Remove listMembers trpc call in frontend and get the data in formQuery.handler
* Address review comments
* Remove unrelated changes
* Update SingleForm.tsx
---------
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* add reschedule link if event if type team
* fix type errors
* fix type errors
* change team.name to team.slug
* fix type_errors
* fix type-errors
* fix type-errors
* fetch team from db
* make rescheduleLink dynamic (temp_changes)
* fix type-error
* add org support
* fix type errors
* remove old org code
* use /reschedule/uid instead
* remove not needed changes
* implement feedback
* code clean up
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* add 15 and 5 to intervalsWithDefinedStartTimes
* change slot start time logic
* test if we run tests
* remove unwanted changes
* add tests
* remove console.log
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* add connect to cal atom
* add connect to cal to atoms package index
* shadcn setup
* update packages
* button component from shadcn
* dumb button component
* replace button with dumb button component
* update commenst and change url param
* chore: setting up monorepo packages for platforms (#12572)
* chore: init platform folders strucutre and api proxy
* fixup! chore: init platform folders strucutre and api proxy
* chore: init database oAuth platform client schema
* fixup! chore: init database oAuth platform client schema
* fix config path after move to folder /v1
* feat: scaffold v2 API (#12554)
* init nest project
* add kysely as a separate package
* add ee folder with license
* prettier: format v2 api same as mono repo
* migrate over Eriks nestjs poc
* schema generation script
* ee license file
* nest poc eslint file
* remove prisma-kysely from v2 api
* prepare for mergin platform: remove prisma-kysely because incorrect checksum
* add prisma-kysely to packages/prisma
* move to apps/api/v2
* rename v2 package
* readme update
* Update apps/api/v2/env.example
* env typo
* env typo
---------
Co-authored-by: Erik <erik@erosemberg.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* chore: init platform packages (#12603)
* chore: init platform packages
* fixup! chore: init platform packages
* fixup! fixup! chore: init platform packages
* fix: type in package.json
* fixup! fixup! fixup! chore: init platform packages
* fixup! fixup! fixup! fixup! chore: init platform packages
* fixup! fixup! fixup! fixup! fixup! chore: init platform packages
* fixup! fixup! fixup! fixup! fixup! fixup! chore: init platform packages
---------
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
* chore: platform more permissions utils and tests (#12613)
* chore: more permisions utils and tests
* chore: tests
* feat: validate `CalProvider` api keys (#12672)
* fix: signup nit (#12585)
* Disable submit on empty form
* Fix submit
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* New Crowdin translations by Github Action
* fix: Signup options are not disabled (#12610)
* fix: Signup options are not disabled
* fixes/signup disabling suggested changes done
* chore: signup and login improvements
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* fix: typo in @calcom/emails readme (#12615)
* fix: handle reschedule request for dynamic meetings (#12275)
* chore: [app-router-migration-1] migrate the pages in `settings/admin` to the app directory (#12561)
Co-authored-by: Dmytro Hryshyn <dev.dmytroh@gmail.com>
Co-authored-by: DmytroHryshyn <125881252+DmytroHryshyn@users.noreply.github.com>
Co-authored-by: zomars <zomars@me.com>
* chore: added cursor-pointer to img upload (#12624)
* added cursor-pointer to img upload
* nit
* feat: add clear filters option in bookings page (#12629)
* add clear filters option
* fix vscode settings.json
* use removeAllQueryParams()
* fix yarn lock
* remove toggleoption
* feat: display long durations in hours on booking (#12631)
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* New Crowdin translations by Github Action
* fix: workaround for future app dir routes
* feat: Allow only first slot to be booked (#12636)
Co-authored-by: Morgan Vernay <morgan@cal.com>
* New Crowdin translations by Github Action
* feat: add matomo analytics app (#12646)
* chore: Sentry Wrapper with Performance and Error Tracing (#12642)
* add wrapper for sentry and update functions in 'getUserAvailability'. Update tracesSampleRate to 1.0
* Make Sentry Wrapper utilize parent transaction, if it exists.
* Update wrapper for functions to inherit parameters from the child function
* add comment of when to use the wrapper
* check for sentry before wrapping, if not call unwrapped function
* refactored wrapper to have async and sync separate functions that utilize helpers for common behaviour
* update type of args to unknown
* fixed types of returns from wrapped functions
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* validate api keys to set error and key states for api keys
* organize error messages into one place
* set error messages from errors file instead of hardcoding value
* fix incorrect constant name
---------
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: Pratik Kumar <70286186+Pratik-Kumar-621@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
Co-authored-by: Samyabrata Maji <116789799+samyabrata-maji@users.noreply.github.com>
Co-authored-by: Manpreet Singh <manpoffc@gmail.com>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
Co-authored-by: Dmytro Hryshyn <dev.dmytroh@gmail.com>
Co-authored-by: DmytroHryshyn <125881252+DmytroHryshyn@users.noreply.github.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: Varun Prahlad Balani <varunprahladbalani@gmail.com>
Co-authored-by: Mike Zhou <mikezhoudev@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Haran Rajkumar <haranrajkumar97@gmail.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: Harshith Pabbati <pabbatiharshith@gmail.com>
Co-authored-by: Brendan Woodward <73412688+bwoody13@users.noreply.github.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* fix: storybook atom import
* feat: oauth clients management (#12604)
* feat: oAuth create and update dtos
* feat: WIP oAuth repository
* feat: oAuth controller and module
* refactor: rename cal oAuth to simply oauth
* fix: controller update client
* add oAuth client module to endpoints module
* refactor: OAuthClientRepository
* refactor
* status codes for controller
* oauth create return
* fix: oAuth client only for v2 API
* remove repository as provider from its module
* fix: oAuth module, have repository in providers
* fix: make endpoints run
* comment out oauth prisma schema code: coming next
* refactor: remove api-key authguard (#12675)
* chore: Prisma exception filters (#12679)
* fix: get prisma schema from package @calcom/prisma (#12692)
* fix: get prisma schema from package @calcom/prisma
* fixup! fix: get prisma schema from package @calcom/prisma
* fixup! fixup! fix: get prisma schema from package @calcom/prisma
* fix: prettier config
* fixup! fix: prettier config
* chore: create authenticated user guard (#12677)
* chore: wip next-auth-guard for apiv2
* refactor: use NextAuthGuard on all OAuthClientController routes
* refactor: use passport to get next user
* exclude password from prisma read service
* Revert "exclude password from prisma read service"
This reverts commit 24b1f8ed59f6d99f0ecc589c691efb0ac1f2ac3b.
* fix: userRepo sanitize password
* refactor: function order in UserRepository
* implement user repository service
* refactor: strict null checks for TS
* refactor: fix strict null checks
* delete res locals type
* refactor: switch from zod to class-validator for oAuth client
* refactor: switch from zod to class-validator for booking
* refactor: rename dtos folder to input folder
* fix: create migration for prisma schema oauth clients table
* feature: post oAuth client
* refactor: rename oAuth client_secret to secret
* stricter ts config + oauth secret
* remove migrations
* fix: improve response type
* improve error code types
* fix: prettier by removing eslint as its not needed
* refactor: eslint fix files
* wip organization oauth_lcient
* fix import types
* fix team schema platformOAuthClient name
* fix: import packages transpiled
* feat: roles guard
* refactor: use organisationId instead of userId
* fix: jwt secret signing not having jwt_secret
* fix: stop importing input DTOs as types
* fix: jwt sign expecting plain object
* add sentry, routes logger, generic response type
* fix test config
* fixup! fix test config
* refactor: dont await async function return
* feat: fallback value for getEnv
* feat: add helmet for security
* feat: organization guard
* refactor: check if user set in RolesGuard
* refactor: remove roles requirement for oauth read
* chore: add exceptions filters
* fix: api key strategy throws errors
* chore: set e2e tests
* chore: centralize api type in package
* feat: user repository relations
* feat: user repository relations
* Revert "feat: user repository relations"
This reverts commit 1802b256b5a6e5c9b6a62138c8cb1b6f75ed401b.
* Revert "feat: user repository relations"
This reverts commit 4a8f52583d95ff15b6254694c976d8ec9ce0e546.
* test: mock next auth
* fixup! test: mock next auth
* test:oAuth authed user but no org
* refactor: remove unused type
* refactor: organisation guard based on Membership table
* refactor: folder and file structure
* fix: small changes exception filters
* refactor: merge organization and roles guards into one guard
* fix: remove old export
* fix: org roles guard
---------
Co-authored-by: supalarry <lauris.skraucis@gmail.com>
* chore: OAuth clients tests and fixes (#12762)
* chore: add tests and fixes
* fixup! chore: add tests and fixes
* fixup! fixup! chore: add tests and fixes
* fixup! fixup! fixup! chore: add tests and fixes
* fixup! fixup! fixup! fixup! chore: add tests and fixes
* fixup! fixup! fixup! fixup! fixup! chore: add tests and fixes
* fixup! fixup! fixup! fixup! fixup! fixup! chore: add tests and fixes
* fix: remove unused imports
* chore: move repos to feature folder (#12769)
* chore: rename repositories
* fix yarn.lock
* feat: oauth client guard (#12814)
* feat: oAuth client guard
* refactor test
* refactor: move oauth-client guard to oauth module
* refactor: separate jest config from package.json
* fix: resolving paths in jest tests
* fix: tests
* jest setup file
* fix: jest test warnings about .js platform constants imports
* refactor: test repository fixtures
* remove allowjs
* ignore js files in ts-jest
* make oauth client module global
* make oauth client module global
* feat: platform oAuth clients frontend (#12867)
* add oauth client to settings
* fix imports
* add react and axios
* oauth client form and card components
* hooks for oauth clients data
* index page for oauth clients
* oauth client list component
* oauth client form page
* shift atoms into platform
* init platform folder
* refactor handleSubmit functioin
* platform
* platform
* platform parts
* revert tsconfig constant platform
* fix: useOauthClients
* feat: create oauth client with api
* fix: add prettier to platform type package
* fixup! fix: add prettier to platform type package
* chore: class-validator types in platform package
* add types for delete oauth client iput
* add onSuccess and onError methods
* update oauth client card view with client id and secret
* cleanup comments
* split oauth persisit hook into create and delete hooks
* fix: oauth client creation / deletion / listing
* fixup! fix: oauth client creation / deletion / listing
* fix: comment logo for now
* fix: layout setting org keys
* cleanup comments
* minor style fixes, add logic for client permissions
* show toast after deleting client
* not passing clint logo at the moment
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
* chore(platform): OAuth Flow (#12798)
* fixup! chore(platform): OAuth Flow (#12798)
* feat: CRUD for oAuth users (#12853)
* user controller with oauth guard
* crud repository and controller operations
* add user controller to user module
* refactor: oauth guard
* connect user with oauth client upon creation
* fix: test
* wip: e2e test
* refactor: findUniqueOrThrow -> findUnique user
* test: POST user request
* feat: permissions guard
* e2e tests
* e2e
* e2e refactor
* e2e refactor
* reflector decorator check refactor
* refactor oauth guard
* remov unused imports
* log message
* delete permissions decorator and guard
* remove delete user endpoint
* remove delete user endpoint
* refactor: route structure
* remove get oauth client decorator
* delete unecessary e2e config changes
* remove set header in post test
* fix: oauth guard test on empty db
* revert: add previously removed constant to fulfill merge platform
* fix: import to satisfy platform branch merge
* use real implementation of access token guard
* generate access & refresh tokens and fix e2e
* fix: oauth client e2e test
* refactor: variable naming
* refactor
* rename test file
* remove oauth client from request
* refactor: v2 API (#12913)
* Use Boolean only instead of git add src/modules/auth/guard/organization-roles/organization-roles.guard.ts
* move tests next to files they test
* replace .. in import paths with absolute path
* camelCase instead of snake_case for access and refresh token variables
* user sanitize function Typescript friendly
* restructure oAuth clients folder: example for other folders
* restructure bookings module
* organize modules in auth, endpoints, repositories, services
* organize auth module
* organize repositories
* organize inputs
* rename OAuthClientGuard to OAuthClientCredentialsGuard
* add error messages
* add error messages
* clientId as param in oauth-flow & schema mapping
* camelCase instead of snake_case for clientId and clientSecret
* access token guard as passport strategy
* folder structure as features
* get rid of index files
* feat: endpoint for deleting oAuth users & oAuth users returned data (#12912)
* feat: delete oAuth users
* check if access token matches userId in parameter
* driveby: return only user id and email in oauth users endpoints
* refactor: access token errors (#12932)
* change error messages
* error message if access token does not exist in our database
* token expired 498
* access token expired message as constant
* store 498 status code as const
* fix: access token error less information given
* chore: invalid access token const
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
* feat: external gcal (#12954)
* wip connect gcal
* feat: add external google calendar
* fixup! feat: add external google calendar
* fix: google calendar oauth check invalid
* google cal check tests
* use zod
* fix: await validate access token service
* chore: e2e tests for oAuth flow (#13005)
* fix: accessing length of undefined
* refactor: GetUser throw error if no user provided
* fix: cascade delete PlatformAuthorizationToken if owner or client deleted
* test: POST /authorize
* refactor oauth-flow controller
* refactor oauth-flow controller
* new function to get authorization token by client user ids
* refactor token service
* fix: re-created access and refresh tokens having not unique secret
* oauth flow tests
* oauth flow tests
* feat: abstracted jwt service (#13016)
* remove unused JwtModule from the auth module
* feat: create abstracted jwt service
* refactor: tokens module and service use new jwt service
* refactor: oauth-client module and repository use new jwt service
* implement Morgans requests
* Basic atoms in barebone example platform apps (#13006)
* example app
* example app
* dev move
* fix: more entry points
* fixup! fix: more entry points
* refactor: v2 API (#12913)
* Use Boolean only instead of git add src/modules/auth/guard/organization-roles/organization-roles.guard.ts
* move tests next to files they test
* replace .. in import paths with absolute path
* camelCase instead of snake_case for access and refresh token variables
* user sanitize function Typescript friendly
* restructure oAuth clients folder: example for other folders
* restructure bookings module
* organize modules in auth, endpoints, repositories, services
* organize auth module
* organize repositories
* organize inputs
* rename OAuthClientGuard to OAuthClientCredentialsGuard
* add error messages
* add error messages
* clientId as param in oauth-flow & schema mapping
* camelCase instead of snake_case for clientId and clientSecret
* access token guard as passport strategy
* folder structure as features
* get rid of index files
* feat: endpoint for deleting oAuth users & oAuth users returned data (#12912)
* feat: delete oAuth users
* check if access token matches userId in parameter
* driveby: return only user id and email in oauth users endpoints
* Connect CalProvider and GCal
* Connect CalProvider and GCal
* return response interceptor to handle failed requests
* handle failed requests using axios intercepter
* cal provider refresh tokens, external gcal
* external gcal
* cal provider refresh and retries
* remove console.log
* refactor
* ignore built atoms css
* remove change to token repo
* refactor
* refactor
* downdgrade vite of unrelated packages
* move gcal endpoints to platform
* gcal service
* refactor: use atoms provider
---------
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: Ryukemeister <sahalrajiv-extc@atharvacoe.ac.in>
* feat: user schedule management (#13053)
* platform-constants package: list of accepted schedule timezones
* feat: schedules endpoint to create schedule with default availability
* refactor: rename function
* refactor: store userId for availabilities
* feat: createSchedule endpoint
* feat: get schedules/default
* feat: getSchedule by id
* feat: get all schedules
* feat: delete schedule
* feat: update schedule
* check user owns schedule
* empty test
* define returned data on controller level not repository
* define returned data on controller level not repository
* Revert "define returned data on controller level not repository"
This reverts commit 4c292a0f0762f58bdcad0707ad8eef7408390800.
* use luxton
* put availabilities out of ee
* use guard on controller level
* refactor
* e2e test schedule creation
* remove log
* test
* default schedule get test
* update schedule test
* delete schedule test
* fix update test
* different email for schedules e2e
* driveby: fix yarn test
* schedule inputs availabilities as array
* re-use BaseStrategy class
* feat: me endpoint v2 api (#13274)
* feat: me endpoint v2 api
* simplify
* chore: NestJS throttling (#13011)
* fix: v2 throttling setup (#13402)
* fix: v2 throttling
* fix: setup redis locally
* move sentry files to api v1
* chore: calcom platform libraries (#13444)
* fixup! chore: calcom platform libraries (#13444)
* fix: fix managed users
* feat: user timezone management in `CalProvider` (#13361)
* hooks to fetch and update user timezone
* add react query package
* add logic to check for change in user timezone and update it
* hook to handle timezone changes
* shift timezone handling logic into separate custom hook
* rename variables
* rename hook to get a user
* call useTimezone hook inside of cal provider
* minor refactors
* add variables for api endpoints
* use URL constructor for creating endpoints
* key prop not needed
* use URL constructor for creating endpoints
* chore: package json scripts
* fix(atoms): fix import path of useUpdateUserTimezone
* fix(atoms): build constants and fix ENDPOINTS const
* feat: v2 api event type endpoints (#13449)
* build platform-libraries
* make getEventTypeById compatible with default PrismaClient
* feat: fetch event type endpoint
* handle event type not found
* e2e test for GET
* test
* determine is user org admin for getEventTypeId correctly
* prisma type like before
* add negative test
* POST event-type and return event-type for api and atom
* POST event-type and return event-type for api and atom
* feat: create default user event types when creating managed user
* feat: v2 api me PUT endpoint (#13486)
* add timeZone to me endpoint
* feat: me endpoint PUT
* reset package.json
* standardize creation and updating of user
* user creation: capitalize timezones and week start
* default event type constants in const file
* refactor: defaultTimezone Europe/London in response schema
* refactor: validators
* refactor: default schedule in schedules endpoints
* refactor: patch instead of put
* fix: getEventTypeById organizationId (#13554)
* chore: transpile more libraries functions
* feat: overlay calendar busy dates events (#13581)
* feat: overlay calendar busy times events
* fixup! feat: overlay calendar busy times events
* fixup! fixup! feat: overlay calendar busy times events
* fixup! fixup! fixup! feat: overlay calendar busy times events
* refactor: schedules for atom (#13585)
* schedules get.handler transformers as util functions
* export schedule transformers from platform-libraries package
* schedules for atom
* refactor: schedules response service format response
* remove unused injected dependency
* fix: prevent duplicate calendar account linking (#13310)
* fix: prevent signing up multiple times from same account
* revert: lark calendar changes
* credential clean up if duplicate
* fix code duplication and check before credential creation
* feat: useRouterQuery allow unset queryParam
* feat: showToast on account duplication attempt
* Small tweak to copy
* Updated other calendars not to use checkDuplicateCalendar
* Add account already linked to apps/installed/calendar
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* Revert event-type profile based querying (#13588)
* test: Bookings: Add more automated tests for organization (#13576)
* Avoid selecting unused props
* Add automated tests
* Add existing user invite and booking
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* fix: organization user shouldn't be asked for payment for a premium username (#13535)
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* chore: refactor handle new reccuring booking (#13597)
* chore: refactor handle new reccuring booking
* fixup! chore: refactor handle new reccuring booking
* fixup! fixup! chore: refactor handle new reccuring booking
* test: Create unit tests for the questions (teste2e-multiSelectQuestion) (#11569)
* Remove unnecessary changes
* add changes
* Requested changes
* Requested changes
* FIx failing tests
* FIx failing tests
* Update regularBookings.ts
* FIx failing tests
* Refactor
* add unit tests for all questions
---------
Co-authored-by: gitstart-calcom <gitstart-calcom@users.noreply.github.com>
Co-authored-by: GitStart-Cal.com <121884634+gitstart-calcom@users.noreply.github.com>
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* fix: update valid_for_secs (#13604)
* fix: Fixes teams UI load issue (#13593)
* fixes teams uiload issue
* revert: yarn.lock
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* chore: upgrades boxyhq jackson (#13477)
* chore: upgrades boxyhq jackson
* Update jackson.ts
reduces bundle size
* Update yarn.lock
* Update apps/web/next.config.js
* Upgrades again
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* upgrades copycat
* feat: PLA-47 Reserve Slots Handler (#13607)
* PLA-44 feat: Platform getPublicEvent (#13596)
* chore: getPublicEvent
* chore: fix
* feat: booker atom bookings platform endpoints (#13613)
* feat: handle new booking
* wip
* feat: handle recurring and instant booking
* fixup! feat: handle recurring and instant booking
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: v2 not running (#13636)
* fix: import from platform-libraries instead of lib
* fix: typescript error
* fix: provide EventTypesRepository to SlotsService
* fix: small change
* Merge branch 'main' into platform
* fix: make v2 run after user model changes (#13653)
* feat: event type atom user connected and destination calendars endpoint (#13559)
* extract connected calendars logic in re-usable platform-libraries function
* extract connected calendars logic in re-usable platform-libraries function
* extract connected calendars logic in re-usable platform-libraries function
* calendars endpoints
* enable calendars endpoint
* calendars type form platform-libraries instead of lib
* finish merging platform branch
* fix dbWrite
* fix: issue after merge platform
* fix: new abstracted function export
* change ee/overlay-calendars to ee/calendars endpoint
* refactor: merge overlay service with calendars service
* ts fix
* body -> query
* chore: Platform get schedule (#13696)
* chore: get available slots
* chore: infer event type isTeam
* chore: nit
* chore: Delete selected slot (#13692)
Co-authored-by: Morgan Vernay <morgan@cal.com>
* feat: v2 endpoint for availability atom timezones (#13687)
* refactor: move cityTimezones handler to lib
* test: incorrect timezone when creating oauth user
* refactor: standardize time zone validation
* feat: schedules/time-zones endpoint returning possible time zones
* refactor: @IsValidTimezone load allowed timezones dynamically
* chore: split timezones to its own trpc router
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
* fix after merge main
* feat: platform useGetPublicEvent (#13752)
* feat: platform useGetPublicEvent
* chore: move public event type to libraries
* chore: use const for query key
* fixup CalendarBusyTimesInput optional params
* feat: platform use get available slots (#13756)
* feat: platform use get available slots
* fixup! feat: platform use get available slots
* feat: platform use get connected calendars (#13757)
* chore: platform enable cors (#13774)
* chore: enable cors
* fixup! chore: enable cors
* feat: platform use get calendars busy times (#13759)
* fixup! feat: platform use get calendars busy times (#13759)
* feat: platform use slots hooks (#13785)
* feat: platform use slots hooks
* fixup! feat: platform use slots hooks
* fixup! fixup! feat: platform use slots hooks
* fixup! fixup! fixup! feat: platform use slots hooks
* fixup! fixup! fixup! fixup! feat: platform use slots hooks
* fixup! feat: platform use slots hooks (#13785)
* feat: platform use create boookings hooks (#13797)
* feat: `Availability Settings` atom (#13762)
* styling and updating the examples app
* add custom hooks for availability settings atom
* update default exports
* minor updates
* update cal provider to use react query
* availability settings atom
* dialog from shadcn
* navbar for examples app
* add select skeleton loader in calcom ui packages
* refactors
* define rtl for cal provider
* fox trpc call to avoid merge conflicts
* fix issues caused by merges
* revert changes for rtl
* hook to fetch every city timezones
* implement useGetCityTimezones into timezone component
* minor fix
* update hooks
* add props and intergrate into avaialibility component
* add missing await
* remove logs
* add comments
* invalidate queries after settled
* toaster from shadcn
* add toaster into cal provider
* implement toast on event handlers
* add classnames prop to accept custom styles
* passing custom styles
* update packages
* remove comments
* fix: styling
* fix: useUpdateSchedule
* fixup! fix: useUpdateSchedule
* wip
* feat: availability setting atom
* fixup! feat: availability setting atom
* fixup! fixup! feat: availability setting atom
* fixup! fixup! fixup! feat: availability setting atom
* fixup! fixup! fixup! fixup! feat: availability setting atom
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
* fix: atoms import
* chore: lock
* fix: types
* fixup! fix: types
* refactor: v2 user timezones (#13944)
* fix: OAuth client form improvements (#13837)
* rename app to apps
* fix type errors, validate redirect url and other fixes
* enable user to add multiple redirect uris
* add id to input to make labels clickable
* translations for oauth form
* improve styles, add translations and add select all button for permissions
* add permissions for profile read and write
* fixes
* nit
* use `useFieldArray` for dynamic fields
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* refactor: check organizationId primarily on user profile (#13969)
* refactor: attach movedToProfile to user
* refactor: check organizationId primarily on user profile
* fix: resolve TS errors to build v2 for prod (#13858)
* feat: atoms typescript build (#13864)
* fix: atoms typescript build
* refactor: dayjs
* refactor: meticulous
* refactor: use vite for type generation
* tsconfig
* feat: given user timezone update update default schedule timezone (#13981)
* refactor: standardize schedules api response
* fix: schedules e2e tests
* refactor: use IsTimeZone class-validator instead of custom built one
* feat: validate managed user timezone
* feat: update default schedule when me schedule updated
* refactor: standardize v2 api returned data (#13984)
* feat: V2 api swagger (#13804)
* feat: v2 API swagger docs
* fix: query param not showing up in docs
* latest swagger.json
* refactor: remove scaffolded sample endpoint
* separate internal endpoints
* oauth-clients and oauth flow docs only in dev
* oauth-clients and oauth flow docs only in dev
* create oauth client response doc
* responses for oauth-clients
* document development only endpoints
* chore: consume auth token on exchange (#13993)
* feat: docker build for v2 (#13918)
* fix: resolve TS errors to build v2 for prod
* WIP: api v2 docker
* arg env dockerfile
* wip
* Revert "wip"
This reverts commit 232adf5b969ef004ae907f3e85b12c2715d9b6bc.
* wip
* wip
* fix docker
* fix docker
* fix docker
* docker
* docker
* expose port 80
* feat: oauth client permissions guard (#14020)
* feat: Permissions guard
* feat: Permissions guard
* tests
* feat: use permissions guard for event types
* extra permissions test
* fix tests
* bokings, gcal, me and schedules permissions
* chore: use availability settings atom and fix useTimezone platform hook (#13934)
* replace availabiilty settings with atom component
* add more props for custom styles
* replace intl with dayjs
* review feedback fixes
* fix: v2 api typescript errors (#14059)
* fix: start:prod script
* fix: v2 me module dependencies (#14073)
* feat: check v2 request origin (#14074)
* feat: check v2 request origin
* drive by: remove console log in test
---------
Co-authored-by: Lauris <lauris@Lauriss-Laptop.local>
* fix date overrides typing issues (#14091)
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* fix: v2 e2e tests (#14088)
* fix: v2 e2e tests
* fix: yarn e2e tests run 1 after another
* fix gcal test
---------
Co-authored-by: Lauris <lauris@Lauriss-Laptop.local>
* fix: availability atom and access token origin strategy
* fix: availability atom get error from unknown
* feat: booker atom platform wrapper (#14036)
* feat: booker atom, fix hooks
* wip
* feat: booker atom platform wrapper
* fix conflicts
* fix: build v2 internal dependencies upon v2 build
* fix typing of useDeleteOAuth
* fix: isplatform timezone select improt booker event meta
* fixup! Merge branch 'platform' into feat-booker-atom-platform
* refactor
* add video call event types
* disable email and set managed user names
---------
Co-authored-by: supalarry <lauris.skraucis@gmail.com>
* update yarn.lock
* Update .prettierignore
* update post install
* fix: post install
* fix yarn lock
* fix: post install
* fix: types
* feat: enable user control over timezone changes and helpers for query params (#14049)
* helpers to get and set value of a query paramater
* add event handlers and props to figure out the timezone preference of a user
* make onTimeZoneChange handler optional
* fixup
* fix merge conflicts
* fixup
* revert changes
* fixup
* fixup
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* fix: usetimezone import
* fix: prisma client import
* fix: prisma client import
* fix: prisma client import
* remove post install using vite
* ts fix attempt: pin prisma to same version
* Revert "ts fix attempt: pin prisma to same version"
This reverts commit 2c309f52e3a881e2dbda4185f45e77967bef6925.
* resolve v2 prisma to calcom prisma
* sync v2 and typescript deps
* sync atoms package
* lock file updat
* fix: platform web components move out of pages folder
* ui: allow experimental decorators to fix ts ci error
* app-store: allow experimental decorators to fix ts ci error
* web: allow experimental decorators to fix ts ci error
* fix: github actions v2 api secrets
* add license
* mock useIsPlatform for tests
* fix timezone select tests
* mock useLocale
* fix tests
* fix tests
* fix tests
* fix github actions
* chore: temporarily disable redis (#14142)
* fix: only one migration file for platform
* fix api v1 files location
* fix: disable apiv2 test in ci
---------
Co-authored-by: Ryukemeister <sahalrajiv-extc@atharvacoe.ac.in>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: Erik <erik@erosemberg.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: Pratik Kumar <70286186+Pratik-Kumar-621@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
Co-authored-by: Samyabrata Maji <116789799+samyabrata-maji@users.noreply.github.com>
Co-authored-by: Manpreet Singh <manpoffc@gmail.com>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
Co-authored-by: Dmytro Hryshyn <dev.dmytroh@gmail.com>
Co-authored-by: DmytroHryshyn <125881252+DmytroHryshyn@users.noreply.github.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: Varun Prahlad Balani <varunprahladbalani@gmail.com>
Co-authored-by: Mike Zhou <mikezhoudev@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Haran Rajkumar <haranrajkumar97@gmail.com>
Co-authored-by: Harshith Pabbati <pabbatiharshith@gmail.com>
Co-authored-by: Brendan Woodward <73412688+bwoody13@users.noreply.github.com>
Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: gitstart-app[bot] <57568882+gitstart-app[bot]@users.noreply.github.com>
Co-authored-by: gitstart-calcom <gitstart-calcom@users.noreply.github.com>
Co-authored-by: GitStart-Cal.com <121884634+gitstart-calcom@users.noreply.github.com>
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Anant Jain <75206987+anantJjain@users.noreply.github.com>
Co-authored-by: Lauris <lauris@Lauriss-Laptop.local>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
* fix timezone display on booking page to reflect event availability timezone
* migrate fetching event owner's schedule to server side
* migrate fetching event owner's schedule to server side
* fix e2e test errors
---------
Co-authored-by: Shaik-Sirajuddin <sirajuddinshaik30gmail.com>
Co-authored-by: Shaik-Sirajuddin <sirajudddinshaik30@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* Update UserSettings.tsx
i am trying to solve Processing button
* chore: use loading property and undo changes
* chore: add in other pages
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* db migration
* adjusted ui to include `platform` in dropdown for admin webhooks
* adjusted webhook/create.handler for platform
* adjusted `edit.handler` so that only ADMIN can update `platform` webhooks
* update `getWebhooks` for platform wide webhooks
* list platform webhooks if admin
* createFunction refactor
* update subscriberUrlReserved for platform webhooks
* fix delete webhook handler
* fix: added readOnly to WebhookListItem
* fix: admin cannot delete its own webhooks
* fix: ts error
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* chroe: org settings schema
* wip: UI work + modal on toggle
* chore: update i18n
* fix: list handler
* fix: update handler on untoggle
* chore: extract
* feat: update handler for hide and delete logic
* chore: radio translations
* chore: fix modal state from flickering
* feat: update copy & add danger colour on delete focus
* chore: update copy
* design: remove modal icon
* chore: include more seeds
* fix: update handler
* feat: hide create for profile user
* feat: use readonly instead
* feat: hide personal event type header when read only
* chore: move away form readOnly as it was used in other ways
* chore: fix read-only bug
* fix: hide readonly create screen
* fix: show managed event types when events are locked
* fix: hide if not admin
* Update packages/trpc/server/routers/viewer/eventTypes/create.handler.ts
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* fix: feedback
* fix: lock eventtype single switch
* fix: empty state create button
* fix: more profileGroup check outside CTA to pass value to filter too
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* Set unique tenant
* Rely on current DB for dsync data
* Fix rendering dsync config
* Remove console.log
* Address feedback
* Add relationship between dsync data and team group mapping
* Fix `dsyncData` and `organizationSetting` relationship
* add metadata to seats for workflows and webhooks
* add test
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* moved privacy setting to new tab
* i18n
* added more privacy switches
* fix: hide org teams and members
* fix: use i18n
* fix: privacy page
* feat: also hide team mebers when org is private
* chore: remove log
* fix type error
* chore: type err
* chore: feedback
* chore: type err
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* open reporting in new tab full screen
* nit
* fixed type
* Fix failing test
* Update packages/app-store/routing-forms/pages/reporting/[...appPages].tsx
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
* fix: view team bookings
* fix: edge case- common user across 2 different teams
* @SomayChauhan fix: edge case- common user across 2 different teams v2.0
* feat: added booking list test for collective event-types
* feat: added booking list test for round-robin event-types
* feat: added test for managed event types bookings
* feat: added test for individual events bookings
* refactor code
* added comments
* added isFixed to collective event hosts
* better function naming
* code refactor
* fix: assertBookingVisibleFor ignoring today's meetings
* fix: handling case for organizations
* fix: non org bookings-list test
* feat: added tests for organisations booking list
* added comments for better clarity
* booking-list in org tests
* uncommented doOnOrgDomain
* removed extra selectors
* fix: failing tests
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* init
* Fix event limit interlinked switches
* wip
* WIP
* fix bugs
* lock hashed link until further notice
* lock private url for managed type to stop confusion
* fix recurring
* prettier fix
* early review fixes ...
* --WIP to send only changed form fields in updateMutation
* WIP with some type fixes
* Revert "WIP with some type fixes"
This reverts commit 00f10b772d6d08af17e7c9bd2d3601d93035d9b3.
* post merge conflict resolution fixes
* further type fix
* fixed test
* fixing e2e tests
* fix test --WIP
* attempt fix test & type --WIP
* fix duplicate locale en entry
* fix locked state persistence
* adds private URL locked/unlocked functionality
* fix tests
* Fix issue where locked labels showed up in non-managed events
* adds e2e test step
* update new test
* minor fixes
* fix test
* address changes request Part 1
fixed width on the lock badge
members default location as default selection
bugfix for offset toggle duplicate within itself
* fixes locked/unlocked label for child event types
* enable choice of destination calendar for children
* Fixes width for simple lock badge
* fix type
* fixes workflows list and apps for managed event type
* restricts creation of managed event types to EE only
* further fixes --WIP
* fix unit test for handleChildrenEventTypes
* fix test --WIP
* fix type err --WIP
* fix type err in test
* fix childevent payload
* fixes hashedLink bug
* fix test step title
* lock workflow create button when workflow is locked
* fix workflow detail
* Don't rely on parameter ordering, use object instead
* Removed console.log
* Missed one
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* fix: Implement new avatars in insights
* fix: Exposed type errors, previously hidden by any,any type
---------
Co-authored-by: Omar López <zomars@me.com>
* added new .env for script tags
* Update turbo.json
* removed meticulous
* added body script .env
* nit
* fixed injection
* Update apps/web/app/layout.tsx
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Ensure NEXT_PUBLIC_BODY_SCRIPTS is casted to bool
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* add the X-Cal-Signature-256 header to MEETING_ENDED webhook requests
* take care of null value for appId
---------
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* fix: team event when when no one is assigned
* chore: test
* chore: unfo
* chore: remove host while creating
* fix: unit tests
* fix: event in booking form
* chore: undo tests
* fix: type
* fix: move it inside
* Check for migrated username
* Add e2e for reserved username due to migration
* Add username change test
* Update username.ts
* fixed type checks
* Refactor to use isOrganization
* Typing
* Typing
* Removed the isOrganization function
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* Rename .env variables
* Remove instances of old variable names
* Add credential sync secret to request for new token
* Update invalid secret message
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* Implement secondary email
* Fix already existing tests failing
* Added tests for secondary email feature
* Skip email verification if user is changing the primary email to a verified secondary email
* Fix type errors in tests
* Fix email becoming unverified when switched between primary and secondary email
* Added a check to prevent prisma error from throwing up due to duplicate records
* Improved error handling when adding a secondary email
* Add test for resend verification email flow for secondary emails and validation of invite link
* Add a new column to link secondary emails with verification tokens
* Fix failing to update email to an unverified secondary email of the same user
* Fix failing tests
* Change text of resend verification email
* Add ability to use the verified secondary emails to get the event details to
* Fix type errors
* Fix failing e2e tests
* Fix failing unit tests
* Fix failing type checks
* Fix secondary verification email subject
* Fix failing e2e tests
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: Test flakiness due to unfilled name/email
* Better toast-success checks
* Revert "test: Create E2E tests for bookings with custom/required Phone + other questions (#11502)"
This reverts commit 614741d207.
* Revert "test: Create E2E tests for bookings with custom/required Multiple Emails + other questions (teste2e-multipleEmailQuestion) (#11565)"
This reverts commit d1d50b0d91.
* Revert "test: Create E2E tests for bookings with custom/required Long Text + other questions (teste2e-longTextQuestion) (#11559)"
This reverts commit 96810b5ba1.
* Revert "test: Check the webhook event tab and your funtionalities (#12433)"
This reverts commit 9db9204088.
* Re-instate regularBookings
* Fixtures used by other tests
* Removed dead code from regularBookings.ts
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* Fix calendar event included in the workflow, doesn't show the meeting link
* Fix type error
* fix public video call url
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* fix: Prevent duplicate bookings with idempotency key
* Add idempotencyKey to builder.ts type fix
* Add tests for new idempotency key (booking create)
* Add endTime to idempotency key, it should be possible to book different durations
* Move reschedule before the create so the idempotency key is unset
* feat:redirect - if signup url has url to goto
* fix: dont throw if url is invalid - just dont set
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* feat(db): add new col: user appTheme
* feat(event-types page): apply appTheme color
* add appTheme for trpc
* feat: mutate main page theme
* feat: add english translation for app theme update section
* modify keys in common (en)
* add woring
* Revert yarn.lock to its state before unintended changes
* feat(i18n): add back the i18n string (for dark/light mode switching)
* refactor: refactor ThemeLabel
* fix: add new user field "appTheme" to test files
* chore: modify TODO comment
* chore: update common.json (en) for "theme"
since we had appTheme now, I think it's better to update the wording here to avoid confusion
* fix: update button's data-testid to fix e2e test error
* chore: remove comment
* fix: fix brand-color-not-apply bug
* solve type error
* fix: fix type error
* fix: use correct storageKey for booker / dashboard
* fix: tidy up
* fix: skeleton
---------
Co-authored-by: swh00tw <a6140000@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* fix: No available users found
* Update getUserAvailability.ts
* Update getUserAvailability.ts
* Update handleNewBooking.ts
* Reusing the parsed dates throughout the full stack
* Fixed typo
* Added unit tests for stringToDayjs
* Fixing types
* Reverted the getSchedule utc change since that endpoint takes in UTC formatted dates but with a given timezone
* chore: Add test replicating 'no available users' error
* Test is passing
* Name clarifications
* Test clean up
* Update packages/features/bookings/lib/handleNewBooking.ts
Co-authored-by: Omar López <zomars@me.com>
* Update handleNewBooking.ts
* Fixed issue where date overrides ending at midnight don't allow bookings
* Removed comment
---------
Co-authored-by: Omar López <zomars@me.com>
* feat: Implement orgs/teams logoUrls
* Use getAvatarUrl in team/[slug]
* Extract uploadLogo to standalone file for reuse
* Allow removing the team/organisation logo
* fix: API build fail due to server-only, removed
* init
* typefix maybe
* fix type
* fix e2e
* Extract delete dialog to its own function to optimise rerender
* wip
* Delete isEqual
* adds eslint tsignore comment
* only update changed fields
* fix type err
* --WIP
* fix type err isLoading—>isPending
* isLoading—>isPending
* post conflict resoution fix
* shouldDirty minimumBookingNotice
* adds shouldDirty to setValues
* reset form to ensure updated default values
* shouldDirty changes and fixed deep check of dirty
* --WIP
* should dirty recurring
* shouldDirty team tab
* multiple-fixes
* adding console log to test something in e2e
* shouldDirty apps tab
* fixes managed event type children association
* fixed managed events update
* dirty managed fix
* fixes some onChange versus setValue and periodCountCalendarDays
* Seeing different behaviour explicitly unwrapping formState
* only mutate if at least 1 field dirty
* fix type error
* bunch of fixes
* --WIP
* update only dirtyFields for Managed Events existing children
* Fixes update old managed event type tests --WIP
* Fix unit tests
A bunch of unit test fixes which started failing
due to update fields only requiring actual updated
fields. some other small fixes also included
* type fix
* remove unnecessary comment
* Adds dirtyField to instant event
* fix: add shouldDirty
* fixes availability and team tabs, and disable save button unless dirty
* fix for hosts and bookerLayout
* add shouldDirty when resetting hosts after changing schedulingType
* add missing shouldDirty to useEventTypeDestinationCalendarEmail
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* Updated useTypedQuery to store values to localstorage
* removed the redundant function params
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* rule for Prisma that includes using only "true" and not a field selector
* Removed Skiff from the app store
* Apply suggestions from code review
* Delete packages/eslint-plugin/src/rules/disallow-prisma-include-only-true-not-field-selector.ts
---------
Co-authored-by: Peer Richelsen <peer@cal.com>
* set the selectedDuration in store to duration passed in query
* Pass durationConfig prop to Booker component in /team/[slig]/[type] pages
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: prevent signing up multiple times from same account
* revert: lark calendar changes
* credential clean up if duplicate
* fix code duplication and check before credential creation
* feat: useRouterQuery allow unset queryParam
* feat: showToast on account duplication attempt
* Small tweak to copy
* Updated other calendars not to use checkDuplicateCalendar
* Add account already linked to apps/installed/calendar
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* fix: filtering events bug in bookings page
* fix: handle edge case if we change hosts in event-settings/assignment
* update: handled edge case
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* fix: Ensure event type duplication respects private link setting
* chode refactor
* Fix: Handler throwing error on creating duplicate of a collective event having private-link switched on.
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* perf: Don't process date overrides outside of requested boundaries
* Added ability to skip override calculations when not used
* Only instantiating utc date for overrides once
* Removed performance tracing
* Cleanup
* Fixed broken tests
* Fix type
* In process of fixing types
* Types
* Fixed types
* Removed unnecessary performance.now() call
* Changed override date check to use isBetween
* Attempting to fix availability test
* Put code back to test availability
* Put back isBetween because confirmed it wasn't triggering the new test failures
* Removed date check to see if this is breaking it
* Put the code back since the test failed without it too
* Skipping test to unblock pipeline unless research is done
* Removed steps to test
* Removing the piece around the troubleshooter
* 1 more try
* Adding an extra wait
* Took out the boolean check to see if that's the issue
* Put back the check
* Trying to isolate the problem
* Changed how the test loads the troubleshooter
* Changed to OR to capture range better
* Using the proper date instead of 1/1/1970
* Update availability.e2e.ts
* use same lucky user + check availability
* add tests for recurring round robin events
* only use luckyUsers for recurring bookings
* don't check availability for all recurring dates
* code clean up
* pass schedulingType
* fix type error
* add availability check for fixed hosts + test
* fix type error
* implement feedback
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* fix#13507 'Invalid event length' when creating dynamic events with a 1 hour duration
* Fix failing e2e tests by dynamically injecting lengths for dynamic events
--amend 1: misc indentation cleanup
--amend 2: Added condition to only update event metadata when slug is dynamic and multipleDuration is empty
* Override the multipleDuration property while constructing the dynamicEvent object itself
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* fix: payload cleanup
* Update eventType.ts
* Send whitelisted fields everywhere
* Removed a user select
* Removed extra usage of users
* Put back user field with fewer selects
* Added user pick
* Removed more users selects
* Another select removal
---------
Co-authored-by: Hariom <hariombalhara@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* fix: don't display setup page icon for these apps
* chore: make it optional
* chore: feedback
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* Fix event-type listing not working
* Automatic reload of the app when being added to a different organization
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* chore: uses safeGet to be more explicit
* Update apps/web/middleware.ts
* Update apps/web/middleware.ts
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* Fix routing-form access restrictions
* Update packages/app-store/routing-forms/pages/routing-link/[...appPages].tsx
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* Fix routing form access issue for users who are never migrated
* Improve comment
* wip
* Fix event-type listing not working
* Automatic reload of the app when being added to a different organization
---------
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Add profile table
Copy to profile table
Update schema
Migrations
* wip
* Get switcher working
* Add organization seeder
* wip
* Remove dead code
* Fix unit tests
* relevantProfile -> profile
* cache bust
* One more comment
* Squash migrations
* Copy to profile table
* Update schema
* Fix existing user invite flow
* Add profile table
* Copy to profile table
* Update schema
* Format
* Add profile table
Copy to profile table
Update schema
Migrations
* Format
* wip
Get switcher working
Add organization seeder
wip
Remove dead code
Fix unit tests
relevantProfile -> profile
cache bust
One more comment
Squash migrations
Copy to profile table
Update schema
Fix existing user invite flow
Add profile table
Copy to profile table
Update schema
chore: small improvements to signup (#13227)
* removed features on mobile, better background color
* nit
* dark mode nits
New Crowdin translations by Github Action
fix: event reschedule workflow trigger (#13122)
* fix event reschedule workflow trigger
* uncomment previously failed test
* review fix
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
chore: added community support to help (#13213)
refactor: Abstract `handleSeats` from `handleNewBooking` (#12062)
* Refactor createBooking
* Type fix
* Abstract handleSeats
* Create Invitee type
* Create OrganizerUser type
* Abstract addVideoCallDataToEvt
* Abstract createLoggerWithEventDetails
* Abstract `handleAppStatus` from handler
* Create ReqAppsStatus type
* Move `deleteMeeting` and `getCalendar`
* Set parameters for `handleSeats`
* Typescript refactor
* Change function params from req
* Type fix
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Erik <erik@erosemberg.com>
fix: Dynamic group booking org-migration redirect (#13223)
* fix: Dynamic group booking redirect
* Fix flaky private team test
test: Check availability tab and all your functions (teste2e-availability) (#12434)
* add changes
* add changes
* add changes
* add changes
* Requested changes
* Change way to grab element
---------
Co-authored-by: gitstart-calcom <gitstart-calcom@users.noreply.github.com>
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
fix: Reschedule a cancelled booking (#13170)
* fix: Reschedule a cancelled booking
* canceled instead of cancelled
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
v3.7.0
test: In Team Event type when location is Organizer Default App and U… (#12939)
* test: In Team Event type when location is Organizer Default App and User Metadata is emoty
* chore: use variable
* fix: type error
test: add test for invalid cal video (#13103)
* test: add test for invalid cal video
* chore: add confirm
* chore: fix type error
* chore: update code
* test: add unit test
* chore: type error
* chore
* chore: type
* chore: fix test
* chore
---------
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
chore: add error message for no availability (#13230)
* chore: add error message for no default user availability
* chore: check only availability
* chore: change message
* chore: add eventType
fix: Team revert with members (#13228)
refactor: Refactor seats logic (#12905)
* Refactor createBooking
* Type fix
* Abstract handleSeats
* Create Invitee type
* Create OrganizerUser type
* Abstract addVideoCallDataToEvt
* Abstract createLoggerWithEventDetails
* Abstract `handleAppStatus` from handler
* Create ReqAppsStatus type
* Move `deleteMeeting` and `getCalendar`
* Set parameters for `handleSeats`
* Typescript refactor
* Change function params from req
* Type fix
* Move handleSeats
* Abstract lastAttendeeDeleteBooking
* Create function for rescheduling seated events
* Fix imports on reschedule seats function
* Fix imports
* Import handleSeats function
* Fix rescheduleUid type
* Refactor owner reschedule to new time slot
* Refactor combine two booking times together
* Reschedule as an attendee
* Refactor createNewSeat
* Remove old handleSeats
* Remove lastAttendeeDeleteBooking from handleNewBooking
* Test for new attendee right params are passed
* Unit test params for reschedule
* Typo fix
* Clean up
* Create new seat test
* Test when attendee already signs up for booking
* Type fix
* Test reschedule move attendee to existing booking
* On reschedule create new booking
* Test on last attendee cancel booking
* Owner reschedule to new time slot
* Owner rescheduling, merge two bookings together
* Test: when merging more than available seats, then fail
* Test: fail when event is full
* Remove duplicate E2E tests
* Clean up
* Rename `addVideoCallDataToEvt` to `addVideoCallDataToEvent`
* Refactor `calcAppsStatus`
* Assign `evt` to resutl of `addVideoCallDataToEvent`
* Use prisma.transaction when moving attendees
* Clean create seat call
* Use ErrorCode enum
* Use attendeeRescheduledSeatedBooking function
* Await function
* Prevent double triggering of workflows
* Use inviteeToAdd in createNewSeat
* Remove unused error code
* Remove old handleSeats file
* Type fix
* Type fix
* Type fix
* Type fix
* Type fix
* Type fix
* Type fix
* Type fix
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Erik <erik@erosemberg.com>
feat: Allow admins to filter bookings only by attendee emails (#13236)
* chore: Allow admins to filter bookings only by attendee emails
* Fix type error
Fixed [CAL-2930] Org branding isnt centered in shell #13225 (#13237)
Add profile table
Copy to profile table
Update schema
Migrations
Format
* wip
* Add profile relation everywhere
* Fix schema
* Fix invite handler
* Add profileId during eventTypec reation
* Get dashboard working with profile relatioon
* Add workflow create repository
* Add profileId to host
* Add profileId to credential table
* Add destinationCalendar repository
* Add profileId to membership
* Revert all profile related changes
* Add acme and dunder
* Fix membership profileId usgae
* Various fixes
* Some renaming
* Fix failing tests
* Debugging next-aut
* Consolidate migrations
* Testing fixes
* Fix unit tests
* Self review feedback
* PR feedback
* Fix orgMigration as well
* Add profile schema and copy users to it
* Remove migrations from here
* Fix type issues
* Fix type error after main merge
* Remove movedFromUserId
* Add missing migration file
* Self review addressed
* Joe's review addressed
* Fix profile switcher
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* Get `onErrorReturnTo` URL
* If no code return to previous page
* On invalid permissions, return to previous page
* When not enough permissions given, invalidate the credential created
* Type fix
* Stripe go back to previous page on cancel
* Clean up console.logs
* Add early returns when redirecting
---------
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* feat: Disallow next month prefetching in booker
* renamed to include NEXT_PUBLIC
* fixed boolean expression
* Now using a variable length of days to load
* Type fixes
* Now opening all dates to be clickable
* Added turbo.json var and updated example env
* Fixed issue with selectedDate being null when first loading the page
* Updated description of variable
* Made constant for the booking days
* Type fix
* Setting the days to load for weekly view to 7
* feat: add ui and ability to fetch more on click
* feat: add ui and ability to fetch more on click
* fix: loader
* fix: banner detection
* Update packages/features/bookings/Booker/Booker.tsx
* fix: types
* Not showing HavingTroubleFindingTime component when the schedule is loading
* Only enabled on monthly view
* Correctly load initial date
* Type fix
* Fixed bugs around triggering multiple requests
* Added case for when there is no selectedDate but the month has been specified
* Types
* More types
* Check for undefined
* More typing
* More typing
---------
Co-authored-by: sean-brydon <sean@cal.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* add tests for responsive layout
* test: Create E2E tests to check the responsive design for a regular booking and edit a regular event type
* test: Create E2E tests to check the responsive design for a regular booking and edit a regular event type
* test: Create E2E tests to check the responsive design for a regular booking and edit a regular event type
* Create tests
* Create tests
* Create tests
* add changes
---------
Co-authored-by: gitstart-calcom <gitstart-calcom@users.noreply.github.com>
Co-authored-by: GitStart-Cal.com <121884634+gitstart-calcom@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* feat: make org members list private
* fix: add isOrg to MakeTeamPrivateSwitch in other-team-members-view
---------
Co-authored-by: supalarry <lauris.skraucis@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: event api accepts invalid start & end values
* fix: unit tests
* test: added 'event length check during booking'
* test: fix unit test
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* fixed some of the terms language
* minor changes
* Update apps/web/pages/settings/organizations/[id]/onboard-admins.tsx
* fixed yarn
* nit
* fix: trans
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
## What does this PR do?
- This PR migrates the `/auth/sso/*` page group to the app directory (which runs under the App Router).
- The migrated page exists under `/future/auth/sso/*` and is accessible at all times.
## Requirement/Documentation
- If there is a requirement document, please, share it here.
- If there is ab UI/UX design document, please, share it here.
## Type of change
- [x] Chore (refactoring code, technical debt, workflow improvements)
- [x] New feature (non-breaking change which adds functionality)
## How should this be tested?
There should be no changes between the old sso and new sso routes in terms of content and no downgrading in terms of performance.
The pages were not tested due to being unable to reproduce the flow locally.
## Mandatory Tasks
- [x] Make sure you have self-reviewed the code. A decent size PR without self-review might be rejected.
## What does this PR do?
- This PR migrates the `/auth/logout` and `/auth/signin` pages to the app directory (which runs under the App Router).
- Using `/future/auth/logout` is available at all times and is supposed to log the user out as `/auth/logout` page does.
- However `signin` page (or fragment) was used before should behave the same using the `/future/auth/signin` route.
## Requirement/Documentation
- If there is a requirement document, please, share it here.
- If there is ab UI/UX design document, please, share it here.
## Type of change
- [x] Chore (refactoring code, technical debt, workflow improvements)
- [x] New feature (non-breaking change which adds functionality)
## How should this be tested?
- Using `/future/auth/logout` is available at all times and is supposed to log the user out as `/auth/logout` page does.
- However `signin` page (or fragment) was used before should behave the same using the `/future/auth/signin` route. It was not tested locally.
## Mandatory Tasks
- [x] Make sure you have self-reviewed the code. A decent size PR without self-review might be rejected.
## What does this PR do?
- This PR migrates the `/auth/verify` and `/auth/verify-email` pages to the app directory (which runs under the App Router).
- The migrated pages exist under `/future/auth/verify` and `/future/auth/verify-email` and are accessible at all times.
## Requirement/Documentation
- If there is a requirement document, please, share it here.
- If there is ab UI/UX design document, please, share it here.
## Type of change
- [x] Chore (refactoring code, technical debt, workflow improvements)
- [x] New feature (non-breaking change which adds functionality)
## How should this be tested?
There should be no changes between the old verify and new verify routes in terms of content and no downgrading in terms of performance.
The pages were not tested due to being unable to reproduce the flow locally.
## Mandatory Tasks
- [x] Make sure you have self-reviewed the code. A decent size PR without self-review might be rejected.
> I'm in the core Team of inlang
## Fix inlang's configuration file
We changed the `project.inlang.json` to a `settings.json` in a `project.inlang` dir. This enables the inlang project to store app information or metadata in a dir that is not relevant to you as an end user.
#### Old
```tree
├── project.inlang.json
```
#### New
```tree
├── project.inlang
│ ├── settings.json
```
* add impersonation in the dropdown menu
* add logo
* fix another minor issue
* Update UsersTable.tsx
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
This adds tests for the following utils found in `core`:
- event utils
- getAggregateWorkingHours
- getCalendarsEvents
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
## What does this PR do?
<!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. -->
Fixes # (issue)
<!-- Please provide a loom video for visual changes to speed up reviews
Loom Video: https://www.loom.com/
-->
## Requirement/Documentation
<!-- Please provide all documents that are important to understand the reason of that PR. -->
- If there is a requirement document, please, share it here.
- If there is ab UI/UX design document, please, share it here.
## Type of change
<!-- Please delete bullets that are not relevant. -->
- Bug fix (non-breaking change which fixes an issue)
- Chore (refactoring code, technical debt, workflow improvements)
- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing functionality to not work as expected)
- Tests (Unit/Integration/E2E or any other test)
- This change requires a documentation update
## How should this be tested?
<!-- Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration. Write details that help to start the tests -->
- Are there environment variables that should be set?
- What are the minimal test data to have?
- What is expected (happy path) to have (input and output)?
- Any other important info that could help to test that PR
## Mandatory Tasks
- [ ] Make sure you have self-reviewed the code. A decent size PR without self-review might be rejected.
## Checklist
<!-- Remove bullet points below that don't apply to you -->
- I haven't read the [contributing guide](https://github.com/calcom/cal.com/blob/main/CONTRIBUTING.md)
- My code doesn't follow the style guidelines of this project
- I haven't commented my code, particularly in hard-to-understand areas
- I haven't checked if my PR needs changes to the documentation
- I haven't checked if my changes generate no new warnings
- I haven't added tests that prove my fix is effective or that my feature works
- I haven't checked if new and existing unit tests pass locally with my changes
* Refactor createBooking
* Type fix
* Abstract handleSeats
* Create Invitee type
* Create OrganizerUser type
* Abstract addVideoCallDataToEvt
* Abstract createLoggerWithEventDetails
* Abstract `handleAppStatus` from handler
* Create ReqAppsStatus type
* Move `deleteMeeting` and `getCalendar`
* Set parameters for `handleSeats`
* Typescript refactor
* Change function params from req
* Type fix
* Move handleSeats
* Abstract lastAttendeeDeleteBooking
* Create function for rescheduling seated events
* Fix imports on reschedule seats function
* Fix imports
* Import handleSeats function
* Fix rescheduleUid type
* Refactor owner reschedule to new time slot
* Refactor combine two booking times together
* Reschedule as an attendee
* Refactor createNewSeat
* Remove old handleSeats
* Remove lastAttendeeDeleteBooking from handleNewBooking
* Test for new attendee right params are passed
* Unit test params for reschedule
* Typo fix
* Clean up
* Create new seat test
* Test when attendee already signs up for booking
* Type fix
* Test reschedule move attendee to existing booking
* On reschedule create new booking
* Test on last attendee cancel booking
* Owner reschedule to new time slot
* Owner rescheduling, merge two bookings together
* Test: when merging more than available seats, then fail
* Test: fail when event is full
* Remove duplicate E2E tests
* Clean up
* Rename `addVideoCallDataToEvt` to `addVideoCallDataToEvent`
* Refactor `calcAppsStatus`
* Assign `evt` to resutl of `addVideoCallDataToEvent`
* Use prisma.transaction when moving attendees
* Clean create seat call
* Use ErrorCode enum
* Use attendeeRescheduledSeatedBooking function
* Await function
* Prevent double triggering of workflows
* Use inviteeToAdd in createNewSeat
* Remove unused error code
* Remove old handleSeats file
* Type fix
* Type fix
* Type fix
* Type fix
* Type fix
* Type fix
* Type fix
* Type fix
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Erik <erik@erosemberg.com>
* test: add test for invalid cal video
* chore: add confirm
* chore: fix type error
* chore: update code
* test: add unit test
* chore: type error
* chore
* chore: type
* chore: fix test
* chore
---------
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* Refactor createBooking
* Type fix
* Abstract handleSeats
* Create Invitee type
* Create OrganizerUser type
* Abstract addVideoCallDataToEvt
* Abstract createLoggerWithEventDetails
* Abstract `handleAppStatus` from handler
* Create ReqAppsStatus type
* Move `deleteMeeting` and `getCalendar`
* Set parameters for `handleSeats`
* Typescript refactor
* Change function params from req
* Type fix
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Erik <erik@erosemberg.com>
* don't allow uid update in bookings update api
* omit uid from schemaBookingEditBodyParams instead of updating schemaBookingBaseBodyParams
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* manual: app-directory-boilerplate-calcom
* manual: import components directly
* manual: move files to correct route groups and add metadata
* manual: Change structure & Refactor to make code up to date
* manual: refactors
* Fix
* manual: fix type of arg of getData
* manual: fix type error
* fix type bugs
* fix
* fixing the build
* wip
---------
Co-authored-by: Greg Pabian <35925521+grzpab@users.noreply.github.com>
* add check for already used slug
* Update _patch.ts
Removed comment that added no value based on the code. Renamed const
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* fix the fluctuations in sidebar when we scroll main content
* fix: reduced vertical padding instead of
TOP_BANNER_HEIGHT
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* add utcOffset in webhook
* add utcOffset in webhook
* fix type
* fix type
* fix function error
* fix: UTCOffset DST
* getUTCOffsetByTimezone support date param
* add startTime in `getUTCOffsetByTimezone` func
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* intuita codemod: remove-get-static-props
* intuita codemod: app-directory-boilerplate-calcom
* manual: refactor and add metadata title/description
* manual: Change structure & Refactor to make code up to date
* intuita codemod: app-directory-boilerplate-calcom
* manual: move folders to (settings-layout) route group
* manual: add title/description metadata
* manual: Change structure & Refactor to make code up to date
* intuita codemod: app-directory-boilerplate-codemod
* manual: move to (settings-layout) route group
* manual: add title/description metadata
* manual: Change structure & Refactor to make code up to date
* feat-profile-forwarding
* fix for promises of handling
* fix badge success color
* clean up
* fix suggested changes
* Changed design on booking-forward pages and moar test
* taking care of suggested changes, trpc errors and code cleaning
* improve text
* fix conflicting data-testid
* fix unique data-testid
* fix error css-global, email button styles, error conditional
* rename files to match functionality, remove away ui
* Add translations and migration
* remove log
* small fixes + improvements
* fix styles to match new design
* merge fixes
* Fix styles dark mode
* Solving merge conflicts from earlier
* Fix/change test to match new elements
* use trash icon button insted of dots (design issues)
* only send email if toUserId is set
* Fix date picker dark mode
* merge with remote
* removed status field from table and email its now for notify
* small text improvement in email
* check for team plan not paid plan
* fixes and clean up due to removing status
* fix old send request name to new behaviour
* more naming improvements and text
* remove status from handle-type
* code clean up
* fix type error
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* fix: Button re-enables on sluggish networks whilst re-direct is happening
* Add explanatory comment
* fix: Booking form validation can take a while
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* intuita codemod: app-directory-boilerplate-calcom
* manual: add title and description metadata for each page
* manual: move between folders
* manual: finalize migration
* manual: fix client components
* manual: Change structure & Refactor to make code up to date
---------
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* Update UserAvatar and remove org avatar
* Update Imports
* Fix imports to use calcom/ui
* type: fix imports
* fix: use testId on profile
* test: use image src instead of innerHTML
* fix: Allow alt on useravatar
* test: add testId to org profile
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Move orgMigration routes to app to allow them to be tested as they are here to stay for longer tim
* move to Form everywhere and fix session reading
---------
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* fix: Ensure generated Cal Video link matches expected pattern on booking confirmation
* fix: missing Google Meet videoCallUrl in webhooks on booking confirmation
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* chore: Inherit secrets for assigning team labels
* Added workflow_call for testing
* Added this branch for testing
* Moved secrets label
* Trying to set permissions differently
* Removed testing branch
* feat: integrate formbricks in help feedback box
* Update yarn.lock
* Update yarn.lock
* fix: use formbricks/api@v1.1 & set user with userId linked to feedback
* fix: use separate env vars as suggested
* test: Add more orgs tests (#12241)
* feat: integrate formbricks in help feedback box
* Update yarn.lock
* fix: yarn lockfile
* fix: yarn lockfile again
* feat: link cal and formbricks user.id and add attributes of email and username to formbricks person object
* Update yarn.lock
* Update yarn.lock
* fix: type safety in enums
---------
Co-authored-by: Peer Richelsen <peer@cal.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* doc: Add Tunnelmole as an open source alternative to ngrok plus minor grammar fixes
* Update README.md
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* add workflows to bookingScenario
* activate sandbox mode for unit/integreation tests
* add sendgrid specific code to SendgridProvider
* Refactor WIP
* remove duplicate sendgridProvider file
* first implementation for testing workflows
* revert unintended changes
* comment out Workflow trigger tests
* move sendgrid check after test mode
* Update signup.tsx
* fix esLint
* test webhooks on all tests in fresh-booking.test.ts
* fix subjectPattern as title can be different
* add workflow tests to reschedule.test.ts
* code clean up
* code clean up
* fix sendgrid credentials missing message
* code clean up
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* fix: managed event type string
* Update EventTypeSingleLayout.tsx
Updated the translation string with the right value.
* Update EventTypeSingleLayout.tsx
Bring back formMethods variable.
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
This reverts commit 0d3baee593.
Revert "fix: temp renamed app dir to prevent OOM"
This reverts commit 0d3baee593.
Revert "fix: temp renamed app dir to prevent OOM"
This reverts commit 0d3baee593.
Revert "fix: temp renamed app dir to prevent OOM"
This reverts commit 0d3baee593.
* fix: join subteam as their respective organization role
* refactor code
* fix: join subteam as their respective organization role
* fix: join subteam as their respective organization role for pending members
* fix: Set subteam role to admin when updating organization role to admin
* refactor: suggested changes and fix type error
* fix: type error
* chore: Moved e2e suite to run on pushes to main
* Update yarn.lock
* Small cleanup
* Moved production build without database to pre-release
* Added name to script
* Added changes, lint and build dependencies
* Add metadata to bookingMinimalSelect
* add: Show link location in /bookings
* Refactor: Update variable declaration and conditional rendering in booking metadata
- Remove explicit type declaration in locationVideoCallUrl assignment
- Use conditional rendering for provider icon based on iconUrl existence
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* Display URL location exclusively, omitting addresses
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: type error
* chore
* Dont run future tests
* Skip more tests
* Fix 404 text
* Fix more tests
---------
Co-authored-by: Hariom <hariombalhara@gmail.com>
* fix: allow API access to creating a team that you are a member of
* update roles allowed to create event types
* add back comment
* revert yarn.lock
---------
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Fix toolbar
* Slide animation
* Animate out and fix selection model
* Disable on mobile - fix tablet position
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: change booking page filter ui to match figma
* fix: style change for filters in mobile
* made all changes requested by reviewers
* fix: add clear filter
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* test: booking and frequency limits e2e
* test: refactor limit e2e and check multiple
* test: move limits e2e to separate file
* fix: blocked day assertions
* chore: rename to booking-limits
* fix: use todo test util
* chore: un-DRY tests
* feat: create user with limits helper
* chore: move user limit helper to utils
* fix: multiple limits test
* feat: fail faster
* chore: event url helper
* fix: prismock count date comparisons
* chore: improve booking limit types in test utils
* test: add typed weekStart to getOrganizer helper
* test: add custom fromDate to getDate helper
* fix: correctly handle negative date increments
* test: add helper for partial weeks
* test: booking limits edge cases
* chore: remove booking limit e2e todos
* chore: normalize getDate return type and skip test
* Fix imports paths that are changes after main merge
* Fix failing types
* Skip failing test
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
* refactor booking details api middleware to use team member booking join
Signed-off-by: titanventura <aswath7862001@gmail.com>
* fix. security issue in previous commit. check for booking against current user. then check for team booking
Signed-off-by: titanventura <aswath7862001@gmail.com>
---------
Signed-off-by: titanventura <aswath7862001@gmail.com>
* fix: adding team members from organization tab that alredy exist
* changed organizations.listOtherTeamMembers from useQuery to useInfiniteQuery
* undo yarn.lock
* fix: invalidate the organizations.getMembers query on removeMember and inviteMember Mutation
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
* fix divider border for addOnLeading
* fix primary button in dark mode and password input border
* signup dark mode and corner fix
* onboarding dark mode
* fix css var issue and use inline vars for light and dark mode
* Invert google icon on dark mode
* Fix typo
* fix eslint errors with yarn lint:fix
* use css vars on login page as well
* running lint manually
* Fix subtle
* Fix
* Fix
* linting
* linting
* chore: restore main yarn.lock
* fix: lint error
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Sean Brydon <sean@brydon.io>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: sean-brydon <sean@cal.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* add wrapper for sentry and update functions in 'getUserAvailability'. Update tracesSampleRate to 1.0
* Make Sentry Wrapper utilize parent transaction, if it exists.
* Update wrapper for functions to inherit parameters from the child function
* add comment of when to use the wrapper
* check for sentry before wrapping, if not call unwrapped function
* refactored wrapper to have async and sync separate functions that utilize helpers for common behaviour
* update type of args to unknown
* fixed types of returns from wrapped functions
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* improved team upgrade screen to also show unpublished teams
* Update TeamsListing.tsx
* bunch of stuff
---------
Co-authored-by: Omar López <zomars@me.com>
## What does this PR do?
<!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. -->
In anticipation of refactoring `handleSeats` we need to abstract `createBooking` in order to get the return type. This PR is purposely aiming to do one thing so nothing is missed while refactoring `handleNewBooking`
Fixes # (issue)
<!-- Please provide a loom video for visual changes to speed up reviews
Loom Video: https://www.loom.com/
-->
## Requirement/Documentation
<!-- Please provide all documents that are important to understand the reason of that PR. -->
- If there is a requirement document, please, share it here.
- If there is ab UI/UX design document, please, share it here.
## Type of change
<!-- Please delete bullets that are not relevant. -->
- [x] Chore (refactoring code, technical debt, workflow improvements)
## How should this be tested?
<!-- Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration. Write details that help to start the tests -->
- Are there environment variables that should be set?
- What are the minimal test data to have?
- What is expected (happy path) to have (input and output)?
- Any other important info that could help to test that PR
## Mandatory Tasks
- [ ] Make sure you have self-reviewed the code. A decent size PR without self-review might be rejected.
## Checklist
<!-- Please remove all the irrelevant bullets to your PR -->
- I haven't read the [contributing guide](https://github.com/calcom/cal.com/blob/main/CONTRIBUTING.md)
- My code doesn't follow the style guidelines of this project
- I haven't commented my code, particularly in hard-to-understand areas
- I haven't checked if my PR needs changes to the documentation
- I haven't checked if my changes generate no new warnings
- I haven't added tests that prove my fix is effective or that my feature works
- I haven't checked if new and existing unit tests pass locally with my changes
# - Acquire a commercial license to remove these terms by visiting: cal.com/sales
#
# To enable enterprise-only features, as an admin, go to /auth/setup to select your license and follow
# instructions. This environment variable is deprecated although still supported for backward compatibility.
# @see https://console.cal.com
# To enable enterprise-only features please add your environment variable to the .env file then make your way to /auth/setup to select your license and follow instructions.
CALCOM_LICENSE_KEY=
# Signature token for the Cal.com License API (used for self-hosted integrations)
# We will give you a token when we provide you with a license key this ensure you and only you can communicate with the Cal.com License API for your license key
# This variable should only be set to 1 or true if you are in a non-prod environment and you want to
# use organizations
ORGANIZATIONS_ENABLED=
NEXT_PUBLIC_ORGANIZATIONS_MIN_SELF_SERVE_SEATS=30
NEXT_PUBLIC_ORGANIZATIONS_SELF_SERVE_PRICE_NEW=37# $37.00 per seat
# This variable should only be set to 1 or true if you want to autolink external provider sing-ups with
# This variable should only be set to 1 or true if you want to autolink external provider sign-ups with
# existing organizations based on email domain address
ORGANIZATIONS_AUTOLINK=
@@ -244,6 +317,18 @@ PROJECT_ID_VERCEL=
TEAM_ID_VERCEL=
# Get it from: https://vercel.com/account/tokens
AUTH_BEARER_TOKEN_VERCEL=
# Add the main domain that you want to use for testing vercel domain management for organizations. This is necessary because WEBAPP_URL of local isn't a valid public domain
# Would create org1.example.com for an org with slug org1
# LOCAL_TESTING_DOMAIN_VERCEL="example.com"
## Set it to 1 if you use cloudflare to manage your DNS and would like us to manage the DNS for you for organizations
# CLOUDFLARE_DNS=1
## Get it from: https://dash.cloudflare.com/profile/api-tokens. Select Edit Zone template and choose a zone(your domain)
# AUTH_BEARER_TOKEN_CLOUDFLARE=
## Zone ID can be found in the Overview tab of your domain in Cloudflare
# CLOUDFLARE_ZONE_ID=
## It should usually work with the default value. This is the DNS CNAME record content to point to Vercel domain
# Set this to the link of a working Daily Video meeting link
CAL_VIDEO_MEETING_LINK_FOR_TESTING=
# Used to use lingo.dev SDK, a tool for real-time AI-powered localization
LINGO_DOT_DEV_API_KEY=
# Comma-separated list of DSyncData.directoryId to log SCIM API requests for. It can be enabled temporarily for debugging the requests being sent to SCIM server.
DIRECTORY_IDS_TO_LOG=
# Set this when Cal.com is used to serve only one organization's booking pages
# Read more about it in the README.md
NEXT_PUBLIC_SINGLE_ORG_SLUG=
IFFY_API_KEY=
## Env variables related to avoiding booking failures
# Request for checking reservation would be attempted to send every these seconds if the request is stale at that time
NEXT_PUBLIC_QUERY_RESERVATION_INTERVAL_SECONDS=
# Request for checking reservation of same slot would be sent only after this time has passed. It must be lower than PUBLIC_QUERY_RESERVATION_INTERVAL_SECONDS
NEXT_PUBLIC_QUERY_RESERVATION_STALE_TIME_SECONDS=
# Query available slots interval - Should be kept high in minutes as it could cause significant load on the system
- If this issue has a `🚨 needs approval` label, don't start coding yet. Wait until a core member approves feature request by removing this label, then you can start coding.
- For clarity: Non-core member issues automatically get the `🚨 needs approval` label.
- Your feature ideas are invaluable to us! However, they undergo review to ensure alignment with the product's direction.
- Follow Best Practices lined out in our [Contributor Docs](https://github.com/calcom/cal.com/blob/main/CONTRIBUTING.md)
about:Suggest a feature or bug report for cal.com/platform
title:""
labels:["platform","🚨 needs approval"]
assignees:""
---
### Is your proposal related to a problem?
<!--
Provide a clear and concise description of what the problem is.
For example, "I'm always frustrated when..."
-->
(Write your answer here.)
### Describe the solution you'd like
<!--
Provide a clear and concise description of what you want to happen.
-->
(Describe your proposed solution here.)
### Describe alternatives you've considered
<!--
Let us know about other solutions you've tried or researched.
-->
(Write your answer here.)
### Additional context
<!--
Is there anything else you can add about the proposal?
You might want to link to related issues here, if you haven't already.
-->
(Write your answer here.)
### Requirement/Document
<!--
Is there any type of document that could support that feature?
-->
(Share it here.)
---
##### House rules
- If this issue has a `🚨 needs approval` label, don't start coding yet. Wait until a core member approves feature request by removing this label, then you can start coding.
- For clarity: Non-core member issues automatically get the `🚨 needs approval` label.
- Your feature ideas are invaluable to us! However, they undergo review to ensure alignment with the product's direction.
- Follow Best Practices lined out in our [Contributor Docs](https://github.com/calcom/cal.com/blob/main/CONTRIBUTING.md)
<!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. -->
Fixes # (issue)
-Fixes #XXXX (GitHub issue number)
- Fixes CAL-XXXX (Linear issue number - should be visible at the bottom of the GitHub issue description)
<!-- Please provide a loom video for visual changes to speed up reviews
Loom Video: https://www.loom.com/
-->
## Visual Demo (For contributors especially)
## Requirement/Documentation
A visual demonstration is strongly recommended, for both the original and new change **(video / image - any one)**.
<!-- Please provide all documents that are important to understand the reason of that PR. -->
#### Video Demo (if applicable):
-If there is a requirement document, please, share it here.
-If there is ab UI/UX design document, please, share it here.
-Show screen recordings of the issue or feature.
-Demonstrate how to reproduce the issue, the behavior before and after the change.
## Type of change
#### Image Demo (if applicable):
<!-- Please delete bullets that are not relevant. -->
- Add side-by-side screenshots of the original and updated change.
- Highlight any significant change(s).
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ]New feature (non-breaking change which adds functionality)
- [ ]Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ]This change requires a documentation update
## Mandatory Tasks (DO NOT REMOVE)
- [ ]I have self-reviewed the code (A decent size PR without self-review might be rejected).
- [ ]I have updated the developer docs in /docs if this PR makes changes that would require a [documentation change](https://cal.com/docs). If N/A, write N/A here and check the checkbox.
- [ ]I confirm automated tests are in place that prove my fix is effective or that my feature works.
## How should this be tested?
@@ -34,10 +34,6 @@ Fixes # (issue)
- What is expected (happy path) to have (input and output)?
- Any other important info that could help to test that PR
## Mandatory Tasks
- [ ] Make sure you have self-reviewed the code. A decent size PR without self-review might be rejected.
## Checklist
<!-- Remove bullet points below that don't apply to you -->
@@ -45,7 +41,4 @@ Fixes # (issue)
- I haven't read the [contributing guide](https://github.com/calcom/cal.com/blob/main/CONTRIBUTING.md)
- My code doesn't follow the style guidelines of this project
- I haven't commented my code, particularly in hard-to-understand areas
- I haven't checked if my PR needs changes to the documentation
- I haven't checked if my changes generate no new warnings
- I haven't added tests that prove my fix is effective or that my feature works
- I haven't checked if new and existing unit tests pass locally with my changes
run:echo "This workflow triggers a workflow_run; it's necessary because otherwise the repo secrets aren't available for 'pull_request_review' events from externally forked pull requests"
Thank you for following the naming conventions! 🙏 Feel free to join our [discord](https://go.cal.com/discord) and post your PR link to [collect XP and win prizes!](https://cal.com/blog/community-incentives)
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.