4e82ffe2adf53daa0cacbd79274f438142ca929f
29
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
b3be9a93e0 | chore: expose metadata on platform booker atom (#16673) | ||
|
|
111e2f30c6 |
feat: overlay calendar for Booker atom (#16551)
* add prop to see if overlay calendar is enabled * fix merge conflicts * overlay calendar enabled prop * cleanup * hide toggle group if platform * remove isPlatform conditional for overlay calendar * dont display overlay calendar continue modal for platform * fix images not appearing for platform * update booker store * update booker * update booker * shifting variables from booker store to useOverlayCalendar store * update booker platform wrapper * update booking page view * revert changes to overlay calendar store * update typings * update toggle set value * update handler to toggle connected calendar * fixup * update booker layout * fixup! Merge branch 'main' into overlay-calendar-for-booker-atom --------- Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com> Co-authored-by: Morgan Vernay <morgan@cal.com> |
||
|
|
105e7d3e28 | chore: booker atom username / teams props enabled queries (#16514) | ||
|
|
f81074c4f5 |
feat: destination calendar settings for CalendarSettings atom (#16133)
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com> Co-authored-by: Morgan Vernay <morgan@cal.com> Co-authored-by: Peer Richelsen <peeroke@gmail.com> |
||
|
|
0b03bcb90e |
feat: CalendarSettings atom (#16120)
* dumb components for calendar settings * shadcn switch * update exports * update packages * add calendar settings atom to examples app * init calendar settings atom * refactors * fix import path * export type for calendar switch props * invalidate queries on deleting calendar credentials * replace calendars list with calendar settings wrapper * cleanup * update styling * refactors * cleanup * fix: missing key prop CalendarSettingsPlatformWrapper * Label as client components * Address client component build errors * Move QueryCell out of packages/lib * PR feedback * more feedback --------- Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com> Co-authored-by: Morgan Vernay <morgan@cal.com> Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com> |
||
|
|
da5df7164a |
perf: use svg sprite for icons (#16135)
Co-authored-by: zomars <zomars@me.com> |
||
|
|
2f946fc5da |
feat: platform team event-types (#15928)
* 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> |
||
|
|
fa06f38d47 |
fix: refresh connect atoms on token change (#15933)
* added dropdown * change comment * fix: added types --------- Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com> Co-authored-by: Keith Williams <keithwillcode@gmail.com> |
||
|
|
492304fe1d |
feat: BookerEmbed atom (#15689)
* init: booker embed atom * update booker platform wrapper * export booker embed for atoms * update booker embed wrapper * fixup: refresh url not needed * rename booker embed * add global styles * export not needed * add booker embed atoms in examples app * fixup * fixup! fixup * fixup! fixup! fixup --------- Co-authored-by: Rajiv Sahal <rajivsahal@Rajivs-MacBook-Pro.local> Co-authored-by: Morgan Vernay <morgan@cal.com> Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com> |
||
|
|
5e382ffd21 |
feat: apple calendar connect atom (#15510)
* 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> |
||
|
|
0072aba55d |
refactor: v2 event-types (#15457)
* 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> |
||
|
|
d2d7453962 |
feat: add date overrides to availability settings atom (#15459)
* 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> |
||
|
|
7d4e8e2210 |
feat: outlook 365 connect atom (#15318)
* custom for office 365 connect atom * office 365 connect atom * add office 365 atom to package exports * fixup * fixup * fixup fixup * refactors * chore: refactor connect atoms * fixup * chore: refactor connect, enable custom redir * fixup! Merge branch 'outlook-365-calendar-frontend' of github.com:calcom/cal.com into outlook-365-calendar-frontend * fixup! fixup! Merge branch 'outlook-365-calendar-frontend' of github.com:calcom/cal.com into outlook-365-calendar-frontend --------- Co-authored-by: Rajiv Sahal <rajivsahal@Rajivs-MacBook-Pro.local> Co-authored-by: Morgan Vernay <morgan@cal.com> Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com> |
||
|
|
726af4970c |
fix: sync book event form values with bookingData (#14945)
* fix: sync book event form values with bookingData * fixup! fix: sync book event form values with bookingData |
||
|
|
a2620a0e50 |
feat: atoms team booking (#14525)
* 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> |
||
|
|
be128181e2 |
feat: booker atom custom location (#14635)
* 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> |
||
|
|
e3e464abfa |
fix: booker atoms using next/router (#14612)
* fix: booker OOO using next/router * fixup! fix: booker OOO using next/router |
||
|
|
f2eebe95bd | chore: Adds deprecated-imports-next-router (#14486) | ||
|
|
38e62786e4 |
chore: remove /ee from apiv2 urls (#14568)
* chore: remove /ee from apiv2 urls * fixup! chore: remove /ee from apiv2 urls * chore: remove /ee from apiv2 urls * fixup! chore: remove /ee from apiv2 urls * fixup! fixup! chore: remove /ee from apiv2 urls * fixup! fixup! fixup! chore: remove /ee from apiv2 urls |
||
|
|
621067acd8 |
fix: platform gcal connect reconnect credentials (#14513)
* fix: enable gcal connect to reconnect revoked google credentials * feat: callback to react when check fails |
||
|
|
b748b8d077 | chore: AtomsWrapper to scope css (#14490) | ||
|
|
8382ebc057 |
refactor: v2 docs (#14446)
* refactor: group endpoints by tags * refactor: remove swagger header * feat: managed users docs * feat: gcal docs * feat: provider docs * feat: managed users docs * fix: event-types locations docs * refactor: schedules remove forAtom logic - return just for atoms * feat: schedules docs * feat: schedules docs * fix: me tests * fix: schedules tests * feat: me docs * feat: calendar busy times docs * feat: calendar connected and destination calendars docs * feat: some docs for bookings endpoints * fix: add OAuth id when updating user email + disallow updating username * fix: creating user with same e-mail results in 500 * fix: me e2e tests * fix: event-types e2e tests * fix: oauth-client-users e2e tests * fix: some bookings e2e * revert: re-add name for create update user * fix: schedule create isDefault required * lock file from main * lock file from main * comment broken bookings tests * fix: connected calendars output type * fix: connected calendars output type |
||
|
|
33d0fee43e |
chore: add styling to examples app (#14252)
* add styling to examples app * prettier homepage --------- Co-authored-by: Morgan Vernay <morgan@cal.com> |
||
|
|
ccc8cdc1ff | chore: rename platform endpoints provider/gcal (#14248) | ||
|
|
cc2164657c |
feat: platform endpoints to fetch/cancel/reschedule bookings and hooks (#14164)
* 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> |
||
|
|
0223db1f7c |
feat: v2 api endpoints and hooks to list private and public event types of user (#14192)
* 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> |
||
|
|
75c3c596c2 |
feat: display connected calendars on platform calendars page (#14203)
* feat: display connected calendars on platform calendars page * fixup! feat: display connected calendars on platform calendars page |
||
|
|
74e5f4bf37 |
feat: atoms as npm package (#14160)
* 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 |
||
|
+24 |
0a15483c46 |
feat: platform atoms + api v2 (#14106)
* 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> |