From 259d52a9550ba4cf981ba964736266c775f93a2d Mon Sep 17 00:00:00 2001 From: Richard Poelderl Date: Wed, 27 Mar 2024 14:22:54 +0100 Subject: [PATCH 001/482] update docs for `yarn.lock` management --- CONTRIBUTING.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eb52da8d6ff687..7eac25c49301ed 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,8 +13,6 @@ Contributions are what makes the open source community such an amazing place to - Issues from non-core members automatically receive the `🚨 needs approval` label. - We greatly value new feature ideas. To ensure consistency in the product's direction, they undergo review and approval. - - ## Priorities @@ -178,11 +176,15 @@ If you get errors, be sure to fix them before committing. Do not commit your `yarn.lock` unless you've made changes to the `package.json`. If you've already committed `yarn.lock` unintentionally, follow these steps to undo: If your last commit has the `yarn.lock` file alongside other files and you only wish to uncommit the `yarn.lock`: + ```bash git checkout HEAD~1 yarn.lock git commit -m "Revert yarn.lock changes" ``` + +_NB_: You may have to bypass the pre-commit hook with by appending `--no-verify` to the git commit If you've pushed the commit with the `yarn.lock`: + 1. Correct the commit locally using the above method. 2. Carefully force push: @@ -194,26 +196,35 @@ If `yarn.lock` was committed a while ago and there have been several commits sin 1. **Checkout a Previous Version**: - Find the commit hash before the `yarn.lock` was unintentionally committed. You can do this by viewing the Git log: + ```bash git log yarn.lock ``` + - Once you have identified the commit hash, use it to checkout the previous version of `yarn.lock`: + ```bash git checkout yarn.lock ``` 2. **Commit the Reverted Version**: - After checking out the previous version of the `yarn.lock`, commit this change: + ```bash git commit -m "Revert yarn.lock to its state before unintended changes" ``` 3. **Proceed with Caution**: - If you need to push this change, first pull the latest changes from your remote branch to ensure you're not overwriting other recent changes: + ```bash git pull origin ``` + - Then push the updated branch: + ```bash git push origin ``` + +Lastly, make sure to keep the branches updated (e.g. click the `Update branch` button on GitHub PR). From 018f51e0262f93ccc7626d64455f0d048fd44417 Mon Sep 17 00:00:00 2001 From: Abhijeet Singh Date: Tue, 23 Apr 2024 04:12:54 +0530 Subject: [PATCH 002/482] fix: browser back button not working (#13345) * fixed the browser back button not woking * fix back button * added shouldReplace param to query-params helper. * revert yarn.lock * fix: test --------- Co-authored-by: Peer Richelsen Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Co-authored-by: Keith Williams Co-authored-by: Alex van Andel Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com> Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> Co-authored-by: Udit Takkar --- packages/features/bookings/Booker/Booker.tsx | 4 ++++ packages/features/bookings/Booker/store.ts | 4 ++-- .../bookings/Booker/utils/query-param.ts | 24 ++++++++++++++----- packages/features/calendars/DatePicker.tsx | 4 +++- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/packages/features/bookings/Booker/Booker.tsx b/packages/features/bookings/Booker/Booker.tsx index f8378fad9e3b4d..1fe2c1695091d4 100644 --- a/packages/features/bookings/Booker/Booker.tsx +++ b/packages/features/bookings/Booker/Booker.tsx @@ -140,6 +140,10 @@ const BookerComponent = ({ return setBookerState("booking"); }, [event, selectedDate, selectedTimeslot, setBookerState]); + const slot = getQueryParam("slot"); + useEffect(() => { + setSelectedTimeslot(slot || null); + }, [slot, setSelectedTimeslot]); const EventBooker = useMemo(() => { return bookerState === "booking" ? ( ((set, get) => ({ }); updateQueryParam("month", month); updateQueryParam("date", selectedDate ?? ""); - updateQueryParam("slot", selectedTimeslot ?? ""); + updateQueryParam("slot", selectedTimeslot ?? "", false); } //removeQueryParam("layout"); }, @@ -332,7 +332,7 @@ export const useBookerStore = create((set, get) => ({ selectedTimeslot: getQueryParam("slot") || null, setSelectedTimeslot: (selectedTimeslot: string | null) => { set({ selectedTimeslot }); - updateQueryParam("slot", selectedTimeslot ?? ""); + updateQueryParam("slot", selectedTimeslot ?? "", false); }, formValues: {}, setFormValues: (formValues: Record) => { diff --git a/packages/features/bookings/Booker/utils/query-param.ts b/packages/features/bookings/Booker/utils/query-param.ts index da098e5f7f9f70..8da4d8c59b7862 100644 --- a/packages/features/bookings/Booker/utils/query-param.ts +++ b/packages/features/bookings/Booker/utils/query-param.ts @@ -1,14 +1,20 @@ -export const updateQueryParam = (param: string, value: string | number) => { +export const updateQueryParam = (param: string, value: string | number, shouldReplace = true) => { if (typeof window === "undefined") return; const url = new URL(window.location.href); + if (url.searchParams.get(param) === value) return; + if (value === "" || value === "null") { - url.searchParams.delete(param); + removeQueryParam(param, shouldReplace); + return; } else { url.searchParams.set(param, `${value}`); } - - window.history.pushState({}, "", url.href); + if (shouldReplace) { + window.history.replaceState({ ...window.history.state, as: url.href }, "", url.href); + } else { + window.history.pushState({ ...window.history.state, as: url.href }, "", url.href); + } }; export const getQueryParam = (param: string) => { @@ -17,10 +23,16 @@ export const getQueryParam = (param: string) => { return new URLSearchParams(window.location.search).get(param); }; -export const removeQueryParam = (param: string) => { +export const removeQueryParam = (param: string, shouldReplace = true) => { if (typeof window === "undefined") return; const url = new URL(window.location.href); + if (!url.searchParams.get(param)) return; + url.searchParams.delete(param); - window.history.pushState({}, "", url.href); + if (shouldReplace) { + window.history.replaceState({ ...window.history.state, as: url.href }, "", url.href); + } else { + window.history.pushState({ ...window.history.state, as: url.href }, "", url.href); + } }; diff --git a/packages/features/calendars/DatePicker.tsx b/packages/features/calendars/DatePicker.tsx index 08a44879867421..837b9144d65337 100644 --- a/packages/features/calendars/DatePicker.tsx +++ b/packages/features/calendars/DatePicker.tsx @@ -235,7 +235,9 @@ const Days = ({ // If selected date not available in the month, select the first available date of the month props.onChange(firstAvailableDateOfTheMonth); } - + if (isSelectedDateAvailable) { + props.onChange(dayjs(selected)); + } if (!firstAvailableDateOfTheMonth) { props.onChange(null); } From c3911085774734abd1354e9f4735efedeee2d9ff Mon Sep 17 00:00:00 2001 From: Hariom Balhara Date: Tue, 23 Apr 2024 15:06:12 +0530 Subject: [PATCH 003/482] fix: Add navigatedToBooker event and fix infinite loop of events (#14694) ## What does this PR do? 1. cal.com/sales page is a special case where embed-iframe exists in top as well as in iframe. This causes a looping of events somehow due to embed-iframe firing events and those being received by the top embed-iframe. 2. Added new `navigatedToBooker` event to know when the user lands on booker page. Corresponding PR in website that uses `navigatedToBooker` event and has a demo as well https://github.com/calcom/website/pull/741 Earlier added `routed` event seems to happen too early ## Type of change - Bug fix (non-breaking change which fixes an issue) ## How should this be tested? - Simply navigate to booker and wait for the event. ## Mandatory Tasks - [x] Make sure you have self-reviewed the code. A decent size PR without self-review might be rejected. ## Tests - Didn't add any tests for this as the changed seems straightforward ## Checklist - I haven't added tests that prove my fix is effective or that my feature works --- packages/embeds/embed-core/src/embed-iframe.ts | 10 +++++++++- packages/embeds/embed-core/src/sdk-action-manager.ts | 1 + packages/platform/atoms/booker/BookerWebWrapper.tsx | 7 ++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/embeds/embed-core/src/embed-iframe.ts b/packages/embeds/embed-core/src/embed-iframe.ts index a4d72bf32c52b5..709d8552004c92 100644 --- a/packages/embeds/embed-core/src/embed-iframe.ts +++ b/packages/embeds/embed-core/src/embed-iframe.ts @@ -508,7 +508,10 @@ function keepParentInformedAboutDimensionChanges() { }); } -if (isBrowser) { +function main() { + if (!isBrowser) { + return; + } log("Embed SDK loaded", { isEmbed: window?.isEmbed?.() || false }); const url = new URL(document.URL); embedStore.theme = window?.getEmbedTheme?.(); @@ -523,6 +526,9 @@ if (isBrowser) { // If embed link is opened in top, and not in iframe. Let the page be visible. if (top === window) { unhideBody(); + // We would want to avoid a situation where Cal.com embeds cal.com and then embed-iframe is in the top as well. In such case, we would want to avoid infinite loop of events being passed. + log("Embed SDK Skipped as we are in top"); + return; } window.addEventListener("message", (e) => { @@ -618,3 +624,5 @@ function connectPreloadedEmbed({ url }: { url: URL }) { const isPrerendering = () => { return new URL(document.URL).searchParams.get("prerender") === "true"; }; + +main(); diff --git a/packages/embeds/embed-core/src/sdk-action-manager.ts b/packages/embeds/embed-core/src/sdk-action-manager.ts index 90172b176194df..95d82aecf44f50 100644 --- a/packages/embeds/embed-core/src/sdk-action-manager.ts +++ b/packages/embeds/embed-core/src/sdk-action-manager.ts @@ -60,6 +60,7 @@ export type EventDataMap = { actionType: "customPageMessage" | "externalRedirectUrl" | "eventTypeRedirectUrl"; actionValue: string; }; + navigatedToBooker: Record; "*": Record; __routeChanged: Record; __windowLoadComplete: Record; diff --git a/packages/platform/atoms/booker/BookerWebWrapper.tsx b/packages/platform/atoms/booker/BookerWebWrapper.tsx index b8dc486d1a068c..ba1fb17e9159a3 100644 --- a/packages/platform/atoms/booker/BookerWebWrapper.tsx +++ b/packages/platform/atoms/booker/BookerWebWrapper.tsx @@ -1,10 +1,11 @@ import { useSession } from "next-auth/react"; import { useSearchParams } from "next/navigation"; import { usePathname, useRouter } from "next/navigation"; -import { useMemo, useCallback } from "react"; +import { useMemo, useCallback, useEffect } from "react"; import { shallow } from "zustand/shallow"; import dayjs from "@calcom/dayjs"; +import { sdkActionManager } from "@calcom/embed-core/embed-iframe"; import type { BookerProps } from "@calcom/features/bookings/Booker"; import { Booker as BookerComponent } from "@calcom/features/bookings/Booker"; import { useBookerLayout } from "@calcom/features/bookings/Booker/components/hooks/useBookerLayout"; @@ -39,6 +40,10 @@ export const BookerWebWrapper = (props: BookerWebWrapperAtomProps) => { typeof window !== "undefined" ? new URLSearchParams(window.location.search).get("bookingUid") : null; const date = dayjs(selectedDate).format("YYYY-MM-DD"); + useEffect(() => { + sdkActionManager?.fire("navigatedToBooker", {}); + }, []); + useInitializeBookerStore({ ...props, eventId: event?.data?.id, From 0a3a91fd4b9283f13bba4795045fc0ef9f9b16fb Mon Sep 17 00:00:00 2001 From: sean-brydon <55134778+sean-brydon@users.noreply.github.com> Date: Tue, 23 Apr 2024 17:13:10 +0100 Subject: [PATCH 004/482] feat: improve error handling for signup events (#14668) * feat: improve error handling for signup events * chore: fix typo --- apps/web/lib/signup/getServerSideProps.tsx | 10 ++++++++-- apps/web/pages/auth/error.tsx | 15 +++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/apps/web/lib/signup/getServerSideProps.tsx b/apps/web/lib/signup/getServerSideProps.tsx index 685326625c59cf..6e4377bf227ee5 100644 --- a/apps/web/lib/signup/getServerSideProps.tsx +++ b/apps/web/lib/signup/getServerSideProps.tsx @@ -53,7 +53,10 @@ export const getServerSideProps = async (ctx: GetServerSidePropsContext) => { if ((process.env.NEXT_PUBLIC_DISABLE_SIGNUP === "true" && !token) || signupDisabled) { return { - notFound: true, + redirect: { + permanent: false, + destination: `/auth/error?error=Signup is disabled in this instance`, + }, } as const; } @@ -98,7 +101,10 @@ export const getServerSideProps = async (ctx: GetServerSidePropsContext) => { if (!verificationToken || verificationToken.expires < new Date()) { return { - notFound: true, + redirect: { + permanent: false, + destination: `/auth/error?error=Verification Token is missing or has expired`, + }, } as const; } diff --git a/apps/web/pages/auth/error.tsx b/apps/web/pages/auth/error.tsx index c1b23fab25912e..0a849c3661cd23 100644 --- a/apps/web/pages/auth/error.tsx +++ b/apps/web/pages/auth/error.tsx @@ -1,8 +1,8 @@ import type { GetStaticPropsContext } from "next"; import Link from "next/link"; +import { useSearchParams } from "next/navigation"; import z from "zod"; -import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { Button, Icon } from "@calcom/ui"; @@ -17,11 +17,9 @@ const querySchema = z.object({ export default function Error() { const { t } = useLocale(); - const searchParams = useCompatSearchParams(); - const { error } = querySchema.parse(searchParams); - const isTokenVerificationError = error?.toLowerCase() === "verification"; - const errorMsg = isTokenVerificationError ? t("token_invalid_expired") : t("error_during_login"); - + const searchParams = useSearchParams(); + const { error } = querySchema.parse({ error: searchParams?.get("error") || undefined }); + const errorMsg = error || t("error_during_login"); return (
@@ -30,11 +28,8 @@ export default function Error() {
-
-

{errorMsg}

-
From 69eab7bc818affd78bcb8b4c913b21e0bc5ce0f0 Mon Sep 17 00:00:00 2001 From: Peer Richelsen Date: Tue, 23 Apr 2024 17:14:12 +0100 Subject: [PATCH 005/482] changed translation (#14710) Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> --- apps/web/modules/videos/views/videos-single-view.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/modules/videos/views/videos-single-view.tsx b/apps/web/modules/videos/views/videos-single-view.tsx index 7a7ff1a972e9e2..ecb1b65f93ace3 100644 --- a/apps/web/modules/videos/views/videos-single-view.tsx +++ b/apps/web/modules/videos/views/videos-single-view.tsx @@ -49,8 +49,8 @@ export default function JoinCall(props: PageProps) { ...(typeof meetingPassword === "string" && { token: meetingPassword }), customTrayButtons: { transcription: { - label: "Enable Transcription", - tooltip: "Toggle Transcription", + label: "Cal.ai", + tooltip: "Enable transcription powered by AI", iconPath: `${WEBAPP_URL}/sparkles.svg`, iconPathDarkMode: `${WEBAPP_URL}/sparkles.svg`, }, From 2c7bfdd9ce52255681a403a58e683704a5e3db06 Mon Sep 17 00:00:00 2001 From: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> Date: Tue, 23 Apr 2024 13:54:45 -0400 Subject: [PATCH 006/482] chore: `EventManager` add `cancelEvent` method (#14261) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix timezone display on booking page to reflect event availability timezone * migrate fetching event owner's schedule to server side * migrate fetching event owner's schedule to server side * fix e2e test errors * Add WEBAPP_URL_FOR_OAUTH to salesforce auth * In event manager constructor include "_crm" credentials as calendar creds * Change crm apps to type to end with `_crm` * Move sendgrid out of CRM * Add zoho bigin to CRM apps * When getting apps, use slug * Add `crm` variants * Hubspot Oauth use `WEBAPP_URL_FOR_OAUTH` * Refactor creating credentials * Fix empty CRM page * Use credentials with `_crm` * Abstract getAppCategoryTitle * Add integration.handler changes * When searching for credential, look for current credentials in class * On cancel, delete 3rd party events * Fix tests * Type fix * Type fixes * Remove apiDeletes * Type fixes * Specific typing --------- Co-authored-by: Shaik-Sirajuddin Co-authored-by: Shaik-Sirajuddin 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 --- packages/core/EventManager.ts | 160 +++++++++++------- .../getAllCredentials.ts | 9 +- .../bookings/lib/handleCancelBooking.ts | 119 ++----------- 3 files changed, 116 insertions(+), 172 deletions(-) diff --git a/packages/core/EventManager.ts b/packages/core/EventManager.ts index 251b23258711b8..662a1de8e66d09 100644 --- a/packages/core/EventManager.ts +++ b/packages/core/EventManager.ts @@ -1,4 +1,4 @@ -import type { DestinationCalendar } from "@prisma/client"; +import type { DestinationCalendar, BookingReference } from "@prisma/client"; // eslint-disable-next-line no-restricted-imports import { cloneDeep, merge } from "lodash"; import { v5 as uuidv5 } from "uuid"; @@ -246,25 +246,36 @@ export default class EventManager { } private async deleteCalendarEventForBookingReference({ - bookingCalendarReference, + reference, event, + isBookingInRecurringSeries, }: { - bookingCalendarReference: PartialReference; + reference: PartialReference; event: CalendarEvent; + isBookingInRecurringSeries?: boolean; }) { log.debug( "deleteCalendarEventForBookingReference", - safeStringify({ bookingCalendarReference, event: getPiiFreeCalendarEvent(event) }) + safeStringify({ bookingCalendarReference: reference, event: getPiiFreeCalendarEvent(event) }) ); const { - uid: bookingRefUid, + // uid: bookingRefUid, externalCalendarId: bookingExternalCalendarId, credentialId, type: credentialType, - } = bookingCalendarReference; + } = reference; - const calendarCredential = await this.getCredentialAndWarnIfNotFound(credentialId, credentialType); + const bookingRefUid = + isBookingInRecurringSeries && reference?.thirdPartyRecurringEventId + ? reference.thirdPartyRecurringEventId + : reference.uid; + + const calendarCredential = await this.getCredentialAndWarnIfNotFound( + credentialId, + this.calendarCredentials, + credentialType + ); if (calendarCredential) { await deleteEvent({ credential: calendarCredential, @@ -275,17 +286,14 @@ export default class EventManager { } } - private async deleteVideoEventForBookingReference({ - bookingVideoReference, - }: { - bookingVideoReference: PartialReference; - }) { - log.debug("deleteVideoEventForBookingReference", safeStringify({ bookingVideoReference })); - const { uid: bookingRefUid, credentialId } = bookingVideoReference; + private async deleteVideoEventForBookingReference({ reference }: { reference: PartialReference }) { + log.debug("deleteVideoEventForBookingReference", safeStringify({ bookingVideoReference: reference })); + const { uid: bookingRefUid, credentialId } = reference; const videoCredential = await this.getCredentialAndWarnIfNotFound( credentialId, - bookingVideoReference.type + this.videoCredentials, + reference.type ); if (videoCredential) { @@ -293,32 +301,41 @@ export default class EventManager { } } - private async getCredentialAndWarnIfNotFound(credentialId: number | null | undefined, type: string) { - const credential = - typeof credentialId === "number" && credentialId > 0 - ? await prisma.credential.findUnique({ - where: { - id: credentialId, - }, - select: credentialForCalendarServiceSelect, + private async getCredentialAndWarnIfNotFound( + credentialId: number | null | undefined, + credentials: CredentialPayload[], + type: string + ) { + const credential = credentials.find((cred) => cred.id === credentialId); + if (credential) { + return credential; + } else { + const credential = + typeof credentialId === "number" && credentialId > 0 + ? await prisma.credential.findUnique({ + where: { + id: credentialId, + }, + select: credentialForCalendarServiceSelect, + }) + : // Fallback for zero or nullish credentialId which could be the case of Global App e.g. dailyVideo + this.videoCredentials.find((cred) => cred.type === type) || + this.calendarCredentials.find((cred) => cred.type === type) || + null; + + if (!credential) { + log.error( + "getCredentialAndWarnIfNotFound: Could not find credential", + safeStringify({ + credentialId, + type, + videoCredentials: this.videoCredentials, }) - : // Fallback for zero or nullish credentialId which could be the case of Global App e.g. dailyVideo - this.videoCredentials.find((cred) => cred.type === type) || - this.calendarCredentials.find((cred) => cred.type === type) || - null; - - if (!credential) { - log.error( - "getCredentialAndWarnIfNotFound: Could not find credential", - safeStringify({ - credentialId, - type, - videoCredentials: this.videoCredentials, - }) - ); - } + ); + } - return credential; + return credential; + } } /** @@ -385,15 +402,15 @@ export default class EventManager { log.debug("RescheduleRequiresConfirmation: Deleting Event and Meeting for previous booking"); // As the reschedule requires confirmation, we can't update the events and meetings to new time yet. So, just delete them and let it be handled when organizer confirms the booking. await this.deleteEventsAndMeetings({ - booking, event: { ...event, destinationCalendar: previousHostDestinationCalendar }, + bookingReferences: booking.references, }); } else { if (changedOrganizer) { log.debug("RescheduleOrganizerChanged: Deleting Event and Meeting for previous booking"); await this.deleteEventsAndMeetings({ - booking, event: { ...event, destinationCalendar: previousHostDestinationCalendar }, + bookingReferences: booking.references, }); log.debug("RescheduleOrganizerChanged: Creating Event and Meeting for for new booking"); @@ -451,30 +468,57 @@ export default class EventManager { }; } + public async cancelEvent( + event: CalendarEvent, + bookingReferences: Pick< + BookingReference, + "uid" | "type" | "externalCalendarId" | "credentialId" | "thirdPartyRecurringEventId" + >[], + isBookingInRecurringSeries?: boolean + ) { + await this.deleteEventsAndMeetings({ + event, + bookingReferences, + isBookingInRecurringSeries, + }); + } + private async deleteEventsAndMeetings({ event, - booking, + bookingReferences, + isBookingInRecurringSeries, }: { event: CalendarEvent; - booking: PartialBooking; + bookingReferences: PartialReference[]; + isBookingInRecurringSeries?: boolean; }) { - const calendarReferences = booking.references.filter((reference) => reference.type.includes("_calendar")); - const videoReferences = booking.references.filter((reference) => reference.type.includes("_video")); - log.debug("deleteEventsAndMeetings", safeStringify({ calendarReferences, videoReferences })); - const calendarPromises = calendarReferences.map(async (bookingCalendarReference) => { - return this.deleteCalendarEventForBookingReference({ - bookingCalendarReference, - event, - }); - }); + const calendarReferences = [], + videoReferences = [], + allPromises = []; + + for (const reference of bookingReferences) { + if (reference.type.includes("_calendar")) { + calendarReferences.push(reference); + allPromises.push( + this.deleteCalendarEventForBookingReference({ + reference, + event, + isBookingInRecurringSeries, + }) + ); + } - const videoPromises = videoReferences.map(async (bookingVideoReference) => { - return this.deleteVideoEventForBookingReference({ - bookingVideoReference, - }); - }); + if (reference.type.includes("_video")) { + videoReferences.push(reference); + allPromises.push( + this.deleteVideoEventForBookingReference({ + reference, + }) + ); + } + } - const allPromises = [...calendarPromises, ...videoPromises]; + log.debug("deleteEventsAndMeetings", safeStringify({ calendarReferences, videoReferences })); // Using allSettled to ensure that if one of the promises rejects, the others will still be executed. // Because we are just cleaning up the events and meetings, we don't want to throw an error if one of them fails. diff --git a/packages/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials.ts b/packages/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials.ts index 1f1b7cab6f74f2..b2a3e9b98bef41 100644 --- a/packages/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials.ts +++ b/packages/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials.ts @@ -1,6 +1,5 @@ import type { Prisma } from "@prisma/client"; -import type { getEventTypesFromDB } from "@calcom/features/bookings/lib/handleNewBooking"; import { UserRepository } from "@calcom/lib/server/repository/user"; import type { userSelect } from "@calcom/prisma"; import prisma from "@calcom/prisma"; @@ -14,13 +13,13 @@ type User = Prisma.UserGetPayload; * */ export const getAllCredentials = async ( - user: User & { credentials: CredentialPayload[] }, - eventType: Awaited> + user: { id: number; username: string | null; credentials: CredentialPayload[] }, + eventType: { team: { id: number | null } | null; parentId: number | null } | null ) => { const allCredentials = user.credentials; // If it's a team event type query for team credentials - if (eventType.team?.id) { + if (eventType?.team?.id) { const teamCredentialsQuery = await prisma.credential.findMany({ where: { teamId: eventType.team.id, @@ -31,7 +30,7 @@ export const getAllCredentials = async ( } // If it's a managed event type, query for the parent team's credentials - if (eventType.parentId) { + if (eventType?.parentId) { const teamCredentialsQuery = await prisma.team.findFirst({ where: { eventTypes: { diff --git a/packages/features/bookings/lib/handleCancelBooking.ts b/packages/features/bookings/lib/handleCancelBooking.ts index 9e66aa57cfe07f..3456170bc41935 100644 --- a/packages/features/bookings/lib/handleCancelBooking.ts +++ b/packages/features/bookings/lib/handleCancelBooking.ts @@ -1,10 +1,9 @@ import type { Prisma, WorkflowReminder } from "@prisma/client"; import type { NextApiRequest } from "next"; -import { getCalendar } from "@calcom/app-store/_utils/getCalendar"; import { FAKE_DAILY_CREDENTIAL } from "@calcom/app-store/dailyvideo/lib/VideoApiAdapter"; import { DailyLocationType } from "@calcom/app-store/locations"; -import { deleteMeeting } from "@calcom/core/videoClient"; +import EventManager from "@calcom/core/EventManager"; import dayjs from "@calcom/dayjs"; import { sendCancelledEmails } from "@calcom/emails"; import { getCalEventResponses } from "@calcom/features/bookings/lib/getCalEventResponses"; @@ -19,7 +18,6 @@ import type { EventTypeInfo } from "@calcom/features/webhooks/lib/sendPayload"; import { isPrismaObjOrUndefined, parseRecurringEvent } from "@calcom/lib"; import { getTeamIdFromEventType } from "@calcom/lib/getTeamIdFromEventType"; import { HttpError } from "@calcom/lib/http-error"; -import logger from "@calcom/lib/logger"; import { getTranslation } from "@calcom/lib/server/i18n"; import { getTimeFormatStringFromUserTimeFormat } from "@calcom/lib/timeFormat"; import prisma, { bookingMinimalSelect } from "@calcom/prisma"; @@ -29,6 +27,7 @@ import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/crede import { schemaBookingCancelParams } from "@calcom/prisma/zod-utils"; import type { CalendarEvent } from "@calcom/types/Calendar"; +import { getAllCredentials } from "./getAllCredentialsForUsersOnEvent/getAllCredentials"; import cancelAttendeeSeat from "./handleSeats/cancel/cancelAttendeeSeat"; async function getBookingToDelete(id: number | undefined, uid: string | undefined) { @@ -44,6 +43,7 @@ async function getBookingToDelete(id: number | undefined, uid: string | undefine user: { select: { id: true, + username: true, credentials: { select: credentialForCalendarServiceSelect }, // Not leaking at the moment, be careful with email: true, timeZone: true, @@ -421,108 +421,16 @@ async function handler(req: CustomRequest) { }); } - const apiDeletes = []; - - const bookingCalendarReference = bookingToDelete.references.filter((reference) => - reference.type.includes("_calendar") + const isBookingInRecurringSeries = !!( + bookingToDelete.eventType?.recurringEvent && + bookingToDelete.recurringEventId && + allRemainingBookings ); + const credentials = await getAllCredentials(bookingToDelete.user, bookingToDelete.eventType); - if (bookingCalendarReference.length > 0) { - for (const reference of bookingCalendarReference) { - const { credentialId, uid, externalCalendarId } = reference; - // If the booking calendar reference contains a credentialId - if (credentialId) { - // Find the correct calendar credential under user credentials - let calendarCredential = bookingToDelete.user.credentials.find( - (credential) => credential.id === credentialId - ); - if (!calendarCredential) { - // get credential from DB - const foundCalendarCredential = await prisma.credential.findUnique({ - where: { - id: credentialId, - }, - select: credentialForCalendarServiceSelect, - }); - if (foundCalendarCredential) { - calendarCredential = foundCalendarCredential; - } - } - if (calendarCredential) { - const calendar = await getCalendar(calendarCredential); - if ( - bookingToDelete.eventType?.recurringEvent && - bookingToDelete.recurringEventId && - allRemainingBookings - ) { - let thirdPartyRecurringEventId; - for (const reference of bookingToDelete.references) { - if (reference.thirdPartyRecurringEventId) { - thirdPartyRecurringEventId = reference.thirdPartyRecurringEventId; - break; - } - } - if (thirdPartyRecurringEventId) { - apiDeletes.push( - calendar?.deleteEvent(thirdPartyRecurringEventId, evt, externalCalendarId) as Promise - ); - } else { - const promises = bookingToDelete.user.credentials - .filter((credential) => credential.type.endsWith("_calendar")) - .map(async (credential) => { - const calendar = await getCalendar(credential); - for (const updBooking of updatedBookings) { - const bookingRef = updBooking.references.find((ref) => ref.type.includes("_calendar")); - if (bookingRef) { - const { uid, externalCalendarId } = bookingRef; - const deletedEvent = await calendar?.deleteEvent(uid, evt, externalCalendarId); - apiDeletes.push(deletedEvent); - } - } - }); - try { - await Promise.all(promises); - } catch (error) { - if (error instanceof Error) { - logger.error(error.message); - } - } - } - } else { - apiDeletes.push(calendar?.deleteEvent(uid, evt, externalCalendarId) as Promise); - } - } - } else { - // For bookings made before the refactor we go through the old behavior of running through each calendar credential - const calendarCredentials = bookingToDelete.user.credentials.filter((credential) => - credential.type.endsWith("_calendar") - ); - for (const credential of calendarCredentials) { - const calendar = await getCalendar(credential); - apiDeletes.push(calendar?.deleteEvent(uid, evt, externalCalendarId) as Promise); - } - } - } - } + const eventManager = new EventManager({ ...bookingToDelete.user, credentials }); - const bookingVideoReference = bookingToDelete.references.find((reference) => - reference.type.includes("_video") - ); - - // If the video reference has a credentialId find the specific credential - if (bookingVideoReference && bookingVideoReference.credentialId) { - const { credentialId, uid } = bookingVideoReference; - if (credentialId) { - const videoCredential = bookingToDelete.user.credentials.find( - (credential) => credential.id === credentialId - ); - - if (videoCredential) { - logger.debug("videoCredential inside cancel booking handler", videoCredential); - apiDeletes.push(deleteMeeting(videoCredential, uid)); - } - } - } + await eventManager.cancelEvent(evt, bookingToDelete.references, isBookingInRecurringSeries); const bookingReferenceDeletes = prisma.bookingReference.deleteMany({ where: { @@ -553,13 +461,6 @@ async function handler(req: CustomRequest) { const prismaPromises: Promise[] = [bookingReferenceDeletes]; try { - const temp = prismaPromises.concat(apiDeletes); - const settled = await Promise.allSettled(temp); - const rejected = settled.filter(({ status }) => status === "rejected") as PromiseRejectedResult[]; - if (rejected.length) { - throw new Error(`Reasons: ${rejected.map(({ reason }) => reason)}`); - } - // TODO: if emails fail try to requeue them if (!platformClientId || (platformClientId && arePlatformEmailsEnabled)) await sendCancelledEmails(evt, { eventName: bookingToDelete?.eventType?.eventName }); From e2ea4e72aa3f3bc5efe2a00a51ab7aff94bea2b7 Mon Sep 17 00:00:00 2001 From: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com> Date: Tue, 23 Apr 2024 15:48:44 -0400 Subject: [PATCH 007/482] feat: SMS/Whatsapp to attendee for teams (#14648) * remove event type requires confirmation * allow sms sending also for team (frontend) * allow text to attendee for team (backend) * add rate limiting for SMS (WIP) * add functionality to lock and unlock SMS sending (+admin UI view) * rename to smsLockState * add ability to lock users and teams * don't send sms if locked * add missing imports * fix rate limit namespace * add translation * fix type error * remove prop from UsersTable * add smsLockState to buildUser * code clean up * create seperate sms rate limit function * fix type error * add missing userId and teamId to sendSMS * code improvements * add User Team type * fix marking as reviewed * check monthly sms limit only for user * don't lock orgs * fix type error * fix avatars * fix type error * fix type error * fix type error --------- Co-authored-by: CarinaWolli Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> --- .../settings/admin/lockedSMS/UsersTable.tsx | 150 ++++++++++++++++++ .../pages/settings/admin/lockedSMS/index.tsx | 13 ++ .../admin/lockedSMS/lockedSMSView.tsx | 82 ++++++++++ apps/web/public/static/locales/en/common.json | 1 + .../bookings/lib/handleCancelBooking.ts | 1 - .../bookings/lib/handleConfirmation.ts | 1 - .../features/bookings/lib/handleNewBooking.ts | 1 - .../bookings/lib/handleSeats/handleSeats.ts | 1 - .../ee/workflows/api/scheduleSMSReminders.ts | 32 ++-- .../api/scheduleWhatsappReminders.ts | 52 +++--- .../workflows/components/AddActionDialog.tsx | 3 +- .../components/EventWorkflowsTab.tsx | 16 -- .../components/WorkflowStepContainer.tsx | 23 +-- .../ee/workflows/lib/actionHelperFunctions.ts | 5 +- .../features/ee/workflows/lib/getOptions.ts | 11 +- .../ee/workflows/lib/getWorkflowReminders.ts | 10 +- .../lib/reminders/providers/twilioProvider.ts | 89 ++++++++++- .../lib/reminders/reminderScheduler.ts | 22 +-- .../lib/reminders/smsReminderManager.ts | 31 ++-- .../lib/reminders/whatsappReminderManager.ts | 29 ++-- .../settings/layouts/SettingsLayout.tsx | 1 + .../settings/layouts/SettingsLayoutAppDir.tsx | 1 + packages/lib/checkRateLimitAndThrowError.ts | 54 +++++++ packages/lib/rateLimit.ts | 18 ++- packages/lib/test/builder.ts | 2 + .../migration.sql | 8 + packages/prisma/schema.prisma | 8 + .../server/routers/viewer/admin/_router.ts | 15 ++ .../getSMSLockStateTeamsUsers.handler.ts | 71 +++++++++ .../admin/getSMSLockStateTeamsUsers.schema.ts | 1 + .../viewer/admin/setSMSLockState.handler.ts | 90 +++++++++++ .../viewer/admin/setSMSLockState.schema.ts | 11 ++ .../viewer/workflows/update.handler.ts | 27 +--- .../ui/components/form/select/components.tsx | 11 +- 34 files changed, 726 insertions(+), 165 deletions(-) create mode 100644 apps/web/pages/settings/admin/lockedSMS/UsersTable.tsx create mode 100644 apps/web/pages/settings/admin/lockedSMS/index.tsx create mode 100644 apps/web/pages/settings/admin/lockedSMS/lockedSMSView.tsx create mode 100644 packages/prisma/migrations/20240417175106_add_sms_lock_state/migration.sql create mode 100644 packages/trpc/server/routers/viewer/admin/getSMSLockStateTeamsUsers.handler.ts create mode 100644 packages/trpc/server/routers/viewer/admin/getSMSLockStateTeamsUsers.schema.ts create mode 100644 packages/trpc/server/routers/viewer/admin/setSMSLockState.handler.ts create mode 100644 packages/trpc/server/routers/viewer/admin/setSMSLockState.schema.ts diff --git a/apps/web/pages/settings/admin/lockedSMS/UsersTable.tsx b/apps/web/pages/settings/admin/lockedSMS/UsersTable.tsx new file mode 100644 index 00000000000000..e0a639ac7d7405 --- /dev/null +++ b/apps/web/pages/settings/admin/lockedSMS/UsersTable.tsx @@ -0,0 +1,150 @@ +import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; +import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; +import { SMSLockState } from "@calcom/prisma/client"; +import { trpc } from "@calcom/trpc/react"; +import type { IconName } from "@calcom/ui"; +import { Avatar, DropdownActions, Table } from "@calcom/ui"; + +const { Cell, ColumnTitle, Header, Row } = Table; + +type Props = { + setSMSLockState: (param: { userId?: number; teamId?: number; lock: boolean }) => void; +}; + +type User = { + id: number; + username: string | null; + name: string | null; + email: string; + smsLockState: SMSLockState; + avatarUrl: string | null; +}; + +type Team = { + id: number; + name: string; + smsLockState: SMSLockState; + slug: string | null; + logoUrl?: string | null; +}; + +function UsersTable({ setSMSLockState }: Props) { + const { data: usersAndTeams } = trpc.viewer.admin.getSMSLockStateTeamsUsers.useQuery(); + + if (!usersAndTeams) { + return <>; + } + + const users = usersAndTeams.users.locked.concat(usersAndTeams.users.reviewNeeded); + const teams = usersAndTeams.teams.locked.concat(usersAndTeams.teams.reviewNeeded); + + return ; +} + +const LockStatusTable = ({ + users = [], + teams = [], + setSMSLockState, +}: { + users?: User[]; + teams?: Team[]; + setSMSLockState: (param: { userId?: number; teamId?: number; lock: boolean }) => void; +}) => { + function getActions({ user, team }: { user?: User; team?: Team }) { + const smsLockState = user?.smsLockState ?? team?.smsLockState; + if (!smsLockState) return []; + + const actions = [ + { + id: "unlock-sms", + label: smsLockState === SMSLockState.LOCKED ? "Unlock SMS sending" : "Lock SMS sending", + onClick: () => + setSMSLockState({ + userId: user ? user.id : undefined, + teamId: team ? team.id : undefined, + lock: smsLockState !== SMSLockState.LOCKED, + }), + icon: "lock" as IconName, + }, + ]; + if (smsLockState === SMSLockState.REVIEW_NEEDED) { + actions.push({ + id: "reviewed", + label: "Mark as Reviewed", + onClick: () => + setSMSLockState({ + userId: user ? user.id : undefined, + teamId: team ? team.id : undefined, + lock: false, + }), + icon: "pencil" as IconName, + }); + } + + return actions; + } + + return ( + <> +
+
+ User/Team + Status + + Edit + +
+ + + {users.map((user) => ( + + +
+ {" "} + +
+ {user.name} + /{user.username} +
+ {user.email} +
+
+
+ + {user.smsLockState} + + + +
+ ))} + {teams.map((team) => ( + + +
+ +
+ {team.name} + /team/{team.slug} +
+
+
+ {team.smsLockState} + + + +
+ ))} + +
+ + ); +}; +export default UsersTable; diff --git a/apps/web/pages/settings/admin/lockedSMS/index.tsx b/apps/web/pages/settings/admin/lockedSMS/index.tsx new file mode 100644 index 00000000000000..bb9f9b6f6c1078 --- /dev/null +++ b/apps/web/pages/settings/admin/lockedSMS/index.tsx @@ -0,0 +1,13 @@ +"use client"; + +import PageWrapper from "@components/PageWrapper"; +import { getLayout } from "@components/auth/layouts/AdminLayout"; + +import LockedSMSView from "./lockedSMSView"; + +const LockedSMSPage = () => ; + +LockedSMSPage.getLayout = getLayout; +LockedSMSPage.PageWrapper = PageWrapper; + +export default LockedSMSPage; diff --git a/apps/web/pages/settings/admin/lockedSMS/lockedSMSView.tsx b/apps/web/pages/settings/admin/lockedSMS/lockedSMSView.tsx new file mode 100644 index 00000000000000..079586abd632c3 --- /dev/null +++ b/apps/web/pages/settings/admin/lockedSMS/lockedSMSView.tsx @@ -0,0 +1,82 @@ +"use client"; + +import UsersTable from "@pages/settings/admin/lockedSMS/UsersTable"; +import { useState } from "react"; + +import { trpc } from "@calcom/trpc"; +import { Button, Meta, TextField, showToast } from "@calcom/ui"; + +export default function LockedSMSView() { + const [username, setUsername] = useState(""); + const [teamSlug, setTeamSlug] = useState(""); + + const utils = trpc.useContext(); + + const mutation = trpc.viewer.admin.setSMSLockState.useMutation({ + onSuccess: (data) => { + if (data) { + showToast(`${data.name} successfully ${data.locked ? "locked" : "unlocked"}`, "success"); + } + utils.viewer.admin.getSMSLockStateTeamsUsers.invalidate(); + }, + onError: (error) => { + showToast(`${error}`, "error"); + utils.viewer.admin.getSMSLockStateTeamsUsers.invalidate(); + }, + }); + + function setSMSLockState({ userId, teamId, lock }: { userId?: number; teamId?: number; lock: boolean }) { + mutation.mutate({ + userId, + teamId, + lock, + }); + } + + return ( +
+ +
+
+ setUsername(event.target.value)} + value={username} + /> + +
+
+ { + setTeamSlug(event.target.value); + }} + value={teamSlug} + /> + +
+
+ +
+ ); +} diff --git a/apps/web/public/static/locales/en/common.json b/apps/web/public/static/locales/en/common.json index 91779164e3bb04..bd79bbce90895d 100644 --- a/apps/web/public/static/locales/en/common.json +++ b/apps/web/public/static/locales/en/common.json @@ -2413,5 +2413,6 @@ "no_show_url_info":"The URL for No Show Feedback", "no_support_needed":"No Support Needed?", "hide_support":"Hide Support", + "lockedSMS": "Locked SMS", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/packages/features/bookings/lib/handleCancelBooking.ts b/packages/features/bookings/lib/handleCancelBooking.ts index 3456170bc41935..a368fea99609a2 100644 --- a/packages/features/bookings/lib/handleCancelBooking.ts +++ b/packages/features/bookings/lib/handleCancelBooking.ts @@ -316,7 +316,6 @@ async function handler(req: CustomRequest) { ...{ eventType: { slug: bookingToDelete.eventType.slug } }, }, hideBranding: !!bookingToDelete.eventType.owner?.hideBranding, - eventTypeRequiresConfirmation: bookingToDelete.eventType.requiresConfirmation, }); } diff --git a/packages/features/bookings/lib/handleConfirmation.ts b/packages/features/bookings/lib/handleConfirmation.ts index d2c0f394a3a12d..fb85e1b319e76e 100644 --- a/packages/features/bookings/lib/handleConfirmation.ts +++ b/packages/features/bookings/lib/handleConfirmation.ts @@ -288,7 +288,6 @@ export async function handleConfirmation(args: { calendarEvent: evtOfBooking, isFirstRecurringEvent: isFirstBooking, hideBranding: !!updatedBookings[index].eventType?.owner?.hideBranding, - eventTypeRequiresConfirmation: true, }); } } catch (error) { diff --git a/packages/features/bookings/lib/handleNewBooking.ts b/packages/features/bookings/lib/handleNewBooking.ts index 21d7c929a50887..8f5090ed8bb06a 100644 --- a/packages/features/bookings/lib/handleNewBooking.ts +++ b/packages/features/bookings/lib/handleNewBooking.ts @@ -2354,7 +2354,6 @@ async function handler( isFirstRecurringEvent: true, hideBranding: !!eventType.owner?.hideBranding, seatReferenceUid: evt.attendeeSeatId, - eventTypeRequiresConfirmation: eventType.requiresConfirmation, }); } catch (error) { loggerWithEventDetails.error("Error while scheduling workflow reminders", JSON.stringify({ error })); diff --git a/packages/features/bookings/lib/handleSeats/handleSeats.ts b/packages/features/bookings/lib/handleSeats/handleSeats.ts index ae96d4ab4f1cc7..81d8e62fd2e19a 100644 --- a/packages/features/bookings/lib/handleSeats/handleSeats.ts +++ b/packages/features/bookings/lib/handleSeats/handleSeats.ts @@ -110,7 +110,6 @@ const handleSeats = async (newSeatedBookingObject: NewSeatedBookingObject) => { isFirstRecurringEvent: true, emailAttendeeSendToOverride: bookerEmail, seatReferenceUid: evt.attendeeSeatId, - eventTypeRequiresConfirmation: eventType.requiresConfirmation, }); } catch (error) { loggerWithEventDetails.error("Error while scheduling workflow reminders", JSON.stringify({ error })); diff --git a/packages/features/ee/workflows/api/scheduleSMSReminders.ts b/packages/features/ee/workflows/api/scheduleSMSReminders.ts index 3faf361ce7ecaf..299d9bac639f18 100644 --- a/packages/features/ee/workflows/api/scheduleSMSReminders.ts +++ b/packages/features/ee/workflows/api/scheduleSMSReminders.ts @@ -56,6 +56,9 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { if (!reminder.workflowStep || !reminder.booking) { continue; } + const userId = reminder.workflowStep.workflow.userId; + const teamId = reminder.workflowStep.workflow.teamId; + try { const sendTo = reminder.workflowStep.action === WorkflowActions.SMS_NUMBER @@ -141,17 +144,26 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { } if (message?.length && message?.length > 0 && sendTo) { - const scheduledSMS = await twilio.scheduleSMS(sendTo, message, reminder.scheduledDate, senderID); + const scheduledSMS = await twilio.scheduleSMS( + sendTo, + message, + reminder.scheduledDate, + senderID, + userId, + teamId + ); - await prisma.workflowReminder.update({ - where: { - id: reminder.id, - }, - data: { - scheduled: true, - referenceId: scheduledSMS.sid, - }, - }); + if (scheduledSMS) { + await prisma.workflowReminder.update({ + where: { + id: reminder.id, + }, + data: { + scheduled: true, + referenceId: scheduledSMS.sid, + }, + }); + } } } catch (error) { console.log(`Error scheduling SMS with error ${error}`); diff --git a/packages/features/ee/workflows/api/scheduleWhatsappReminders.ts b/packages/features/ee/workflows/api/scheduleWhatsappReminders.ts index c4021c4712ed1e..5660407715dc98 100644 --- a/packages/features/ee/workflows/api/scheduleWhatsappReminders.ts +++ b/packages/features/ee/workflows/api/scheduleWhatsappReminders.ts @@ -8,6 +8,8 @@ import prisma from "@calcom/prisma"; import { WorkflowActions, WorkflowMethods } from "@calcom/prisma/enums"; import { getWhatsappTemplateFunction } from "../lib/actionHelperFunctions"; +import type { PartialWorkflowReminder } from "../lib/getWorkflowReminders"; +import { select } from "../lib/getWorkflowReminders"; import * as twilio from "../lib/reminders/providers/twilioProvider"; async function handler(req: NextApiRequest, res: NextApiResponse) { @@ -28,7 +30,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { }); //find all unscheduled WHATSAPP reminders - const unscheduledReminders = await prisma.workflowReminder.findMany({ + const unscheduledReminders = (await prisma.workflowReminder.findMany({ where: { method: WorkflowMethods.WHATSAPP, scheduled: false, @@ -36,17 +38,8 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { lte: dayjs().add(7, "day").toISOString(), }, }, - include: { - workflowStep: true, - booking: { - include: { - eventType: true, - user: true, - attendees: true, - }, - }, - }, - }); + select, + })) as PartialWorkflowReminder[]; if (!unscheduledReminders.length) { res.json({ ok: true }); @@ -57,6 +50,9 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { if (!reminder.workflowStep || !reminder.booking) { continue; } + const userId = reminder.workflowStep.workflow.userId; + const teamId = reminder.workflowStep.workflow.teamId; + try { const sendTo = reminder.workflowStep.action === WorkflowActions.WHATSAPP_NUMBER @@ -91,17 +87,27 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { ); if (message?.length && message?.length > 0 && sendTo) { - const scheduledSMS = await twilio.scheduleSMS(sendTo, message, reminder.scheduledDate, "", true); - - await prisma.workflowReminder.update({ - where: { - id: reminder.id, - }, - data: { - scheduled: true, - referenceId: scheduledSMS.sid, - }, - }); + const scheduledSMS = await twilio.scheduleSMS( + sendTo, + message, + reminder.scheduledDate, + "", + userId, + teamId, + true + ); + + if (scheduledSMS) { + await prisma.workflowReminder.update({ + where: { + id: reminder.id, + }, + data: { + scheduled: true, + referenceId: scheduledSMS.sid, + }, + }); + } } } catch (error) { console.log(`Error scheduling WHATSAPP with error ${error}`); diff --git a/packages/features/ee/workflows/components/AddActionDialog.tsx b/packages/features/ee/workflows/components/AddActionDialog.tsx index e1f492abab4f87..9af66441c0df42 100644 --- a/packages/features/ee/workflows/components/AddActionDialog.tsx +++ b/packages/features/ee/workflows/components/AddActionDialog.tsx @@ -175,8 +175,7 @@ export const AddActionDialog = (props: IAddActionDialog) => { label: string; value: WorkflowActions; needsTeamsUpgrade: boolean; - needsOrgsUpgrade: boolean; - }) => option.needsTeamsUpgrade || option.needsOrgsUpgrade} + }) => option.needsTeamsUpgrade} /> ); }} diff --git a/packages/features/ee/workflows/components/EventWorkflowsTab.tsx b/packages/features/ee/workflows/components/EventWorkflowsTab.tsx index c6437251711b14..f45ec61ed7f491 100644 --- a/packages/features/ee/workflows/components/EventWorkflowsTab.tsx +++ b/packages/features/ee/workflows/components/EventWorkflowsTab.tsx @@ -5,7 +5,6 @@ import { useFormContext } from "react-hook-form"; import { Trans } from "react-i18next"; import useLockedFieldsManager from "@calcom/features/ee/managed-event-types/hooks/useLockedFieldsManager"; -import { isTextMessageToAttendeeAction } from "@calcom/features/ee/workflows/lib/actionHelperFunctions"; import type { FormValues } from "@calcom/features/eventtypes/lib/types"; import classNames from "@calcom/lib/classNames"; import { useLocale } from "@calcom/lib/hooks/useLocale"; @@ -105,12 +104,6 @@ const WorkflowListItem = (props: ItemProps) => { } }); - const needsRequiresConfirmationWarning = - !eventType.requiresConfirmation && - workflow.steps.find((step) => { - return isTextMessageToAttendeeAction(step.action); - }); - return (
@@ -179,15 +172,6 @@ const WorkflowListItem = (props: ItemProps) => {
- - {needsRequiresConfirmationWarning ? ( -
- -

{t("requires_confirmation_mandatory")}

-
- ) : ( - <> - )} ); }; diff --git a/packages/features/ee/workflows/components/WorkflowStepContainer.tsx b/packages/features/ee/workflows/components/WorkflowStepContainer.tsx index 75ae7ac75bd3c2..db99627dad99d3 100644 --- a/packages/features/ee/workflows/components/WorkflowStepContainer.tsx +++ b/packages/features/ee/workflows/components/WorkflowStepContainer.tsx @@ -45,7 +45,6 @@ import { isAttendeeAction, isSMSAction, isSMSOrWhatsappAction, - isTextMessageToAttendeeAction, isWhatsappAction, } from "../lib/actionHelperFunctions"; import { DYNAMIC_TEXT_VARIABLES } from "../lib/constants"; @@ -120,10 +119,6 @@ export default function WorkflowStepContainer(props: WorkflowStepProps) { form.getValues("trigger") === WorkflowTriggerEvents.AFTER_EVENT ); - const [isRequiresConfirmationNeeded, setIsRequiresConfirmationNeeded] = useState( - isTextMessageToAttendeeAction(step?.action) - ); - const { data: actionOptions } = trpc.viewer.workflows.getWorkflowActionOptions.useQuery(); const triggerOptions = getWorkflowTriggerOptions(t); const templateOptions = getWorkflowTemplateOptions(t, step?.action); @@ -345,7 +340,6 @@ export default function WorkflowStepContainer(props: WorkflowStepProps) { label: actionString.charAt(0).toUpperCase() + actionString.slice(1), value: step.action, needsTeamsUpgrade: false, - needsOrgsUpgrade: false, }; const selectedTemplate = { label: t(`${step.template.toLowerCase()}`), value: step.template }; @@ -463,12 +457,6 @@ export default function WorkflowStepContainer(props: WorkflowStepProps) { setIsEmailSubjectNeeded(true); } - if (isTextMessageToAttendeeAction(val.value)) { - setIsRequiresConfirmationNeeded(true); - } else { - setIsRequiresConfirmationNeeded(false); - } - if ( form.getValues(`steps.${step.stepNumber - 1}.template`) === WorkflowTemplates.REMINDER @@ -541,20 +529,11 @@ export default function WorkflowStepContainer(props: WorkflowStepProps) { label: string; value: WorkflowActions; needsTeamsUpgrade: boolean; - needsOrgsUpgrade: boolean; - }) => option.needsTeamsUpgrade || option.needsOrgsUpgrade} + }) => option.needsTeamsUpgrade} /> ); }} /> - {isRequiresConfirmationNeeded ? ( -
- -

{t("requires_confirmation_mandatory")}

-
- ) : ( - <> - )} {isPhoneNumberNeeded && (
diff --git a/packages/features/ee/workflows/lib/actionHelperFunctions.ts b/packages/features/ee/workflows/lib/actionHelperFunctions.ts index b66f2b7734478d..18b126bec3ab99 100644 --- a/packages/features/ee/workflows/lib/actionHelperFunctions.ts +++ b/packages/features/ee/workflows/lib/actionHelperFunctions.ts @@ -42,9 +42,6 @@ export function isEmailToAttendeeAction(action: WorkflowActions) { return action === WorkflowActions.EMAIL_ATTENDEE; } -export function isTextMessageToAttendeeAction(action?: WorkflowActions) { - return action === WorkflowActions.SMS_ATTENDEE || action === WorkflowActions.WHATSAPP_ATTENDEE; -} export function isTextMessageToSpecificNumber(action?: WorkflowActions) { return action === WorkflowActions.SMS_NUMBER || action === WorkflowActions.WHATSAPP_NUMBER; } @@ -65,7 +62,7 @@ export function getWhatsappTemplateForTrigger(trigger: WorkflowTriggerEvents): W } } -export function getWhatsappTemplateFunction(template: WorkflowTemplates): typeof whatsappReminderTemplate { +export function getWhatsappTemplateFunction(template?: WorkflowTemplates): typeof whatsappReminderTemplate { switch (template) { case "CANCELLED": return whatsappEventCancelledTemplate; diff --git a/packages/features/ee/workflows/lib/getOptions.ts b/packages/features/ee/workflows/lib/getOptions.ts index a1d80149ecfc73..7b4cec8d49d223 100644 --- a/packages/features/ee/workflows/lib/getOptions.ts +++ b/packages/features/ee/workflows/lib/getOptions.ts @@ -2,12 +2,7 @@ import type { TFunction } from "next-i18next"; import { WorkflowActions } from "@calcom/prisma/enums"; -import { - isTextMessageToAttendeeAction, - isSMSOrWhatsappAction, - isWhatsappAction, - isEmailToAttendeeAction, -} from "./actionHelperFunctions"; +import { isSMSOrWhatsappAction, isWhatsappAction, isEmailToAttendeeAction } from "./actionHelperFunctions"; import { TIME_UNIT, WHATSAPP_WORKFLOW_TEMPLATES, @@ -25,9 +20,7 @@ export function getWorkflowActionOptions(t: TFunction, isTeamsPlan?: boolean, is return { label: actionString.charAt(0).toUpperCase() + actionString.slice(1), value: action, - needsTeamsUpgrade: - isSMSOrWhatsappAction(action) && !isTextMessageToAttendeeAction(action) && !isTeamsPlan, - needsOrgsUpgrade: isTextMessageToAttendeeAction(action) && !isOrgsPlan, + needsTeamsUpgrade: isSMSOrWhatsappAction(action) && !isTeamsPlan, }; }); } diff --git a/packages/features/ee/workflows/lib/getWorkflowReminders.ts b/packages/features/ee/workflows/lib/getWorkflowReminders.ts index 4c88206dbdc9b4..ea07e4cafacab3 100644 --- a/packages/features/ee/workflows/lib/getWorkflowReminders.ts +++ b/packages/features/ee/workflows/lib/getWorkflowReminders.ts @@ -3,7 +3,9 @@ import prisma from "@calcom/prisma"; import type { EventType, Prisma, User, WorkflowReminder, WorkflowStep } from "@calcom/prisma/client"; import { WorkflowMethods } from "@calcom/prisma/enums"; -type PartialWorkflowStep = Partial | null; +type PartialWorkflowStep = + | (Partial & { workflow: { userId?: number; teamId?: number } }) + | null; type Booking = Prisma.BookingGetPayload<{ include: { @@ -120,6 +122,12 @@ export const select: Prisma.WorkflowReminderSelect = { template: true, sender: true, includeCalendarEvent: true, + workflow: { + select: { + userId: true, + teamId: true, + }, + }, }, }, booking: { diff --git a/packages/features/ee/workflows/lib/reminders/providers/twilioProvider.ts b/packages/features/ee/workflows/lib/reminders/providers/twilioProvider.ts index d5eb0d1e2a9a7c..1f136929dd2fe3 100644 --- a/packages/features/ee/workflows/lib/reminders/providers/twilioProvider.ts +++ b/packages/features/ee/workflows/lib/reminders/providers/twilioProvider.ts @@ -1,10 +1,17 @@ import TwilioClient from "twilio"; +import { checkSMSRateLimit } from "@calcom/lib/checkRateLimitAndThrowError"; +import logger from "@calcom/lib/logger"; +import prisma from "@calcom/prisma"; +import { SMSLockState } from "@calcom/prisma/enums"; + declare global { // eslint-disable-next-line no-var var twilio: TwilioClient.Twilio | undefined; } +const log = logger.getSubLogger({ prefix: ["[twilioProvider]"] }); + export const twilio = globalThis.twilio || (process.env.TWILIO_SID && process.env.TWILIO_TOKEN && process.env.TWILIO_MESSAGING_SID) @@ -31,8 +38,30 @@ function getSMSNumber(phone: string, whatsapp = false) { return whatsapp ? `whatsapp:${phone}` : phone; } -export const sendSMS = async (phoneNumber: string, body: string, sender: string, whatsapp = false) => { +export const sendSMS = async ( + phoneNumber: string, + body: string, + sender: string, + userId?: number | null, + teamId?: number | null, + whatsapp = false +) => { assertTwilio(twilio); + + const isSMSSendingLocked = await isLockedForSMSSending(userId, teamId); + + if (isSMSSendingLocked) { + log.debug(`${teamId ? `Team id ${teamId} ` : `User id ${userId} `} is locked for SMS sending `); + return; + } + + if (!teamId && userId) { + await checkSMSRateLimit({ + identifier: `sms:user:${userId}`, + rateLimitingType: "smsMonth", + }); + } + const response = await twilio.messages.create({ body: body, messagingServiceSid: process.env.TWILIO_MESSAGING_SID, @@ -48,9 +77,26 @@ export const scheduleSMS = async ( body: string, scheduledDate: Date, sender: string, + userId?: number | null, + teamId?: number | null, whatsapp = false ) => { assertTwilio(twilio); + + const isSMSSendingLocked = await isLockedForSMSSending(userId, teamId); + + if (isSMSSendingLocked) { + log.debug(`${teamId ? `Team id ${teamId} ` : `User id ${userId} `} is locked for SMS sending `); + return; + } + + if (!teamId && userId) { + await checkSMSRateLimit({ + identifier: `sms:user:${userId}`, + rateLimitingType: "smsMonth", + }); + } + const response = await twilio.messages.create({ body: body, messagingServiceSid: process.env.TWILIO_MESSAGING_SID, @@ -90,3 +136,44 @@ export const verifyNumber = async (phoneNumber: string, code: string) => { } } }; + +async function isLockedForSMSSending(userId?: number | null, teamId?: number | null) { + if (teamId) { + const team = await prisma.team.findFirst({ + where: { + id: teamId, + }, + }); + return team?.smsLockState === SMSLockState.LOCKED; + } + + if (userId) { + const memberships = await prisma.membership.findMany({ + where: { + userId: userId, + }, + select: { + team: { + select: { + smsLockState: true, + }, + }, + }, + }); + + const memberOfLockedTeam = memberships.find( + (membership) => membership.team.smsLockState === SMSLockState.LOCKED + ); + + if (!!memberOfLockedTeam) { + return true; + } + + const user = await prisma.user.findFirst({ + where: { + id: userId, + }, + }); + return user?.smsLockState === SMSLockState.LOCKED; + } +} diff --git a/packages/features/ee/workflows/lib/reminders/reminderScheduler.ts b/packages/features/ee/workflows/lib/reminders/reminderScheduler.ts index c23291ab94fb66..68422b62cc33e2 100644 --- a/packages/features/ee/workflows/lib/reminders/reminderScheduler.ts +++ b/packages/features/ee/workflows/lib/reminders/reminderScheduler.ts @@ -1,10 +1,7 @@ import type { Workflow, WorkflowsOnEventTypes, WorkflowStep } from "@prisma/client"; -import { - isSMSAction, - isTextMessageToAttendeeAction, - isWhatsappAction, -} from "@calcom/features/ee/workflows/lib/actionHelperFunctions"; +import { isSMSAction, isWhatsappAction } from "@calcom/features/ee/workflows/lib/actionHelperFunctions"; +import { checkSMSRateLimit } from "@calcom/lib/checkRateLimitAndThrowError"; import { SENDER_NAME } from "@calcom/lib/constants"; import { WorkflowActions, WorkflowMethods, WorkflowTriggerEvents } from "@calcom/prisma/enums"; import type { CalendarEvent } from "@calcom/types/Calendar"; @@ -25,7 +22,6 @@ type ProcessWorkflowStepParams = { emailAttendeeSendToOverride?: string; hideBranding?: boolean; seatReferenceUid?: string; - eventTypeRequiresConfirmation?: boolean; }; export interface ScheduleWorkflowRemindersArgs extends ProcessWorkflowStepParams { @@ -48,12 +44,14 @@ const processWorkflowStep = async ( emailAttendeeSendToOverride, hideBranding, seatReferenceUid, - eventTypeRequiresConfirmation, }: ProcessWorkflowStepParams ) => { - if (isTextMessageToAttendeeAction(step.action) && !eventTypeRequiresConfirmation) return; - if (isSMSAction(step.action)) { + await checkSMSRateLimit({ + identifier: `sms:${workflow.teamId ? "team:" : "user:"}${workflow.teamId || workflow.userId}`, + rateLimitingType: "sms", + }); + const sendTo = step.action === WorkflowActions.SMS_ATTENDEE ? smsReminderNumber : step.sendTo; await scheduleSMSReminder({ evt, @@ -141,7 +139,6 @@ export const scheduleWorkflowReminders = async (args: ScheduleWorkflowRemindersA emailAttendeeSendToOverride = "", hideBranding, seatReferenceUid, - eventTypeRequiresConfirmation = false, } = args; if (isNotConfirmed || !workflows.length) return; @@ -173,7 +170,6 @@ export const scheduleWorkflowReminders = async (args: ScheduleWorkflowRemindersA smsReminderNumber, hideBranding, seatReferenceUid, - eventTypeRequiresConfirmation, }); } } @@ -204,11 +200,10 @@ export interface SendCancelledRemindersArgs { smsReminderNumber: string | null; evt: ExtendedCalendarEvent; hideBranding?: boolean; - eventTypeRequiresConfirmation?: boolean; } export const sendCancelledReminders = async (args: SendCancelledRemindersArgs) => { - const { workflows, smsReminderNumber, evt, hideBranding, eventTypeRequiresConfirmation } = args; + const { workflows, smsReminderNumber, evt, hideBranding } = args; if (!workflows.length) return; for (const workflowRef of workflows) { @@ -221,7 +216,6 @@ export const sendCancelledReminders = async (args: SendCancelledRemindersArgs) = smsReminderNumber, hideBranding, calendarEvent: evt, - eventTypeRequiresConfirmation, }); } } diff --git a/packages/features/ee/workflows/lib/reminders/smsReminderManager.ts b/packages/features/ee/workflows/lib/reminders/smsReminderManager.ts index a555d74dff5a3f..f47cb125860ebb 100644 --- a/packages/features/ee/workflows/lib/reminders/smsReminderManager.ts +++ b/packages/features/ee/workflows/lib/reminders/smsReminderManager.ts @@ -86,6 +86,7 @@ export const scheduleSMSReminder = async (args: ScheduleTextReminderArgs) => { isVerificationPending = false, seatReferenceUid, } = args; + const { startTime, endTime } = evt; const uid = evt.uid as string; const currentDate = dayjs(); @@ -184,7 +185,7 @@ export const scheduleSMSReminder = async (args: ScheduleTextReminderArgs) => { triggerEvent === WorkflowTriggerEvents.RESCHEDULE_EVENT ) { try { - await twilio.sendSMS(reminderPhone, smsMessage, senderID); + await twilio.sendSMS(reminderPhone, smsMessage, senderID, userId, teamId); } catch (error) { log.error(`Error sending SMS with error ${error}`); } @@ -203,20 +204,24 @@ export const scheduleSMSReminder = async (args: ScheduleTextReminderArgs) => { reminderPhone, smsMessage, scheduledDate.toDate(), - senderID + senderID, + userId, + teamId ); - await prisma.workflowReminder.create({ - data: { - bookingUid: uid, - workflowStepId: workflowStepId, - method: WorkflowMethods.SMS, - scheduledDate: scheduledDate.toDate(), - scheduled: true, - referenceId: scheduledSMS.sid, - seatReferenceId: seatReferenceUid, - }, - }); + if (scheduledSMS) { + await prisma.workflowReminder.create({ + data: { + bookingUid: uid, + workflowStepId: workflowStepId, + method: WorkflowMethods.SMS, + scheduledDate: scheduledDate.toDate(), + scheduled: true, + referenceId: scheduledSMS.sid, + seatReferenceId: seatReferenceUid, + }, + }); + } } catch (error) { log.error(`Error scheduling SMS with error ${error}`); } diff --git a/packages/features/ee/workflows/lib/reminders/whatsappReminderManager.ts b/packages/features/ee/workflows/lib/reminders/whatsappReminderManager.ts index 66529248984df9..967b8a56af764e 100644 --- a/packages/features/ee/workflows/lib/reminders/whatsappReminderManager.ts +++ b/packages/features/ee/workflows/lib/reminders/whatsappReminderManager.ts @@ -35,6 +35,7 @@ export const scheduleWhatsappReminder = async (args: ScheduleTextReminderArgs) = isVerificationPending = false, seatReferenceUid, } = args; + const { startTime, endTime } = evt; const uid = evt.uid as string; const currentDate = dayjs(); @@ -147,7 +148,7 @@ export const scheduleWhatsappReminder = async (args: ScheduleTextReminderArgs) = triggerEvent === WorkflowTriggerEvents.RESCHEDULE_EVENT ) { try { - await twilio.sendSMS(reminderPhone, textMessage, "", true); + await twilio.sendSMS(reminderPhone, textMessage, "", userId, teamId, true); } catch (error) { console.log(`Error sending WHATSAPP with error ${error}`); } @@ -167,20 +168,24 @@ export const scheduleWhatsappReminder = async (args: ScheduleTextReminderArgs) = textMessage, scheduledDate.toDate(), "", + userId, + teamId, true ); - await prisma.workflowReminder.create({ - data: { - bookingUid: uid, - workflowStepId: workflowStepId, - method: WorkflowMethods.WHATSAPP, - scheduledDate: scheduledDate.toDate(), - scheduled: true, - referenceId: scheduledWHATSAPP.sid, - seatReferenceId: seatReferenceUid, - }, - }); + if (scheduledWHATSAPP) { + await prisma.workflowReminder.create({ + data: { + bookingUid: uid, + workflowStepId: workflowStepId, + method: WorkflowMethods.WHATSAPP, + scheduledDate: scheduledDate.toDate(), + scheduled: true, + referenceId: scheduledWHATSAPP.sid, + seatReferenceId: seatReferenceUid, + }, + }); + } } catch (error) { console.log(`Error scheduling WHATSAPP with error ${error}`); } diff --git a/packages/features/settings/layouts/SettingsLayout.tsx b/packages/features/settings/layouts/SettingsLayout.tsx index 329a4efda49556..228173520956f7 100644 --- a/packages/features/settings/layouts/SettingsLayout.tsx +++ b/packages/features/settings/layouts/SettingsLayout.tsx @@ -119,6 +119,7 @@ const tabs: VerticalTabItemProps[] = [ { name: "apps", href: "/settings/admin/apps/calendar" }, { name: "users", href: "/settings/admin/users" }, { name: "organizations", href: "/settings/admin/organizations" }, + { name: "lockedSMS", href: "/settings/admin/lockedSMS" }, { name: "oAuth", href: "/settings/admin/oAuth" }, ], }, diff --git a/packages/features/settings/layouts/SettingsLayoutAppDir.tsx b/packages/features/settings/layouts/SettingsLayoutAppDir.tsx index 6f9c454bd57baf..c62e1bcc5d1a12 100644 --- a/packages/features/settings/layouts/SettingsLayoutAppDir.tsx +++ b/packages/features/settings/layouts/SettingsLayoutAppDir.tsx @@ -107,6 +107,7 @@ const tabs: VerticalTabItemProps[] = [ { name: "apps", href: "/settings/admin/apps/calendar" }, { name: "users", href: "/settings/admin/users" }, { name: "organizations", href: "/settings/admin/organizations" }, + { name: "lockedSMS", href: "/settings/admin/lockedSMS" }, { name: "oAuth", href: "/settings/admin/oAuth" }, ], }, diff --git a/packages/lib/checkRateLimitAndThrowError.ts b/packages/lib/checkRateLimitAndThrowError.ts index d88845203fc4b5..64fd6189a64ea6 100644 --- a/packages/lib/checkRateLimitAndThrowError.ts +++ b/packages/lib/checkRateLimitAndThrowError.ts @@ -1,3 +1,5 @@ +import prisma from "@calcom/prisma"; +import { SMSLockState } from "@calcom/prisma/enums"; import { TRPCError } from "@calcom/trpc/server"; import type { RateLimitHelper } from "./rateLimit"; @@ -23,3 +25,55 @@ export async function checkRateLimitAndThrowError({ }); } } + +export async function checkSMSRateLimit({ + rateLimitingType = "sms", + identifier, + onRateLimiterResponse, + opts, +}: RateLimitHelper) { + const response = await rateLimiter()({ rateLimitingType, identifier, opts }); + const { success } = response; + + if (onRateLimiterResponse) onRateLimiterResponse(response); + + if (!success) { + await changeSMSLockState( + identifier, + rateLimitingType === "sms" ? SMSLockState.LOCKED : SMSLockState.REVIEW_NEEDED + ); + } +} + +async function changeSMSLockState(identifier: string, status: SMSLockState) { + let userId, teamId; + + if (identifier.startsWith("sms:user:")) { + userId = Number(identifier.slice(9)); + } else if (identifier.startsWith("sms:team:")) { + teamId = Number(identifier.slice(9)); + } + + if (userId) { + await prisma.user.update({ + where: { + id: userId, + profiles: { none: {} }, + }, + data: { + smsLockState: status, + }, + }); + } else { + await prisma.team.update({ + where: { + id: teamId, + parentId: null, + isOrganization: false, + }, + data: { + smsLockState: status, + }, + }); + } +} diff --git a/packages/lib/rateLimit.ts b/packages/lib/rateLimit.ts index 1aab25284e929b..6c2c8f28a64178 100644 --- a/packages/lib/rateLimit.ts +++ b/packages/lib/rateLimit.ts @@ -6,7 +6,7 @@ import logger from "./logger"; const log = logger.getSubLogger({ prefix: ["RateLimit"] }); export type RateLimitHelper = { - rateLimitingType?: "core" | "forcedSlowMode" | "common" | "api" | "ai"; + rateLimitingType?: "core" | "forcedSlowMode" | "common" | "api" | "ai" | "sms" | "smsMonth"; identifier: string; opts?: LimitOptions; /** @@ -80,6 +80,22 @@ export function rateLimiter() { async: true, timeout, }), + sms: new Ratelimit({ + rootKey: UNKEY_ROOT_KEY, + namespace: "sms", + limit: 50, + duration: "5m", + async: true, + timeout, + }), + smsMonth: new Ratelimit({ + rootKey: UNKEY_ROOT_KEY, + namespace: "smsMonth", + limit: 250, + duration: "30d", + async: true, + timeout, + }), }; async function rateLimit({ rateLimitingType = "core", identifier, opts }: RateLimitHelper) { diff --git a/packages/lib/test/builder.ts b/packages/lib/test/builder.ts index 118f069a908d79..7f8fb00dbf9450 100644 --- a/packages/lib/test/builder.ts +++ b/packages/lib/test/builder.ts @@ -239,6 +239,7 @@ type UserPayload = Prisma.UserGetPayload<{ receiveMonthlyDigestEmail: true; movedToProfileId: true; isPlatformManaged: true; + smsLockState: true; }; }>; export const buildUser = >( @@ -246,6 +247,7 @@ export const buildUser = >( ): UserPayload & { priority: number | null } => { return { locked: false, + smsLockState: "UNLOCKED", name: faker.name.firstName(), email: faker.internet.email(), timeZone: faker.address.timeZone(), diff --git a/packages/prisma/migrations/20240417175106_add_sms_lock_state/migration.sql b/packages/prisma/migrations/20240417175106_add_sms_lock_state/migration.sql new file mode 100644 index 00000000000000..fc85d638330f97 --- /dev/null +++ b/packages/prisma/migrations/20240417175106_add_sms_lock_state/migration.sql @@ -0,0 +1,8 @@ +-- CreateEnum +CREATE TYPE "SMSLockState" AS ENUM ('LOCKED', 'UNLOCKED', 'REVIEW_NEEDED'); + +-- AlterTable +ALTER TABLE "Team" ADD COLUMN "smsLockState" "SMSLockState" NOT NULL DEFAULT 'UNLOCKED'; + +-- AlterTable +ALTER TABLE "users" ADD COLUMN "smsLockState" "SMSLockState" NOT NULL DEFAULT 'UNLOCKED'; diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index 2c1c38d0108869..12198062b6e0e0 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -318,6 +318,7 @@ model User { isPlatformManaged Boolean @default(false) OutOfOfficeReasons OutOfOfficeReason[] + smsLockState SMSLockState @default(UNLOCKED) @@unique([email]) @@unique([email, username]) @@ -398,6 +399,7 @@ model Team { dsyncTeamGroupMapping DSyncTeamGroupMapping[] isPlatform Boolean @default(false) platformOAuthClient PlatformOAuthClient[] + smsLockState SMSLockState @default(UNLOCKED) @@unique([slug, parentId]) @@index([parentId]) @@ -1346,3 +1348,9 @@ model Task { maxAttempts Int @default(3) lastError String? } + +enum SMSLockState { + LOCKED + UNLOCKED + REVIEW_NEEDED +} diff --git a/packages/trpc/server/routers/viewer/admin/_router.ts b/packages/trpc/server/routers/viewer/admin/_router.ts index 9bb381d29c2b18..c81693b56f8e97 100644 --- a/packages/trpc/server/routers/viewer/admin/_router.ts +++ b/packages/trpc/server/routers/viewer/admin/_router.ts @@ -6,6 +6,7 @@ import { ZListMembersSchema } from "./listPaginated.schema"; import { ZAdminLockUserAccountSchema } from "./lockUserAccount.schema"; import { ZAdminRemoveTwoFactor } from "./removeTwoFactor.schema"; import { ZAdminPasswordResetSchema } from "./sendPasswordReset.schema"; +import { ZSetSMSLockState } from "./setSMSLockState.schema"; const NAMESPACE = "admin"; @@ -47,4 +48,18 @@ export const adminRouter = router({ ); return handler(opts); }), + getSMSLockStateTeamsUsers: authedAdminProcedure.query(async (opts) => { + const handler = await importHandler( + namespaced("getSMSLockStateTeamsUsers"), + () => import("./getSMSLockStateTeamsUsers.handler") + ); + return handler(opts); + }), + setSMSLockState: authedAdminProcedure.input(ZSetSMSLockState).mutation(async (opts) => { + const handler = await importHandler( + namespaced("setSMSLockState"), + () => import("./setSMSLockState.handler") + ); + return handler(opts); + }), }); diff --git a/packages/trpc/server/routers/viewer/admin/getSMSLockStateTeamsUsers.handler.ts b/packages/trpc/server/routers/viewer/admin/getSMSLockStateTeamsUsers.handler.ts new file mode 100644 index 00000000000000..26606576e122b8 --- /dev/null +++ b/packages/trpc/server/routers/viewer/admin/getSMSLockStateTeamsUsers.handler.ts @@ -0,0 +1,71 @@ +import { prisma } from "@calcom/prisma"; +import { SMSLockState } from "@calcom/prisma/client"; + +import type { TrpcSessionUser } from "../../../trpc"; + +type GetOptions = { + ctx: { + user: NonNullable; + }; +}; + +const getSMSLockStateTeamsUsers = async ({ ctx }: GetOptions) => { + const userSelect = { + id: true, + smsLockState: true, + email: true, + username: true, + name: true, + avatarUrl: true, + }; + + const teamSelect = { + id: true, + smsLockState: true, + slug: true, + name: true, + logoUrl: true, + }; + + const lockedUsers = await prisma.user.findMany({ + where: { + smsLockState: SMSLockState.LOCKED, + }, + select: userSelect, + }); + const reviewNeededUsers = await prisma.user.findMany({ + where: { + smsLockState: SMSLockState.REVIEW_NEEDED, + }, + select: userSelect, + }); + + const lockedTeams = await prisma.team.findMany({ + where: { + smsLockState: SMSLockState.LOCKED, + }, + select: teamSelect, + }); + + const reviewNeededTeams = await prisma.team.findMany({ + where: { + smsLockState: SMSLockState.REVIEW_NEEDED, + }, + select: teamSelect, + }); + + const resultObj = { + users: { + locked: lockedUsers, + reviewNeeded: reviewNeededUsers, + }, + teams: { + locked: lockedTeams, + reviewNeeded: reviewNeededTeams, + }, + }; + + return resultObj; +}; + +export default getSMSLockStateTeamsUsers; diff --git a/packages/trpc/server/routers/viewer/admin/getSMSLockStateTeamsUsers.schema.ts b/packages/trpc/server/routers/viewer/admin/getSMSLockStateTeamsUsers.schema.ts new file mode 100644 index 00000000000000..cb0ff5c3b541f6 --- /dev/null +++ b/packages/trpc/server/routers/viewer/admin/getSMSLockStateTeamsUsers.schema.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/trpc/server/routers/viewer/admin/setSMSLockState.handler.ts b/packages/trpc/server/routers/viewer/admin/setSMSLockState.handler.ts new file mode 100644 index 00000000000000..a5279cf433318d --- /dev/null +++ b/packages/trpc/server/routers/viewer/admin/setSMSLockState.handler.ts @@ -0,0 +1,90 @@ +import { prisma } from "@calcom/prisma"; +import { SMSLockState } from "@calcom/prisma/client"; + +import { TRPCError } from "@trpc/server"; + +import type { TrpcSessionUser } from "../../../trpc"; +import type { TSetSMSLockState } from "./setSMSLockState.schema"; + +type GetOptions = { + ctx: { + user: NonNullable; + }; + input: TSetSMSLockState; +}; + +const setSMSLockState = async ({ input }: GetOptions) => { + const { userId, username, teamId, teamSlug, lock } = input; + if (userId) { + const updatedUser = await prisma.user.update({ + where: { + id: userId, + }, + data: { + smsLockState: lock ? SMSLockState.LOCKED : SMSLockState.UNLOCKED, + }, + }); + if (!updatedUser) { + throw new TRPCError({ code: "BAD_REQUEST", message: "User not found" }); + } + return { name: updatedUser.username, locked: lock }; + } else if (username) { + const userToUpdate = await prisma.user.findFirst({ + where: { + username, + profiles: { none: {} }, + }, + }); + if (!userToUpdate) { + throw new TRPCError({ code: "BAD_REQUEST", message: "User not found" }); + } + if (userToUpdate) { + const updatedUser = await prisma.user.update({ + where: { + id: userToUpdate.id, + }, + data: { + smsLockState: lock ? SMSLockState.LOCKED : SMSLockState.UNLOCKED, + }, + }); + return { name: updatedUser.username, locked: lock }; + } + } else if (teamId) { + const updatedTeam = await prisma.team.update({ + where: { + id: teamId, + }, + data: { + smsLockState: lock ? SMSLockState.LOCKED : SMSLockState.UNLOCKED, + }, + }); + if (!updatedTeam) { + throw new TRPCError({ code: "BAD_REQUEST", message: "Team not found" }); + } + return { name: updatedTeam.slug, locked: lock }; + } else if (teamSlug) { + const teamToUpdate = await prisma.team.findFirst({ + where: { + slug: teamSlug, + parentId: null, + }, + }); + if (!teamToUpdate) { + throw new TRPCError({ code: "BAD_REQUEST", message: "Team not found" }); + } + if (teamToUpdate) { + const updatedTeam = await prisma.team.update({ + where: { + id: teamToUpdate.id, + }, + data: { + smsLockState: lock ? SMSLockState.LOCKED : SMSLockState.UNLOCKED, + }, + }); + return { name: updatedTeam.slug, locked: lock }; + } + } + throw new TRPCError({ code: "BAD_REQUEST", message: "Input data missing" }); +}; + +export default setSMSLockState; diff --git a/packages/trpc/server/routers/viewer/admin/setSMSLockState.schema.ts b/packages/trpc/server/routers/viewer/admin/setSMSLockState.schema.ts new file mode 100644 index 00000000000000..d51d5a1be18bd8 --- /dev/null +++ b/packages/trpc/server/routers/viewer/admin/setSMSLockState.schema.ts @@ -0,0 +1,11 @@ +import { z } from "zod"; + +export const ZSetSMSLockState = z.object({ + userId: z.number().optional(), + username: z.string().optional(), + teamId: z.number().optional(), + teamSlug: z.string().optional(), + lock: z.boolean().optional(), +}); + +export type TSetSMSLockState = z.infer; diff --git a/packages/trpc/server/routers/viewer/workflows/update.handler.ts b/packages/trpc/server/routers/viewer/workflows/update.handler.ts index f729f89bf0bbdd..331b6c9ca318aa 100644 --- a/packages/trpc/server/routers/viewer/workflows/update.handler.ts +++ b/packages/trpc/server/routers/viewer/workflows/update.handler.ts @@ -1,10 +1,6 @@ import type { Prisma } from "@prisma/client"; -import { - isSMSOrWhatsappAction, - isTextMessageToAttendeeAction, - isTextMessageToSpecificNumber, -} from "@calcom/features/ee/workflows/lib/actionHelperFunctions"; +import { isSMSOrWhatsappAction } from "@calcom/features/ee/workflows/lib/actionHelperFunctions"; import { deleteScheduledEmailReminder, scheduleEmailReminder, @@ -84,8 +80,6 @@ export const updateHandler = async ({ ctx, input }: UpdateOptions) => { } const hasPaidPlan = IS_SELF_HOSTED || isCurrentUsernamePremium || isTeamsPlan; - const hasOrgsPlan = IS_SELF_HOSTED || (ctx.user.profile?.organizationId ?? null); - const where: Prisma.EventTypeWhereInput = {}; where.id = { in: activeOn, @@ -427,21 +421,9 @@ export const updateHandler = async ({ ctx, input }: UpdateOptions) => { //step was edited } else if (JSON.stringify(oldStep) !== JSON.stringify(newStep)) { // check if step that require team plan already existed before - if ( - !hasPaidPlan && - !isTextMessageToSpecificNumber(oldStep.action) && - isTextMessageToSpecificNumber(newStep.action) - ) { + if (!hasPaidPlan && !isSMSOrWhatsappAction(oldStep.action) && isSMSOrWhatsappAction(newStep.action)) { throw new TRPCError({ code: "UNAUTHORIZED", message: "Not available on free plan" }); } - // check if step that require org already existed before - if ( - !hasOrgsPlan && - !isTextMessageToAttendeeAction(oldStep.action) && - isTextMessageToAttendeeAction(newStep.action) - ) { - throw new TRPCError({ code: "UNAUTHORIZED", message: "Enterprise plan required" }); - } const requiresSender = newStep.action === WorkflowActions.SMS_NUMBER || newStep.action === WorkflowActions.WHATSAPP_NUMBER; await ctx.prisma.workflowStep.update({ @@ -613,12 +595,9 @@ export const updateHandler = async ({ ctx, input }: UpdateOptions) => { //added steps const addedSteps = steps.map((s) => { if (s.id <= 0) { - if (isSMSOrWhatsappAction(s.action) && !isTextMessageToAttendeeAction(s.action) && !hasPaidPlan) { + if (isSMSOrWhatsappAction(s.action) && !hasPaidPlan) { throw new TRPCError({ code: "UNAUTHORIZED", message: "Not available on free plan" }); } - if (!hasOrgsPlan && isTextMessageToAttendeeAction(s.action)) { - throw new TRPCError({ code: "UNAUTHORIZED", message: "Enterprise plan require" }); - } const { id: _stepId, ...stepToAdd } = s; return stepToAdd; } diff --git a/packages/ui/components/form/select/components.tsx b/packages/ui/components/form/select/components.tsx index e46ae36160fb3a..d41557ea9ca03b 100644 --- a/packages/ui/components/form/select/components.tsx +++ b/packages/ui/components/form/select/components.tsx @@ -4,7 +4,7 @@ import { components as reactSelectComponents } from "react-select"; import { classNames } from "@calcom/lib"; import { Icon } from "../../.."; -import { UpgradeTeamsBadge, UpgradeOrgsBadge } from "../../badge"; +import { UpgradeTeamsBadge } from "../../badge"; import type { SelectProps } from "./Select"; export const InputComponent = < @@ -31,7 +31,6 @@ type ExtendedOption = { value: string | number; label: string; needsTeamsUpgrade?: boolean; - needsOrgsUpgrade?: boolean; }; export const OptionComponent = < @@ -48,13 +47,7 @@ export const OptionComponent = < {props.label || <> } - {(props.data as unknown as ExtendedOption).needsTeamsUpgrade ? ( - - ) : (props.data as unknown as ExtendedOption).needsOrgsUpgrade ? ( - - ) : ( - <> - )} + {(props.data as unknown as ExtendedOption).needsTeamsUpgrade ? : <>} {props.isSelected && }
From 96a1c0b1cc724784e5bd2754ad465e90f5596969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Omar=20L=C3=B3pez?= Date: Tue, 23 Apr 2024 14:16:14 -0700 Subject: [PATCH 008/482] v4.0.2 (#14724) --- apps/web/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/package.json b/apps/web/package.json index f65ad90e7c4a87..9d1b794e1cb1b6 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@calcom/web", - "version": "4.0.1", + "version": "4.0.2", "private": true, "scripts": { "analyze": "ANALYZE=true next build", From 22131b90d220600423028ca17c2caf6e3615d853 Mon Sep 17 00:00:00 2001 From: Keith Williams Date: Tue, 23 Apr 2024 18:35:56 -0300 Subject: [PATCH 009/482] fix: Improve French translations (#14718) --- apps/web/public/static/locales/fr/common.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/web/public/static/locales/fr/common.json b/apps/web/public/static/locales/fr/common.json index 76092d4df278ef..ee24b2fc160b39 100644 --- a/apps/web/public/static/locales/fr/common.json +++ b/apps/web/public/static/locales/fr/common.json @@ -2238,15 +2238,15 @@ "not_enough_available_seats_error": "La réservation n'a pas assez de places disponibles", "user_redirect_title": "{{username}} est actuellement en absence de courte durée.", "user_redirect_description": "Pendant ce temps, {{profile.username}} sera responsable de tous les rendez-vous programmés de la part de {{username}}.", - "out_of_office": "Pas au bureau", + "out_of_office": "Absent du bureau", "out_of_office_description": "Configurez des actions dans votre profil pendant votre absence.", "send_request": "Envoyer une demande", "start_date_and_end_date_required": "Les dates de début et de fin sont requises", "start_date_must_be_before_end_date": "La date de début doit être antérieure à la date de fin", "start_date_must_be_in_the_future": "La date de début doit être dans le futur", "user_not_found": "Utilisateur introuvable", - "out_of_office_entry_already_exists": "L'entrée Pas au bureau existe déjà", - "out_of_office_id_required": "L'id de l'entrée Pas au bureau est requis", + "out_of_office_entry_already_exists": "L'entrée absent du bureau existe déjà", + "out_of_office_id_required": "L'id de l'entrée absent du bureau est requis", "booking_redirect_infinite_not_allowed": "Une redirection de réservation de cet utilisateur vers vous existe déjà.", "success_entry_created": "Création d'une nouvelle entrée réussie", "booking_redirect_email_subject": "Notification de redirection de réservation", @@ -2257,20 +2257,20 @@ "copy_link_booking_redirect_request": "Copier le lien pour partager la demande", "booking_redirect_request_title": "Demande de redirection de réservation", "select_team_member": "Sélectionner un membre de l'équipe", - "going_away_title": "Vous partez ? Marquez simplement le lien de votre profil comme étant indisponible pendant un certain temps.", + "going_away_title": "Vous partez? Marquez simplement le lien de votre profil comme étant indisponible pendant un certain temps.", "redirect_team_enabled": "Redirigez votre profil vers un autre membre de l'équipe", "redirect_team_disabled": "Redirigez votre profil vers un autre membre de l'équipe (formule Équipe requise)", - "out_of_office_unavailable_list": "Liste des indisponibilités Pas au bureau", + "out_of_office_unavailable_list": "Liste des indisponibilités absent du bureau", "success_deleted_entry_out_of_office": "Suppression de l'entrée réussie", - "temporarily_out_of_office": "Temporairement Pas au bureau ?", + "temporarily_out_of_office": "Temporairement absent du bureau?", "add_a_redirect": "Ajouter une redirection", "create_entry": "Créer une entrée", "time_range": "Plage temporelle", "automatically_add_all_team_members": "Ajouter tous les membres de l'équipe, y compris les futurs membres", "redirect_to": "Redirection vers", - "having_trouble_finding_time": "Vous avez du mal à trouver une heure ?", + "having_trouble_finding_time": "Vous avez du mal à trouver un créneau?", "show_more": "En voir plus", - "assignment_description": "Planifiez des rendez-vous lorsque tout le monde est disponible ou faites tourner les membres de votre équipe", + "assignment_description": "Planifiez des rendez-vous lorsque tout le monde est disponible ou faites une rotation entre les membres de votre équipe", "lowest": "le plus bas", "low": "bas", "medium": "moyen", @@ -2297,4 +2297,4 @@ "confirm_email_description": "Nous avons envoyé un e-mail à {{email}}. Cliquez sur le lien dans l'e-mail pour vérifier cette adresse.", "send_event_details_to": "Envoyer les détails de l'événement à", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Ajoutez vos nouvelles chaînes ci-dessus ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" -} \ No newline at end of file +} From 612f574aba87a83743229bd97f54a0c7eb341055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20G=C3=B6ler=20von=20Ravensburg?= Date: Tue, 23 Apr 2024 23:52:03 +0200 Subject: [PATCH 010/482] feat: Add app store entry for "Autocheckin" (Challenge/Bounty) (#14683) --- packages/app-store/apps.metadata.generated.ts | 2 ++ packages/app-store/apps.server.generated.ts | 1 + packages/app-store/autocheckin/DESCRIPTION.md | 7 ++++++ packages/app-store/autocheckin/api/add.ts | 20 ++++++++++++++++++ packages/app-store/autocheckin/api/index.ts | 1 + .../app-store/autocheckin/components/.gitkeep | 0 packages/app-store/autocheckin/config.json | 16 ++++++++++++++ packages/app-store/autocheckin/index.ts | 1 + packages/app-store/autocheckin/package.json | 14 ++++++++++++ packages/app-store/autocheckin/static/1.jpeg | Bin 0 -> 256011 bytes packages/app-store/autocheckin/static/2.jpeg | Bin 0 -> 216070 bytes .../app-store/autocheckin/static/icon.svg | 4 ++++ 12 files changed, 66 insertions(+) create mode 100644 packages/app-store/autocheckin/DESCRIPTION.md create mode 100644 packages/app-store/autocheckin/api/add.ts create mode 100644 packages/app-store/autocheckin/api/index.ts create mode 100644 packages/app-store/autocheckin/components/.gitkeep create mode 100644 packages/app-store/autocheckin/config.json create mode 100644 packages/app-store/autocheckin/index.ts create mode 100644 packages/app-store/autocheckin/package.json create mode 100644 packages/app-store/autocheckin/static/1.jpeg create mode 100644 packages/app-store/autocheckin/static/2.jpeg create mode 100644 packages/app-store/autocheckin/static/icon.svg diff --git a/packages/app-store/apps.metadata.generated.ts b/packages/app-store/apps.metadata.generated.ts index 99bfc060dbd714..272c9ed75566e5 100644 --- a/packages/app-store/apps.metadata.generated.ts +++ b/packages/app-store/apps.metadata.generated.ts @@ -6,6 +6,7 @@ import alby_config_json from "./alby/config.json"; import amie_config_json from "./amie/config.json"; import { metadata as applecalendar__metadata_ts } from "./applecalendar/_metadata"; import around_config_json from "./around/config.json"; +import autocheckin_config_json from "./autocheckin/config.json"; import basecamp3_config_json from "./basecamp3/config.json"; import cal_ai_config_json from "./cal-ai/config.json"; import { metadata as caldavcalendar__metadata_ts } from "./caldavcalendar/_metadata"; @@ -91,6 +92,7 @@ export const appStoreMetadata = { amie: amie_config_json, applecalendar: applecalendar__metadata_ts, around: around_config_json, + autocheckin: autocheckin_config_json, basecamp3: basecamp3_config_json, "cal-ai": cal_ai_config_json, caldavcalendar: caldavcalendar__metadata_ts, diff --git a/packages/app-store/apps.server.generated.ts b/packages/app-store/apps.server.generated.ts index 12c57a2c733dd7..47f33fbdb462e9 100644 --- a/packages/app-store/apps.server.generated.ts +++ b/packages/app-store/apps.server.generated.ts @@ -7,6 +7,7 @@ export const apiHandlers = { amie: import("./amie/api"), applecalendar: import("./applecalendar/api"), around: import("./around/api"), + autocheckin: import("./autocheckin/api"), basecamp3: import("./basecamp3/api"), "cal-ai": import("./cal-ai/api"), caldavcalendar: import("./caldavcalendar/api"), diff --git a/packages/app-store/autocheckin/DESCRIPTION.md b/packages/app-store/autocheckin/DESCRIPTION.md new file mode 100644 index 00000000000000..5546ed6f62cc0e --- /dev/null +++ b/packages/app-store/autocheckin/DESCRIPTION.md @@ -0,0 +1,7 @@ +--- +items: + - 1.jpeg + - 2.jpeg +--- + +{DESCRIPTION} diff --git a/packages/app-store/autocheckin/api/add.ts b/packages/app-store/autocheckin/api/add.ts new file mode 100644 index 00000000000000..5d647aa841887c --- /dev/null +++ b/packages/app-store/autocheckin/api/add.ts @@ -0,0 +1,20 @@ +import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; +import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; + +import appConfig from "../config.json"; + +const handler: AppDeclarativeHandler = { + appType: appConfig.type, + variant: appConfig.variant, + slug: appConfig.slug, + supportsMultipleInstalls: false, + handlerType: "add", + redirect: { + newTab: true, + url: "https://autocheckin.app", + }, + createCredential: ({ appType, user, slug, teamId }) => + createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), +}; + +export default handler; diff --git a/packages/app-store/autocheckin/api/index.ts b/packages/app-store/autocheckin/api/index.ts new file mode 100644 index 00000000000000..4c0d2ead01e1f9 --- /dev/null +++ b/packages/app-store/autocheckin/api/index.ts @@ -0,0 +1 @@ +export { default as add } from "./add"; diff --git a/packages/app-store/autocheckin/components/.gitkeep b/packages/app-store/autocheckin/components/.gitkeep new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/packages/app-store/autocheckin/config.json b/packages/app-store/autocheckin/config.json new file mode 100644 index 00000000000000..10ce8a961e815f --- /dev/null +++ b/packages/app-store/autocheckin/config.json @@ -0,0 +1,16 @@ +{ + "/*": "Don't modify slug - If required, do it using cli edit command", + "name": "Autocheckin", + "slug": "autocheckin", + "type": "autocheckin_automation", + "logo": "icon.svg", + "url": "https://autocheckin.app", + "variant": "automation", + "categories": ["automation"], + "publisher": "Patrick Goeler von Ravensburg", + "email": "patrickvongoeler@gmail.com", + "description": "You simply paste a Cal.com link of someone, select a frequency and we will take care of the scheduling for you.\r\r", + "isTemplate": false, + "__createdUsingCli": true, + "__template": "link-as-an-app" +} diff --git a/packages/app-store/autocheckin/index.ts b/packages/app-store/autocheckin/index.ts new file mode 100644 index 00000000000000..d7f36022040096 --- /dev/null +++ b/packages/app-store/autocheckin/index.ts @@ -0,0 +1 @@ +export * as api from "./api"; diff --git a/packages/app-store/autocheckin/package.json b/packages/app-store/autocheckin/package.json new file mode 100644 index 00000000000000..bd7227df4cf67b --- /dev/null +++ b/packages/app-store/autocheckin/package.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/package.json", + "private": true, + "name": "@calcom/autocheckin", + "version": "0.0.0", + "main": "./index.ts", + "dependencies": { + "@calcom/lib": "*" + }, + "devDependencies": { + "@calcom/types": "*" + }, + "description": "You simply paste a Cal.com link of someone, select a frequency and we will take care of the scheduling for you.\r\r" +} diff --git a/packages/app-store/autocheckin/static/1.jpeg b/packages/app-store/autocheckin/static/1.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..831579e7528d4f4d7bc792bd1e988b344b82234f GIT binary patch literal 256011 zcmeFa2|QG9+c0hN%k%u7_jy16_xrx@=l6TQ-^byebDjI#=eqA}yU%r9=gi!s5z;ikWT30B z3qT+Ma2osrNHai_PK1{`02mnoM*#q!0w^FX02G8E;2!|t0my&C0ALB>{T+6Mi2d4z z3;@Vj|JFXq3xNIF9>n=`1AE!WwBH-Jr?>?Glpq8NA%g-Beyf)`e*6LC zZx|nt{f3cN`vLSfnDQ%#1Kdcnj34#2w46-LjCJ+T==>y%@r`p}pf4E{0QmWb2Ak<= z3R>IP3Q~Rpagu?5iU6InOGu!GiOHFL48QI7;a@j!v|B?z#|#We?&JFH#D8(m?CKWc z0upNiw!h#S;^GIw)ga0DT>^tc0f1t^UMM^?a32N>z!nS+5QMMo!ydoD_xIrozrfFb zwmD~}1-5AeMMUT99P9xA3?IRI!HX^)APxo$2p{)%_3{S*MnMo(_wx&I1>y4`EC#j- z1mS)BColXR9*@6+ot-cIj?>xM<9GNMTEHv8jwI4FEueFM3&?1z`pdmJ0DP z-yaV+2B>P3r`CS`&o;qfX8Yq82J6k-{Pi?J7^DSy(LGpqpZ5Ls$$lXq^pkez15Ypg z{cAx!Kr2H%&+S_l$RB8%i}TO%gS0?Dy7_DT$`j~Cw-D?7v4QQ$YF*v5bwC)T9s149 z-(sKMeLT3pP|f|mz-wVNfxbU&1FVM~cJtNSuRjdJav>MZf4vrF85(?UzaAVX%snvF zWS@uNIAKxV&ITqR42}nO3pfL40os5d5C)bDKmgzkczsx@TLF)LIim|W1Hpg?;08$k zTJzf#RzJ`9gP-O=6tD{TgKa{7zfSY#SvTM!Sikps?Jw6#0`5Q0Ui^855AYT2!4EJ5 ze8J-|5OxEv`K>og;0sve_51N}y*q!{ zT)}Y~{w|GQM*zJBt%7z!o1t%^jnFzk5Q>Jrgua8m-iLqfU-zeUJ$~=a?B{rVK)HDR z-sU%Yf0OvWeuNw^J-&FH@C%kuw}?6az{p@P56@6R4e*ZOCaCZ4B6Unq_PDGZ z0PNpi_S*o!hUw4y2883?-|FJ006+~*B9UJGtkpa=K}3XaQ z5D|z3L>6)qq7Ko4oPn4@Y#`?$9uR*>7$h1J54izJhh#$@LY_iiKJ4fa~=0O%j7DaZIES2moSpnHIvRblcvL3QQ zvT3qqvP~!erG;`p4?!iNC!tzUW2i0E9U2Ucg(gEYp#{)#Xagwc0q8Vz1-b*HfU&{^ zVUnN*pN3h$Twp=4SXc@y8}Z_J9I2`N9nZa?CHYjQt686-q4NGZP3%xAE7@*Z%ZFapGyCfzLkEG9>>7SAjP21 z;L3nx$YH2u=x6xONX;n1sKMyS7{!>$SjE`OxWYuubc9KZ$(bpZDTk?^X_#q~nUz_F z*_hdnIfc1|`7QG|7D|>QEIKT%ELT|ySz1}<7wwv;br4h;dS9n=B?x% z<0Ioc%4f!RiLa3F9p5Iu0KXo8Apbr7R{j+M4uMkw-U7D;ngkZ%tZ;R>7yLFH4PO#u z7t|2+6}&6hCWtx2cj)w?utN_IeK>?aEPB}D@Rh?AhbM$+giZ>%3*8oK5yA+=g^h%x zg-eCUM5skhig=1-iFAr=9}zubbtLIX-H~siT%!7-QKF@ypT+3K5Mn`M1!AAXDa22T z`-ta?e>_TdRQ{;v(VU~b5@Zqz5?&Iy5`D+Wk0~AVKUQ#TSdvasL-L|zspO0lhtwIV zD^hh*-=&46ZKczsJEe)o<&XOwFFHOh!y;oKb48{>W?lBEtcz@p?57j-Cv;CBPrN*V zm6MQjlgpDEk!O`Rl24Lvk>68LR0vimS6EaORy?nGUvc;(+ewp?DJQ#>$dxpekV=h8 zJIV^mp~{uYYbuf|J}MIo(w5TJ()O|Krk#%69lLpZdHY2BAqP>1 z2#2?hJdVDOubmj3oSmx9lb^RbUvi${Z0ua%ym>+Y!u<;v7cG}8mu1&euD4wm-PGLD z-4@){+|%8^d8m10cr1D%JTpC4ytKTsy|CV=z4N`deT;pIeMr7mz7>8{e&_w_{aO5d z{M!Nq0wMzX0wn?y1E+(OgYE=jf(?Tohd@FcLSBZlfsXvUFtM}9!R`NIm1iW|>?=V8y6UYvh1RB2e*QgyPbyjrCCehq6)axJ7b zvKCY4SvURC=4D^KL48YuN<+;nsaM5~hZ=KUv%f|)(KKCcBB7(un{NW&tTcNx&$T$U zjJI01erhvq`_OLK-qoSo(b}oeiSAPCYJ98ww!ZshcU_M{PwhMTcQx*-4owyAQ}=sll(}eK<8lRpT59;OitzwM%C-Z06=d80IVND z|H1B;`0rez05S*^N(O_H zlfyu-2@Dzo>WrS($>+{JFRbEe$K+u3Utq0T;1F~JiWX_Lc=bGM?^-&Urk6%x^_J| zJ>&MB%&fcjvI`1}9z8C8^0cI~s=B7O?qz*LOKV$uM`zdD?*4&KgG0k3qhm9(b6@7a zE__>D!me-p*xcI2?d~D09gP{f4 z&kagO1|^3=q2v_g;6_0OdR`P1R5VmSH=18Jx}O`v{>J$GMgoyQKpZd_j1v53qNS!~ z`okM(0!$dykj4NyCn2YUS%lIOwv^vfI#CG{QX z^?_dh%igP?7)l}yISC*q!}dfhSm6#~w5+l;`m4Dedo2cir`!f7`lBmb=}I?r_>6A5 zYx3V0(2QB@DAO|g6y{Sey=nI}!2gj_r2EBmUD0}X;cR(H%{9wU{xx*Jmb{jn}NR}|uOcr}U_K)TMv##ckcig@(H&f*305R=&>DY-W zF0@Ali*@r;@8MWcjG=Pb*R)8P99KQybzzr&q7Gll6=oEj5*?yMnl2(k2a8IQLv!GQ z=L15^+=qC3YzDr+g?;1aiaD1|6j3o>kAj9Cd*!e`}OIt&*wsP*i8PuP?Gxp6N5%0kkduTYWJsjRbuan_cQc5 z)l;0f@+CFJGuek>&&Bpu-?xx}dX^PRoTIk9+&84abY>-w6U{YE2FsHJ*Fk$733Kdag<^(nwo2*~_95lQ$znIJ}bUJ@!Vy+jZEPAtMjbdVP zXov_K=qQYq{(gp0*v<9)^UEpJZN};ICV||EI?*IRU*EC$d_l7K<^5^GYBPugz=lXb zhBz*S1Oy@XR2;3=QBH%M1XerZnc|t=J#c3Hu^MU5je7Ii=!t(!pAMT>%>kc zXzNd+{j+AbR}~R))%r#sP?#;mN(2kyuKI%&fz8_t;gLD#g@z6}^5SiY@AD4rWi$p& z_mHiRzc2OVaes2e5>Y=Wq+>WT7xcm9rRH3pgBJ;S;Z_$HZHGS>aj6~6r)uO}_$}M$ zQ^VfgWLXFwbyyfQ@`YZ58MHBrE~RGzdjCAno)tKXhq#3;UmO-AFkp>Av>_Rm1*9-; z>kc;Kwo3}@pFi79uqQ5Y_1UK*2fI%#Fb6qSC`zPobc&SUM}2~iUYe6H21&U*$%rea z6@NAO><*Y+g@tc@X$`%*qWbAV{n8_2EvIxO#&l}jYAX{*iPsj5Q)i2K>6y*l_pJPV z{lJP8GDf1CzwWb!&^lYtD<~fgcyG8O8y$=nsG6M`UAB4IW_yJM_t^rSWD9#+x!Y^B`F+wW6SHefI1;dh#D&eF zI2>YL*$!9JD{pPZT<6RQ3i3w@t=zQWJf`3B1p2(9X9_32uo{lnAbvozsS3^X#!rgz zFyxnbu7(FOzo>jQb^K+z+Iac-J4xLS&NHc1ITcR5SR-WTw@BmJt5JI*sc2U8bPZzN zmH;II7dA-1qJ2#+Rk7K-64ZnWBMM$qyy_#mauai+L!EtCN~(qtJ`$0uY7`VuGiyc6)sTv*0!31SB^Bl|IT3LOzTG;rh*t}(@zdJp8p?t(tWda&PHeEY zqA{k@<2lnrbN~sUj(r{SO^DAf zAEh3aBlRsuS84q+xee_$~)ODCrGCO+{uW@vYE>t!wYp2WWXG_A+zT;Sn6&j7$X0#sm+~g$uqv zMx4H@b?I6~@&%_+nAa`115c1`_^I*2t!?baWJIYUHn!6D*yqM#gXgI#D$c_`T+U-` zWQZXdwYQ?#8%hrv_ll8zj4LF7eNrDz5S^5yY!r3dDm9OqAzbYUzA=mBJuWnEJbX4 zKE@o0A`0T}Js^nTo<4qyWf*YGm2_!%QLQ~FX^8AGyLGfv?zFmB_|fMkPLa))JBmb_ z91pg**NnsYsDL z)+D|tL~G->DGtMu@B3+pR6p&T|UH9aD6TQrb(nFP3^frv{p6)O{%eL~j0&53*t`554@Ic{VR;49deQuN*1^5si0idTVCZQM-a24sbhj92PDO81I|7N+p z-6B)1ACblSrvKK-o=(2VO~DsmGIW$$%mU}BkKFl=)X&auLqox7jG+iu_0${FJR?>; zKWKz!Ijj)Cbw`;0!={iYG=v4<7PQ(Z!}btq%J5nQD{Op(%T`!jMoX03K%}L3fM-_2 z`!#2DaQ73tC#h`RKPLBlO7@DHgqF9QFa}d`d0dGXtqDd!{57N8hYgKnialpVKPqd! zK|YuGf*h&ZYQ~^euE$hFBrngD;CkDlUZ!%%Q+`Uwuo-(IGJD?Q`c_B{I$3 zg&M*W^r|W6RC?HR#sGXuU#>y|h_={&adLgK!r4#`1c7A%EItDP9*Q28-J%<;HVPooL+A ztazlSaYEEu%NiGf#XO+o&Ftit0_eA(z!;^@s& zoztz>dxvd!oAxD>#@&u{cLZ;aa>?%{e;X4(%}faNwvN%?R*t<_+>*Jq_3>~gok@p6 z$zd@-3<}WPdudkfcagcVrXClAhk#7ii&coW#$`PwaN=GRD&F|;n73yrblD>L>pQ`( zhFvqX)bS_j1<#2YtE>ZreRty@LJOo7l0lt1`Up-Zq--);4pW0l^1$*BI841Rvg7fx ztBo8>)|cR!VN18rJ&U|;j1vnWHPYqwNkkmbjtpe61pMr zu~{jnHjrg~a>xpnmCdB}e~1oEZUe$u-o5LvcR8zES}XTCF9*&UJLSZO^l}qtAB=Q~Y5hmnr2F7Holh3%EZs^B(=)SFnB zxvb73EsgU;8sb1Q`7=6XXU9_v5`s`|I`V+UL-AY`Wd2nII&z+D+bGHi|UY+ z$`Dr8x!(|T=Na=7Dv09kSD(|)chXO4cb@lEVW)&gMsIgG)m9ML5Uty{BGBzkBEtlw zfGB)f%I=wq7mf2YJNYtuSW_5exo$D&f2{?bh1+=mW;>Mx_}Fn1^t||2V!8V(H zh|iRkd{-dsk8E04>co%V@CljD$B80Wx1SIPKuw%MwQ~v9U?M`2G)b=co|{!hb`gX{mjL)^a)PvNC~B%oVF1dObnAQw+pbo1=(4KaTG$`v5zM8`E=6jISJun?a6Dzi8X})Az9KV^PV(2Ps zC^r_<7Sxd}Ycp|+90(Jht^bC;@#!i2d~7eea;jAY9lt$Q-MOk#?ihibSqa%gov9tD z%~>`3qM|#lC@}*q6$AWL9Ik5{y&sJz-8#RQN0f^e#KPMvM%Jtbr%b`TPN5BE>!l0+ zbT!onx2q5E%@)^qKdTR!Xk9M*mM8l$44DeYoS8}z$23hExo^)*Rvcco^~=8Je~7!@ zSg!3}aFASZp!%1T&V-XWMC$pO+)FczaZSew5x6uDg@hTZX!Wfi`E@Ri-C)Cn>#j8R zUyk{ta(|(b4W{t-|6nzQXUo!B=pD7%vcfR7!IPTA_8v4Le6|I6ab7b@>K{4=JR4p& zK&Z9dty#5BwqT|-sdx45#F zfBI7UMf!P|$F(PK->8A^`S3KnJ)fN5HbgvxTW;MZviBGCOUaF7nO!jy50G-t78PeR zKU($7hxWvCE=wAD4RsC;AesIO8qHJrvTj7Zy=!yqB%2H*1F!h%jhhOQ#RjnxE?Ao^J#-;9211QgO|0 z8(#FhWb9L9^C9Gy`Dk4gIQ1lQG3I8h<BzE*Fmgb1mWhCH;Ic9-4O9FN;HkQ+MPCGvSq^SN4%vyISU-^fWH6!WMf6Rzf zyg}oREp)1FMCffr_LZMZLHaLs7voaD`Of-AF)HYqFY`uOtv!nMBe;WuaEhkGtzu6& z;L7Im*(07WD-%kOy$y)Ga7+6|K_{Q7#KW&JKm?PTrV^gQa)r~MPufjQjkAP zLgDz$FcQ#a^#eZbMB(Yg5Y728g0hvFD>R>B)NaJKl*#UGZHn%rYXFC!TdID;SY^IDUf=h3f9Jyb&CYdQjbR@ZP6 z3kma|h++|pb9wQ^oEc-Dh>K$qc3sUfjn7px7^3Jg#;k&>_Z5_R_MG+#5YstR5Tuv! zbt^c#s>f3wFf|bANB+8HQIX?$tK#VJh11JwMJukOHPmzzgN`TCV+sbg&f<(jSMbHL z?;WL+*E$4P`U{Sa>zC^DPHD5}7P#h3o>Wjh)UDf9qDfyYc>fz#rXkDBLeU-dZfc~0 zNaKZ(c#{uNRm1emsSSQjDvQt@UokaeFRC+fw9_`eWzxc*Hh4URkG$(MFD30x4E`c< zATz(lsiSqSmvO|X80TY9iPG;MnkLV-b`HNce_PzmD*SHlgZoF`M81!G^%?Y1IhrWm zmgSTN@I@r@i#4rPF?$b?f4F#^@IX0`I)x~|N>m0#Z$*6PsDRl{Xq1LEOeGyt6^DIn zX>fR7`TA29L&dRe;~+m3{S)laz@q>}Gl2$r)7CUgmNg~&#Vb6`A}cPQNWC~iPw{Ei z&ro;B?-mKDk)If2{4~6A9e;#yegN%`9y4q~vo$(Dp0KyU`Csa)@N+&Tb;sY&y*lQp zkl++|mWoYQ+7%t71DG6aV#4`ME4HlC&PZRC@?VofG77&K?}^5~4Q}zuySTw4Hmj+1 z`cw;p%vAP{@mx58)o|-PZhrRF8lMjbPg0WnYtu2Gw?FJ|*Kx8ceeQ2G*O7B{Va;^Y zc)30*oRO=HJ*&UcbDOsYbrbE+{t+1vFlu;aub_#-+M82!rs+|1hMhyp3;WkMI+kRlojz1auA&+YBt~$SBt28jV#FLmgoZ-YRuXHFADI1vF8hX4X z=afcVm0G0ydPOH3Cz8L?hebKmV=eEnuf^3|8s)J|?3kJ-F6QOseuJ1>T>>>J^N6&oNWOQHOIR~g22L~G;xxLgP6O?3P;y0}0 za`Bc^5hyL2W4;wN=CcU;sVCjY3Qh>yk10Qyk?zPhmO>2Fdx1DmKgi>8>QhCyslCahl2M44^Wa4oJ>sQ~sVI zL8+4wY)DsF^t?O4^?IjK*PC0XmCQ5^)$jlto?b?KC4Z&eo5&d3Uo-!IpkW!Z^i6LscCcyp zEf`{pQ#dvha#F;EHA{7Yi_es%dQPS6ifP8pdz;%}sJC-?5)5=+APq=B|LNtO{ix?k zKl1IH2nk~QRj_V6o0!rlF*7br72%?X$;)0h^ePw~AJyDo>X*CN_w2O&6BFwMZb3-i z<MZ zyKm}nZ^$n2mcpUSQ$S5G$_b;7P6~|B9bJpon&HZ~t*%XRH@uxVyQFgMT-Y(^wA^#S z?~)5MobnLQhgW$qTGNlwr4g65;xQDtvukudiHfOPF;c@OjRXEd-RY&unVzoZ8zuLz zJSa)GhA-Jo_qL!I2n;wEFj?g7{Vx5wjm^_Kp*zlxtw%)QM-?lL0nXj&=-OT+GByr*NHs!VFp_a{` zi&P@@;z9jP$%ll-oK*oI<<{9_>8p)itvvl=qbImhDJ%3A<&aYR*=h;Z+M7ru#~IHU zB4E)=G0CU7c;c6ofN-@o4Xq zMUApeMjCJU7>~%iZd-{}rO~TWBOUXZ$2w)N93LMLOc`FCN<>UQ&#w~MzOuSm!EWPY zYuWTddQ9%6AIFz_FE*};Zm=kv*&8^Nk~XL@+q8jO#4AT1+AD07&Ev#XJ?JcH^?kQh zN7cdmO3(Sq$Fq0CK2Xfh^Fo8~(-7V_g1RUX&6{C%!aDlY@Pp^V#IL8zTyN81R6kyO zjaba}TpGx>$7j41BZ%7J#gWZsKLSv2uJ2785yP!UGcy$ql@b0vPO@Jr$!BRlDqhfJ zLuX&sm9@B%FgcYng)y1hQC&+$Y%wK)Po$hH76Z0|_mZ2)VtZx{*OH>NvuszsUC6Tj zRK%&c%H3gVe^l5YXoD(EG3eDvE=+F<8e@nWB>{6uZ4=1Zx*Mt*vzLtQ+RTq_Gut?f z>iIrPdv;#8a@1hjnbJ!2>mB8fDdTnwCK;9)2HHeLjjp#;vbI*4XvnT7c)nae6C8gQt9pV+>p}vA z*Je@QP)^^*x+-a-Z zBaW{p(mwGEo7`Yq&pDj>q98%*xdP?8_YTsn6(bolR;|*bpo3WD9$&I-j`Qe{b?Au< z2?3wsbPV5WhwjLVRB8j(=gPn3q=%$k<|$<-XPS>5Mlgdqp9)_Oi$d=ugBibFD-Wms z&J^?)lVQYi#{vn^k&pJl%Yjp(S}ZNG2hJoFD;%vp)Tr^qJKQ#U%tx=pe#{U^^g5h& z_ZY`51yMXM7o&u@=imvD;%;3OS6!r#3j^Uk6O~CrJ@PO&>3V9TxYNcI!OqiQU z75Bpk-gnl|3WCYHPPe88jVJF36kjiSB=OMfhM@`Qx!?ULR*(!Flmj08cXfcs2}Xds z@x5U9cv(FcXN7l-?T3@AiooMyxg*ecUadqMQ9I-co;F2arl%HvBNCo5ev#69QPl~5 zi8$n_ifJmHMziCVSH~3U{3IWJfsbbUI{LDTTRC9IO3O7mEaLcYM#t#rRo+~4-Z(KF z%LwKmsxX{(FNcY25s7{bU$Go22^OiIqB_D)GP&=}#nh|l+n1lEdRtyKr?={WUEaD} zRomYrhAS}AJ5znjkp1@YRv%ws;PNUTRon>KDUZ*(XJxW?#*(9xw`(7Ue9s^0ocUTa zyVIysN|462bGGJR&yG5}80EX-cVY05?}<`-&ar7fr5oKDFbU?Av|UL|En^D0YU*Z< z)0pViJTA*8h~Y-j=aEHavni3m_ie)gycq$0G|yb3I^$}>`L5tisVm;lNF2Q#nKx(l zV#SdTw~5u8d4o+6ARFvJ`OLj^tsN}j*xI;NokO%NMPz08LlpivT7U*EtQ)J^9m&aa#dO^g#Jzmw^0*LE72?Y;n-4> zfiV6f-wo+4hwLPtqzZ_q6{ekDvABE~eB0APJ~XgfQuYp;scrf{f4p$k!sGlk+7p4m zmyA>N70aAN>Yn0>#rzjZt(Sa8-UX}Lro0ire)hI9>p)JQo<^0$GQ{>wJx6s&k8!qT zo>;Oqno3kyR}zwv>43@UvamRs`<~>mM%vgRw$MLk9-^4?HjS<1m;Fw{e^<8;zC-rspPT->vi~bzckmsu1HJw$>NoU1{VLUgy#I>w{&%4X z`p>^6^Oy6t{$1pGK<6*>G4!9k>~s)E9oY4sTnC_}gT(#89QW7rIS=yJe?6HV*lDuZ zLH_zcum6g6aFD+~(CfdZULX7h+Fwzw|L!y$%XE69OSPL^!l%<*Z<_px_|QA zY$`R5>i{m1xqpkIFuejVhm{~U5Uu%|yJr-S_UALG}7e*HQ4b&$XQbI9qy zp8lAe4&J~1WBfYMuRjOB4)WK34mlmz(;t)5LH_!W@#{dp{v7-|c>ns(A*Ta-`eSlB z$Y1|4ejVu7pMzfq`RhN2oDS^ikICsEfBnb!b)a8=4t^cvum2o!I=xDF@F6&(67QL zOHuwP52?b^iFOw+s&^U2hue7=E!_nf+dh&nNz5VOv6E9($T&wkYxz-C!$<*SSdpeb zTiQqJyG5ev{XFY;5#AMJ@v}{=(@xD#k3D;I(#X)^qP0Q(ERf^c#h37Ac=b_Of^tSz4AEw&JPj*LHmL0S2Pj~aLtrgR~{|< zJk)K`HXk(9l)T>CSh1-lVXh7S7Po&iS1NK9&g&DkkX%E};GRA^@2t;Q&aB$|!Q5iy zL6dmQn@bDVz*S49MoU}96N|BwMt6%%UDslf>lSVmjKhfOqN%E;yB%sr)I98i1JQ0( z=PcFGbF-&Wi}~JL74*bTWECQzHdkeam><|PiPJ}Be3!~I-M#R-Qw!q}PdNTiRsNy1 z*HH?fx+WQ*+^e!E_>raC7EOi-K=S$^5toTDT!uqJ(;RU#1gGV5a?fiDGe81rrK(84 zVQ~Fd5}=m%J>Ngw8CAYnN4&GEr6VxLe`qIerBr-@qsv%;%qMt_mQUnP&N;pNBA_0kGxbY%n*DzigmpCMk zAJFzUaA{JsAtwQyOA|>1w&H1m`3*QH&ZkWs-T;qut4-E%s#voi0od+6_7dg9tjFFT zc^xeKc}I-TWy_}_kHE~gZtu2Ynb$j$(Eb6V$Tpn|H#*Wr&P+95@(b}pJwtJUD>cC@ zE@2kh855gi##BXTUrX3X_xY|p$Zg6oeM>pcT`t<@RAmhEY4*X?xD(?Kk8pgymIr@z z@v<-kzF7gqiV|20x4ecGa}`=mKXShsnNqnNlko9ANOS}Ad$+_!6k=q2uCuiwe;V0I zuiH;W0tT(UpRC)JD|^r%bGq|dU$m`vd|^g&4U4{9J$0?Y7a2RJcOgqy+Wwf6q7X6n z=_MGETNDS`Rndv2o>GLp7IT9Vrxa~Eo=EQ@MOyeMa?;|kGXGdU=1CX@%iApfuW z>u5WibBe3Qn1C6+-iPCpipd1Sm%7>RncB~Ug@MX$*=xbEYwy5W%%bIf(JC9|u*F7a zJ8BHHwC2pr-VTAo$wp>U4KcUy7L$=PX(v;#BtVke=S#$ofN`I#LNbRaY%Bxr@Cx*c zCVv?9!}H21&)RMoGkknXT&yT;VkWjvLDgBgHmR!PX4QfM-#_tg_II6{C`>^~sp~h> zz8bvgxAG8vbLuVfE{Y6Zjas$9uI#|8(5-7Y-BA6roc6;qS6%mFC+FNS!;|rK1=xH*>moene0mFzk(t@CoAs>0%A0UKp^m_a9J{%rrD)kU4Zxj z35(?@@@S4_dQn}ULg!!zACsz7+1UuVssSg3qQS!b{Z6jUd8>A7cQk5U^#5{Ztp_J|`4`v~rVa(ib^b_ucybrUWap z)+nqAy4SE${W>U`5^sR>UYO~E?t;Akx1L8S4^}GpSDQcI4Ta?j zwKiA`)mJ!b6)$d`cFUU$XKv?_wsgM$utAC)X|YvXX*eqk=NUzH`A@A&W`}%YWXD-1 zKj@v&OM79w{ka66(H?zg&UkEi)~RDPc6kQ15?AmxqRUpLg2n!EPXrUTN&2{-#tFTQju$j*gyf zez>Us!;9F#soJZPK5s=^Pzf9GJG$7&OVj~4So)W!oj?+Rc5;d4*t?@nPoPVbK+$@U zZP;2sHVs#dFP^2iC&Sq*&_eU2FlSsmDw>m)xrhRs; zlZZaano^DrgSoQU41#Ibacmv_^c(zekdEBgAY=zs1}>z>i}bj(LvX>1;PQMXRDv?+ zT5U6~3*83JvId>IwZ%OuxbkJVESh((E}DMM!JNosoNO5!t%j|6wIe&a#GN{+AHnOA zdFl~YM$2ioU5<*n(pGgj;s-QstjZ#z%Uq0j?Bq4GakDxymGR&x_6)cz>ibDI^?P3% zEZiiIO6QvjEa=3Z>#P88AYB-y$kL zA`=i?O#%cj%q%W{W~(GS;bqHv<{c@?&nYX}LK{L+7uC+Cz4tJ?k=!sCPMepn!)7V8 zzi!&UV?mHU9xS%k|~#gnM38}pOJJvd2H~;)dVN| zX?Vg9RH73<3GmCcoB|yl9`}53>0i3SG?B`W4~}I_3Vu=ge4>}Ic?&r#2Yh|4HH})i zQR=OJ1YCA>0&n7gVvqQ`I^^m5=&+#*&{%K>E>wx6d9psY!bKR|rFP)M78l9Kkbo{d z(dm3LoZd`ll4PUk^i3&#A%kj4*W=|7m%+RDGcSIBr?2)t?6#?W*_7pRaB;i;%xU|t z)I<0_wuaDUZZki7VerU-i^9^9OEA6}7RJ8QhYi?L!E(k&gDVFH}fZDnWOJN(mOIV{Bje?>Si= z{8HQhgY4u#^YIAZ_8uTS^ZBDSv8}{+`IU1q#cjj9b3^hk?>|$vKYH;UiyLK+=f?FT z++uBdOefN+49?xpy~XQP&A6&Fd#Qqp1hj%HoGY|CU^n|b0|E-iwstK~-ttEr%0%pV zzF*glHE%dmvKz26jz5a?nRaNL6dCe2z8)P@N)e-H{j%qI}`%T3ne7s6Gd*9GjL zRIiO!mhp->(XES^yL~^{ImZTPpMDC{XF4`)#?UPr{qpu+SM$jwLz!c-No7YZ^nSz^OUMnXZa}7 zq4jQByBQCC#uTsr@If%)qP8UUj6Mn3lzkUGkA2G<%x#TK`#6Z;z!|p2s$eD`&Mo($htat&de=BdK zlf~lj?!h#}GF#+fxetKw{i+iJhFd0k+2D$#mmQfdP572SoVyuK9p1lGA(Tby~@hW+vsxvF`vQSPF- za6@$2+s{vqi)avEut8)QW#t)oWOm;cFLChHB-EBZ`m7h}c8SFZhItt=pR7Zdno576Ybtf!7&fH1Tl-MYp5k;w5;CTsW zlD5KduP+WakqwD>U?%GXTTTfhH-iO|6LMIjkQWyMci=)#iJK15PIpnClEn(@DgOD= ztvbM8u^xG_a?k(mN#!5=>%eke3w5IYW<@-LWgoL%%yyLy3Q|p?`)$8DFsrNk`>8NU`{i2r;!ns!SI$2zNGIKDQ9 zn3IrSKoKs`_30g*UfiloWfRAzF2+^IbiFyN?(ArUv1@HWuinHqENtDt?mfKmCXfB@ z7%trCE{A^6^-AIMv1V*DU)1Ol%Kiy+R*cy%Y0FnFO$;t5I#)9xXhQ`w^a(U#ZuDX8p!9 zKebYWeVaYpk;nZm%CGHx8qz&ptn?6m(qL4 zE1$WMLuV*ozJ6S?ElBb1`QC7t{|!X@oo`=XQ*JrnNI-Ek5*NZzCB`u+)Ne4h%yD<@ zLOpcvLIq*tHd)WNaA^zq*Va#^z2J9IMc)dNzjFQa#|3)AFEkYmmf{Dm!9QFUE_hKq z{NrWBMs(}9ctnN4qrF$*K^^%QzB6JKp#+32u=u3hC*XRya<%33)^z?}b_Sl)G>52O z!`T^F-?;(rzN{=Rl6>f%z2LT>h2Egt7yPgck&bcwSv98pvdW`KVYT&B#QdT1Bk_+! zPeXRok!66;@~#20Cwh+^^`qqdte;F&KmfS#_4P9CfodFazS@OIcEU3A+p zfSwV3LF9Ubz%Uc#@-gYn1cmb zCYs_Hu}@js#$3WC(V&Az=JW8$7+22P;ru6Tkj!ji`krX#pf%E$#hZ-9fD7#_N#qlS^5P`#k@ESxXR}(B+ zya`L6W}~Y06#jgXiMjFh=fWiM`**In^*)6luUX09;RN!W>8aL*Ayu=-NM2k`0`Y}v zylkO0`S+IF4mJfVkWd8cG;LaoImz4und5zbIiKt(8_1R+361!#HML|LY zG0fS4&yDN&mQuOGZI@2^Rv z)~@_NPk$5YaGNvl^|lOgbB~Dw>X4cMoVKd|$!e_pRV69`m(1H@(~(IF=3^#$dhM}A zRx)$Ol;7Y?s^TR$>2?kh;N4$yO<;0Xb$Zo*>5}Yy*}OLBSWTh%o#i?c_spbnFLjZ= zXVF>@CPcpHKGn?P*yspO*EyVMN%=9}wq^&77mlcCgHtpK;o`S6aQ}zB?+$CK&(;m1 zVxvow5)=@mDpI5dM4CvKULvB>K?DQ@5(Ghd6_BnJks9e$LhnfLJ@g)02&8cLH}}jr zbEe!ocji0K+&|_I9v(JflbyYPYrSi&_kDliZY%ZieO?Q-3ET|yPKno4qi0m3uHmy( zeg?pzbn-Rh^?^PL-`)SLRQb4dMhrA~($pUBTUoPG$ee*rM-t9JbQIa^R@8WAJUkBM zD$WpJ;qTUy4<0@^aVt=jR%Qub9yj^f>~j~An=4Q!^^(>zfvbp9MvV<3v{yL37{N6` z^Fe$3+7-|W1{;Cf6*l^Mh?^S*?qQ4&`4nwE#-IxB@}8i%X~ue;RAX~_SP}Z^ca)%Px zRSAhNuPYztU;DuMtBT!k>Vpcr?gad{D1{{}!*_4)LL1y3Jo#-GCEAZuZiWZwTy+p& zCZ}7*N`3gu5oP2(MC@vz)P?38q2@~Gnxw#fkjrHdka2)rzIEN^x&hI|y!YSi37QQuuR%s!%fRohkNenNv&D``($t({BS3Zym|KQ}uv5Z~hpe70;6sJfC_# zy5ma8kFJumOYCTQx|47;?+SFnACtYuy|tTLs<PwzOgt#&di}U92lOVdKV3f@ z^3&|z@j~|q>>)%GxUm01)XDNUgO*%H%CzNx!Sp};MdxT==)~aAV?pRx@}V?tlhh-; zpUXC-Nk8b)P@abq^acjxSn!e?Z76b$+vTyt`#Au~>1cFcQswL7v#xhkZ|=m(lQ%K0 z%58X28>(kcPuxpT`JCfIyPtzU1I5a*($T%YSe4H`arB_Kpgw0Oy&X@m^E5KNs2lZ; zTJGxqXT+9&6ZQUwO4z>xY?3g=U9XLz`$Oo0nS0X&AZ_L*=UUD{tVbY6X>K$=TuR}Z z3v*9x9H(|wM8Jyl>%p7b&_~26D7_Wd2z_5SQss^4-1Q%W{B#mgqD|?d!ypZP_Hm9( zy4{dN$VAQpC-{Oaxd*(F`P{};hRO1a;C3(Pzy!#SGcY81sp#4~vpA#0AKXhy```) z$7=m9Y>+kox@36mW7S_|@nDz+#e>!F2%YaXg$+QElcUSA^tQNlM{}o7VI3$L3%Ynn z%QibQiVwRpnz#1ZlxNOBSH}Oj(M&xhp&mv*i_KgJ&uN8R@uv(XvTD?X(JGN8V)S0x z{BTa6i8E62U}hezN9T>jzpV*KIrTYIlPT|UxL*9DtLDLEm-1`*#=<*KonvB1yX!A{ zYyZG@qw|~3KvV@G!J>Sx1v7QiZ|^{2JP1GL7iA2{e!d%lJ%e?Liz7i0YXl3i`$k=X zYq>{b`2;bCDF}$1;sAk zZO9zZ;$k!B^N$k<3v#Tibl2}UJ2S?UQGEPLC-DDGV-@~y^4-4*&n-*4qqe0QWUr1% z+vQUUh)7B7a(1>YT%n(o84sg$QRiDDTm2Z34d@y^5^CyX=6O1+(d|t^>V)}5>&d;x zDh-%3kg-KrBnDgvOEp-9;%RG}BtOhv-qURBqb?#?qAuo&%-WI0`;qzdT;3Y0t3Cs{ z!oV4E1Ho?-Zmn_tVN?=`vT&k(?B#koc6;kr>-bWdy3IzcdOVd26b3VG~1!PXjnMK*TTH4^g7dmDC3X%rgs*;ZAN+5J(Ix0hDBKw^lM|aMg(8h z)g&-4Cr+v|TVE0GQGEa+*?zi)coWCiXv8!Pto7k@Kb;o(+To!9vu6iYjRuG89*$=` zTN!>bXw)Hh71wQZ_0b$p+v6pQ4+b&Xs;x4N;My}#$r%WLomL53SUB!2jm@^8_eYt@ z$6S@FeFJOulzLrE_r{pXbe_GNFHN|x+~n{ZGIGi*G*l|6Xq(HL`+eMEG-G~dZdb{V zB`VMJu80jai~}|d#)qdse~h>trRwhaBHApfXLVb@rBQ;5XrD+`De(Z}8OV5I*drPF zlV(V!DTJqpIzs8ivyIovw`yu_0$TXkcgM!ZxQuI_PQARF7TIwc0-F0flIj16y+C?k zfH_8EvgduQ8X#r60nZ_m<`l@l$-|A=6QOFuMIp zJndM!IE)>8ll%QqYG=L&J<&(ZaE^KOwk5w&`?0D=J1%aJuwk%$atZg_wOa)I6G-;2 zqTrjLFgE$@3}1=OaA7YA@|B1w=KM#nO&{KoK*WWG{TFQNO=#_^)yeWrKJ7t=-8KN* zx(LlU4_kiou_o0IS#>Cv*!o6)1KBm#D1`oTd%;OO!<-J0{x#6%-s`2d=8_}qrG~=`X^bk-4X2&UcQCh+a+?QysG3M10#zRSdY=a+ zt7AQ1iK>-D?i!te7S~?5E)hPvm@z)B-Z{0s?Sn%PHHtwfWWgR@4N0%rG(K8hC{o_5 zvnEB3%<=p5x&z!}ard`(zp0=^Y?w3rY>rZMJ4>dXZLESvqgW2Aqq{5hCBFSxJBtp# zOq@efo3ziB1y;Vi>R61<(zZswHW0Y@A|=Y}WM8G4RnK4&=>oTg2fKKKv3F3rLGk|L zNqUL&)mj^ZJ7x~s6Q7Rsk{k)dL;l0%IQNy{lU7t3i#N>nYv5&Veh-I<@6 zl`&*D-^P&A{w$f*ZO@C)@^Y1V(tgvGM=9^!5fMpxhyt1*l<8MuxbLZyP%f|!yK0eH zU*fnG;x|%h(l)mhlJ?KV6#OXqybam_gWI$6OQ1i6w6a2QIurMb)dzPHi^uWnZ^&@X zdxSfP-t?)J$<2nen^-;E!*%ON_18yfM%NHr^Phr8RERsb;^6ZhJA66h`OZ7HVX@kJ z1-k;}S04y%Wzm{Ux0SSQ4n(&tTWrbq8vPFhYYySOcuQXi&ck!@RR|i}fOMSfMRuXn z9(S3K*nZNTI-PF5?1IM~IV7LceD;j`P!8(t-Nmw@M9wi8MG&-hc-QHZKu>am1gSM6 zKET%I##X#xWp#JsR5diGvi!GZ(U109k3%`1Fd4p}?jPFhJxnz>lff){bH{5E5`75D zCu{*u&g8>t($`p-zg{O1{k@aX|Ks_6VJ9 zj51EFN&c5ZbK<4GGF2y{GxQa#-<&@Ipmv{^c0ncENarWB-rDVe@ALunzUBglfCplW ze1Q?qhZFX2^hp*JU3VE(Q#%vhB0_RK@Y51*jbp3kw^jpPKz{v;a2XOv`WYy% z(k^j0S=>?PF61#N^Uu0tWNqn{gbxXGB{`u>p`4SdIqGGCD7pIgn*E^G;6rdY{DB@p zojCZ88_x+TJ#JCwC;xRyhYyl`rE=3o%ZekPoh9YnUMrkGZu1$qW1p2#emC#hxeB01wsJe=fkOhBX6TclTU3pg8dy7b zRChF8jNSIJJuZ1$Wya+U{Oy6G}G2CUTxVDt)jh`8c{cQC^KwTegP~1dN&nAa{Nn zHc2Lfv4@fC`Wrm7-2qe>Enee)sv*p`A~eO_h(sq7dtncTEF--!V(>|AD&fWgR!3&G zW$J`AyY2$G^(c4F6s#pfYFJ@D~?q=GEC%F-TATiLizG48au zag00n6}~06ar+ujTTa+|z~&8`f788g(?S~qh5$ve1^ zPxDEWS2G`CL}gqU^oOj6QXe+D*w1Y~XC{RTn2K({=zII0EQtP@ zIP!1vv40H)CtW}SMg_r;AIMi`2Abr><(oKW>J4Y1Nfof3@9LE35m}QE`5CB*6^&>l z(%mUOOuf}M(GC~pp*Br_(-6B0r37pw9xCHG-H~K4M#^*|jT4Qa?wCc$Tn?dbY@N%s z@3FSo4m%K0K3kY(FZ2%Q%$*n*n1*-uw&W1L5nV~h|16m^8Slig)qdTOWGP{c)vipM zNmY6r9QBo*ZBY~-;}QCBSXu~0uGwr{;^{uAK0F#*#OM$|)8lxz(a_@45$NUy2`p#f5OQ*1oWR8R!tIDf@kdgpiWCVbe?WOA2Y`ACP?79XO?3~h*9Lc1i~B3c3`+s zQy=S2s~{4sC^&Y(^wN0lJRpWNlkg|>6udh*51(AGtU$)fMgSMTOgRM9#!xHMQ)%Cv8j_88Mm+mM&v?Z)6ro|Pc{asMLK?|NFy7fRTaRYn})rnlPQ2X zG;u%oJiX#qQT7>jxJnoxSd-fR4$=Y2UMD|NA{BUQ5q122>iF#}cd41VV3Vq0^K0ir z+@rZ5(NkS$Qu=kyGtdWR;uTT!kTI@;cx%9TRCmZVtTO677R)oYZsv+|TlVP(x(%ic zzbEsrxY@br1&+`j>Qnw z6lIzO%YKqrGrIIZ!4;{Zj`u#Y2jK3IoyOAyQZD8Gu3N$QFwJ-f~cZzfw0T!c#e%+K~ekU4T zQlb}2uuqp-Ez)#qD!0z?Jx9VQ?QhyLp!(I6x%RbjmjbQ@+@R@9^!dq`^Q|O5SD6V= zh#g<_WxihAd!w87qB7I@r*S>E2^TjlY3#YBY5U^m7R>IlhegPLx$rNF-2b-L`xiy+ z0~d^6JK$F2hv;IMBxT>wZEFPq?!e#8Kq^aX>_+E*0GwHyJ5L{==*#cu9nuO?-_@6jHepQ<>flV|aO`XuR*-Bade0?$T zn$&6i8?KZtE>agF9t@Y3vNces`y4EsfyN^yIB7g`T6%fU-KR@oz6_{PJ#RV@&ea#7 z!A$@s<3T7J!{8vF-`z1`*#1I&i8#AU|1&Q=Ws2EVLB3#XdD!kO{Ee(9Ar1Lz6dm@% zW2)Vm&vu@yqU?c%LpsX)^$QFUTQq0TPRsXZ z_SF3M_|@>YNC!ddgWF3tR8T`{q^)+gj84vX7`#0q8TPK zXgTK1_q{oHyyI=Kg+s$#P@Khx;W^;~5~d{`9nDux2AB1d>QI9R$_k3tbtV3g!~TH` zLfM0u`sn_#UW(XPFXkT@YIwKf-OF1wWv{bNsdo4dN0Fk)`7CXp&}JmLwB``*e#_(9 zpW-=*XP`2>!*4aVXCMmjz26c=^Itrfe|$p!;qL{72D*_NzR?Fy@V9WM=@xQKY#bxr zS(4u52R{g_CDB8BMZ6Mh+(yrz7v!)<46AZ~ zh-RTHa~^$d?%fvO37IHAR`HFr#KM|y1gU6Y-LdYorEcz& z5?=Z>suv{FY07@Yfw{8EP^2}4svx0ys7^emmKCC|bYdXE=Gvaw^K?EfMELr(VyC3d z$)@?IdaLPg9w9Q@HybTAdl7+ceS9}au@awYn{bkG~kRczN_9$raeRy3G!5$0Q zJ6?!vC%?a4e{qC#rY-HosZZNDqHye{3#WYYawq9K`X^E1uaJow!vk)G(B`DVqS`O! zy*V3V8k~M8vU}ak5dlW8<%`~78PyyZZ^QLJ87wI`IAM9hmp?dTy%x)aeAx6XN49Ti z^G2kvQ{C=wfWz+95(1^iHs(G`s{zS}VQqBwCc6IX#oTYRJRUif&bRK$E`DWgTw=R) zvCekfQy$k*n;geaEwW!=H+S+>uYbK__NloGW#Xw1AC(9-y~rhh5~T~W04_na?oJw@ zewFTVpeVlPNaI}9FRs{`@MxtA)aCFDRZ7==?vS>4Eu%{KidbpJWR1PTasw?m=E|$z zC(WkiDHz3eQ?{RZ;2IFml-|fS(#5Grh+g*rQ)y&GjAQAf~sjOb&4Sk_E5}M$w z>!%G>QPx8p#kOJ_s;UBW%T^OJi@5cOH)5;j{jus_yzTaWh31Rp3M`r>GL~MHVos|y z@&qeHZ$lmMcL^CHnvA^^iFtSZmVYp%*z;U&d_~Isy^rf1@$44Hck6>i z)w(ALEO<2MC|FTvNS|(~P=8i0?Iz9nXcgYgGK=@;!>Bt}ibmU;{!tMT=>dXx#mQ*} z5c52lcX2@RDfc-i+X2*oiTuOcO^e%a#f~kBCQ5)Cp%2JzK?r;28lTYC3}2<8n-@J; zcSUGl6qDfh%`WodnmFZg_K$MQBkNCNPXJd6us)gkZ;{fs`SZ8IZpuxp&{8bp4ZvY!Rf8Q^%-iB3H{bMH4k6t&UDTR8eje*1)-Q* zz#62CsV{iqYga!U#=-SgPhR;-ZTv?>x$EX-q@D1z6y+g{2DkidEHqL3j&K-6aqL&E zuX*|F+W{#(>h{-ltGDpok7pptgGpaW+rNlL8UNe_=kGWl;|gt!KNUV0{@h0PF+$`+Xbv zp#e^MMSjI@ZfBsUXCQ4k#xm_cRUSaOV58|}g_VE{=mI1AzVkbA_F*O09 zClv|WS!-Cn8gY_O^S(;*EYwNca_#4kV!)_217nE2I3j;q+&q!p zvdy$y_I&&HmnPk*D)hc_@`n_oF92Hj%p%^B&bkgI_omImcI&%Qk3a0aao^$K6$f>j z%)}3wKuvil!0gyI+H=vtX6~^O?UG|(=Ss(PouE{gxIQmVakC}1+Y*3i>6Zl?6g!pq zjP=Pd`iQ@sGd(xYnD1E1 zmbjCYGqQ08Qar^E(D_KTLwNu6c* zRt1FAt4EHQeS~}6)!!^IOv$KXNMoUca6HW%=3V*FvubQ>?i4)JCg}84c%9F>${FZ! zH5*peQ0B4?nYP)37n$!Ob5>rL9&I+xg4t-%fgcyN?^WLr4KGhfnt6efR%2V-nQ}4X zx^BSdJ`C_5b^eiNH|fD9@rsf266{ySo)uA6w3`#3k$MKg7~>GlZ_hxMXiS1lm?!-Y zZo7H`lKbKarcV#z4X})HqJ_pX|D37GmyjuSY!sj_4iB?Inp)0Z}6tb9)<6J zN@)M5)rU_JZdcVV%)G&JXG9nhE<8&VRe!zh%WQIgBy!e*08jV{G8q;{2x=Cucdt%Y zvb?!|2GYgX4z5p1DGE)wksa)qquirebgSlEWH{}g z19k&;fqSM>j_g&$)3`HGy#^pAee(%e%yjt~kc7Oc%6!X%^ZI($>sL&4D@bwkMALq< z+&?OH^h~Byb{*0tHNqaqek{&^s&$b*)Qy8<{TRBr4b$EE8SXeHRnW{;P`pXsy!tVi z>^P?KS&~$cjz@%cn<7Z<&&Giy|HD83n+*T2YLY=w_V97QELBG{U@{0LqbZ*xCW~0M zrCvM($sq2mahVtoqy`>pm@d?o%Ay)bb`w=%2ooqu#8@$)=Lf-`p9;6MQ^+wr$u<>|b3tJF6xKoPEoxW`K~x6 zI+!y!Q(^z0`R?IqL^-}|tT0}|llHes$|xs5%=~Y2SPXJv71cY}s2Tc>A@Zg~MP))~ zorbKJYQ2%tlQ-1wf9bh9zYiNbx|#!>w5{=}$hF{3w)3P>r=2faThi)!-9R0se4Z5A z;RAmNM{DddZm{taQVJd1nCe#0JDD!o?fZG#AtE6!pm7EdXx${ZtGA@2X zi%{!oNwD0FaUl-a4x`Dosu!IY4V&}rXxqOSnex`bY?-WF?GKjE)q1S1Jo79-Oq4cO z)Qe)1Sx&2Hr);Q24>IvhMs#snV(;+1Rj1pHo6uahh+E~U(TAS0x-9B@bVs%0C!~$g zl7ck)vBf$kDuuVD!V0Tuj(b-RL~5Z2&3&By93^j-E)Ug-N+Cpxd1 zS>0c@`2ba(bep1-2P{(iDavSyza7^yHlGTMfHkE(7%rkU$9j3*jQ=%2PaM9-+4{5M zN#^&-mVA=v!0Fd&G*>)wMZRD}ewEyCU9TB-tym*a0r%N*@gMKE0mM3cq{ALVqvq8k z;?P)@Lwzl01%T>p$JSF}FNwp{z)a5wXX||lZFJI>(wX-O&~7*y>qf6B=0F}3M2eCo zA71+3E#iNm-FGg8m#K)ok~t^Z61+{tbIz9UX8AUkH>ZJhZ`E(@EibbnTL>)5SA4DLh3#qf+zp>-Qrw_x`x?Z!djwK; zGgLBsw`cAx4-T`+xOnh|B4bzoM+wSCX?F+F1J_6of0IyuyC(ULb;fm>J^|vn>JT2% z`azNWJ6|HTJ|`!>Wa2sj9WT~X7P>ZAzBe5USP^=TjwR;)lKq&znzU~Hhs<7}NoAaz zD%urR_UHj#l9*UnbE)s5ue4(bGIvrmZYzp<-#_kHcksIwiAfquSbaXT4~=RVaUGx?KjLu#fsoEesXje3LJrAAjQ z-AgR`&It_v=$Py~;3#l3s83(*!0{*nV4rUmYAo#hYy~+E=oJcD)>TBT$VS{hlxa2k zGvfH~Z8ok8Ug>zAViF)B-8aW7s9F9}DD*Z5yAQt3kC z!~H?sjZCcV&ia3>y1wRZ)VvDFp0#^70t_MEre8~75T~tazjn7JdnrcwIi2=(njRI< zwImQy(Hl@okvrh{&p-oEbR?0IACBFA$KXp8^yb56Iel!_WVB)9le9{}Ahzt692|W<^Cs<*5B~lIO~^==K}@0f{p~dRoG&4G6cdt$)ua{Lh1mKlFNZznLN$cPTuY z8sOO;?$C-);>S8F*#Pqj8OjQKZ+)6wQJH19DP|>hj8=384nNnUKz>Ce0mh_I3V4$y z?w-d+uYqg)+v2&KJILor662BBb9ZH1#?)}U9+5;EBrpUxgFcwg!>zH>izv7;| z$1?V$JS+Vb#~RRy1tfA~T5BEfAnKDLK>mK$FDrNB4)4sqr@IcNZhBu*?tdy$!Q#X* zBrppJbl6)3P|c`Mu*=Yn=fFuSe7p~tBZ^-fI~>8uSr20U=iMV+lRfYg-v)$wRLkz! za0H}+$XMdFNVYr?EBZeRigDq801|_L0VMd2DT$Yzb48Gs>rApGl0m6p04>A?sjN*y)L+ry*&Ev&exHi7K~}pF!7lC z+aT=Mx4b-_Mz z3Q&oE)yUKYWPnDgkJ@^~OR)BLx68lSmo=4Vzu3f23WnOpzZJ9Q2xM#!jdVDu?HBfB;nAdO(qG z*!$T(Soo2gARNiUk@ML@-Bbs(4KTK5ajkELpm~B*@lh}Alfg>+mKoqJfoO+Eg6W~F zA**`y^l#jHZrLO=VIm&b9j4Vd8>=dp{KrW7Z{&`1fActR_RLXXNWPis4{?plzhpm= zD4Tj=3ntZWUtvgqw2+m1)^_X{dotFtWu+u-yMd`E%FCiAccPbcsyRSb5%@7mV1?*~ znz+|iMNC3|-fSNlCZ6+^QU@!R*zptzT2S(ZPsfI_rMRw}UDF>$JD*nrJAE8+|^Gf#$oO{JcW29|$k#fmD%oBQlYq?UYS<6TcaR zFhW+~UZzyc%y{&DUxJk{>$GwTi|FJkn_mKW*Y6?{ShQ_0C}3}iti@`MSc6U4=Iz(6 z!zKZIWl`0PU6{g}|AzVRTslwXc`-f&v{F{$N_gmVr>|qKE_Cf(W50ecFU&{A+Buv%sdSH>{}FO&UwE8}D}CI zUfJ~K!r8$_Wv|rw?J8pPQJ2+gFRJV!UJTz{EDqV~3h)U*)ikPmwP*v3%v}A#VAa=V3!)`tN9G96~6m zjQHAZR@lgIC$}uCC5;ztKI&*ds0> z=JSv_LRikxTAV^RI&iTWLVI}iv-j2K`P_l!YD3FCd(|h~nZW>2f~)EmHoHN)>(0wb z+620fsxFU4@@U)bUAEOR-Q&XAd zEEcZWQF>|5_B6`lHZq3bj-rh8)~@}HR=Dx5o`|%sOIn0L?@bnG2Cf=Z>*hL8?!-*) z527W?Qn{(`DUUZ+RDt3iti4udJ9>o#2x#*Fv2Nea9N0mtxE^-~QsL)2Dk;vTFcPt0 zaC@B*!uvP<80ik&x83*ha2PK_YTe5{s7f&Rh)BLiMzN}=X8G)s`2Jc-l;Nb@GCb%G z6H~7bhq=se2oe*ycRaru0;9HzEzhnDD)i1yRa!j1C)w*HIET6{%t6=DasGvss8;z% z3#OmQ?`^l($AnkjH_%PA&ag$3(H(S8_jcr6D`GM53`us*~w zwsU(=W|?9aW-}4IU6vs@m0*N@j(LV+99c&eyiet3Cg^Pv zAaVw}j`iy?G`7jT)iL^3^OpL})C9hjj=lB(eJMJaWpxN5Cn$x5!q(;hT;!^)=&7vr z-?I zY_FoSwu)e%X|B`%CSDn)AA4I_?1^#V+>23K8y8;IxYV)8j<&;U11jD{A=;Q(&N0N% z^XXW3H~tdGOZqw>pV`plgvF*^2k*@na@7UmNg;sg*Qm4}uH%~_1$XscIgJr-*#vhx!$K3>G@&tt#mEr)S!B+Zr<_F__Pi6|m;clz;u z<;qf0lA*?n)OOy{x5b2|bBut=isyNQAlOj)zC$`aWJ_lZe&}a=6iEs1AO&W-2t)WG ziMb|D1KwHTZ3sjfH2^LRUe1q~%6tW|2V@KuC zP9Z!U15wipMMiJ|-q+!no!Muh@I?LblRgZZF1c`L+66E2T67#tn#H)>=pEO^e7L8ABc8Hl$&Img&WOxw^f zC*hg`$o-h}nDZ!qWS?=%u8{9=4VL_A*|}M_V&4n7`Nd!eTGHP16q~wt!Kqx4GQ;C_ zyW86wqH#yd3AL;A{W}61dCh+Eh=d)-XQh=f8_O-u53?sCpGn+Cnm{ak=)EAm@v>aC zVXfjJPJ-p2@Z%V&IjaDdH65zO%3qo;hW#1KyE4&%K8apeOpCGE1XJ7%K%w4z;G6Le zR`3W}Y$@sp3r9D%!o>LL4$XvjHl&Z^AAD{@>U)#y*!9~1G<+;idRTJvT

IQyCY+ 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

uO?(=!51U|J~*-lJ2$iV(fX>uY%- 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 E8|D)Sh5!Hn literal 0 HcmV?d00001 diff --git a/packages/app-store/autocheckin/static/icon.svg b/packages/app-store/autocheckin/static/icon.svg new file mode 100644 index 00000000000000..51f53f1ed9ad00 --- /dev/null +++ b/packages/app-store/autocheckin/static/icon.svg @@ -0,0 +1,4 @@ + + + + From 0064785116593dd5682a1004dc80e935157cfa4f Mon Sep 17 00:00:00 2001 From: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Date: Wed, 24 Apr 2024 03:23:17 +0530 Subject: [PATCH 011/482] fix: settings layout for org admin (#14723) --- .../settings/layouts/SettingsLayout.tsx | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/features/settings/layouts/SettingsLayout.tsx b/packages/features/settings/layouts/SettingsLayout.tsx index 228173520956f7..956adc6b92efd9 100644 --- a/packages/features/settings/layouts/SettingsLayout.tsx +++ b/packages/features/settings/layouts/SettingsLayout.tsx @@ -107,6 +107,12 @@ const tabs: VerticalTabItemProps[] = [ icon: "users", children: [], }, + { + name: "other_teams", + href: "/settings/organizations/teams/other", + icon: "users", + children: [], + }, { name: "admin", href: "/settings/admin", @@ -182,6 +188,7 @@ const useTabs = () => { // check if name is in adminRequiredKeys return processedTabs.filter((tab) => { if (organizationRequiredKeys.includes(tab.name)) return !!orgBranding; + if (tab.name === "other_teams" && !isOrgAdminOrOwner) return false; if (isAdmin) return true; return !adminRequiredKeys.includes(tab.name); @@ -392,17 +399,6 @@ const SettingsSidebarContainer = ({ const isOrgAdminOrOwner = currentOrg && currentOrg?.user?.role && ["OWNER", "ADMIN"].includes(currentOrg?.user?.role); - if (isOrgAdminOrOwner) { - const teamsIndex = tabsWithPermissions.findIndex((tab) => tab.name === "teams"); - - tabsWithPermissions.splice(teamsIndex + 1, 0, { - name: "other_teams", - href: "/settings/organizations/teams/other", - icon: "users", - children: [], - }); - } - return (