diff --git a/packages/platform/atoms/connect/OAuthConnect.tsx b/packages/platform/atoms/connect/OAuthConnect.tsx
index 22b3eae8cf..37fe19f0b6 100644
--- a/packages/platform/atoms/connect/OAuthConnect.tsx
+++ b/packages/platform/atoms/connect/OAuthConnect.tsx
@@ -1,5 +1,6 @@
"use client";
+import type { ReactNode } from "react";
import type { FC } from "react";
import type { CALENDARS } from "@calcom/platform-constants";
@@ -8,6 +9,7 @@ import { Button } from "@calcom/ui";
import type { OnCheckErrorType, UseCheckProps } from "../hooks/connect/useCheck";
import { useCheck } from "../hooks/connect/useCheck";
import { useConnect } from "../hooks/connect/useConnect";
+import { useConnectedCalendars } from "../hooks/useConnectedCalendars";
import { AtomsWrapper } from "../src/components/atoms-wrapper";
import { cn } from "../src/lib/utils";
@@ -19,6 +21,10 @@ export type OAuthConnectProps = {
onCheckError?: OnCheckErrorType;
redir?: string;
initialData: UseCheckProps["initialData"];
+ isMultiCalendar?: boolean;
+ tooltip?: ReactNode;
+ tooltipSide?: "top" | "bottom" | "left" | "right";
+ isClickable?: boolean;
};
export const OAuthConnect: FC<
@@ -34,9 +40,12 @@ export const OAuthConnect: FC<
calendar,
redir,
initialData,
+ isMultiCalendar = false,
+ tooltip,
+ tooltipSide = "bottom",
+ isClickable,
}) => {
const { connect } = useConnect(calendar, redir);
-
const { allowConnect, checked } = useCheck({
onCheckError,
calendar: calendar,
@@ -54,6 +63,24 @@ export const OAuthConnect: FC<
displayedLabel = alreadyConnectedLabel;
}
+ if (isMultiCalendar) {
+ return (
+
+ }
+ tooltipSide={tooltipSide}
+ tooltipOffset={10}
+ className={cn("", !isDisabled && "cursor-pointer", className)}
+ onClick={() => connect()}>
+ {displayedLabel}
+
+
+ );
+ }
+
return (
);
};
+
+export const ConnectedCalendarsTooltip = () => {
+ const { data: connectedCalendars, isLoading: isConnectedCalendarsLoading } = useConnectedCalendars({});
+
+ if (isConnectedCalendarsLoading)
+ return (
+
Loading...
+ );
+
+ return (
+
+ {connectedCalendars?.connectedCalendars.map((calendar, index, arr) => {
+ return (
+ <>
+
+ {calendar.primary?.name} - {calendar.primary?.email}
+
+ {arr.length - 1 !== index &&
}
+ >
+ );
+ })}
+
+ );
+};
diff --git a/packages/platform/atoms/connect/apple/AppleConnect.tsx b/packages/platform/atoms/connect/apple/AppleConnect.tsx
index e2848852ee..3d760cbb52 100644
--- a/packages/platform/atoms/connect/apple/AppleConnect.tsx
+++ b/packages/platform/atoms/connect/apple/AppleConnect.tsx
@@ -21,6 +21,7 @@ import { useSaveCalendarCredentials } from "../../hooks/connect/useConnect";
import { AtomsWrapper } from "../../src/components/atoms-wrapper";
import { useToast } from "../../src/components/ui/use-toast";
import { cn } from "../../src/lib/utils";
+import { ConnectedCalendarsTooltip } from "../OAuthConnect";
import type { OAuthConnectProps } from "../OAuthConnect";
export const AppleConnect: FC>> = ({
@@ -29,6 +30,10 @@ export const AppleConnect: FC>> = ({
loadingLabel,
className,
initialData,
+ isMultiCalendar = false,
+ tooltip,
+ tooltipSide = "bottom",
+ isClickable,
}) => {
const { t } = useLocale();
const form = useForm({
@@ -77,14 +82,36 @@ export const AppleConnect: FC>> = ({