* 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>
* 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
* 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
* 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>
* 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>
* 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>
* 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>
* 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
* 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>
* 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>
* 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>
* 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>