import Link from "next/link"; import { useState } from "react"; import { InstallAppButtonWithoutPlanCheck } from "@calcom/app-store/InstallAppButtonWithoutPlanCheck"; import type { TDependencyData } from "@calcom/app-store/_appRegistry"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import type { App } from "@calcom/types/App"; import { Badge } from "@calcom/ui/components/badge"; import { Button } from "@calcom/ui/components/button"; import { Icon } from "@calcom/ui/components/icon"; import { showToast } from "@calcom/ui/components/toast"; interface IAppConnectionItem { title: string; description?: string; logo: string; type: App["type"]; installed?: boolean; isDefault?: boolean; defaultInstall?: boolean; slug?: string; dependencyData?: TDependencyData; } const AppConnectionItem = (props: IAppConnectionItem) => { const { title, logo, type, installed, isDefault, defaultInstall, slug } = props; const { t } = useLocale(); const utils = trpc.useUtils(); const setDefaultConferencingApp = trpc.viewer.apps.setDefaultConferencingApp.useMutation({ onSuccess: async () => { await utils.viewer.me.invalidate(); }, onError: (error) => { showToast(t("something_went_wrong"), "error"); console.error(error); }, }); const dependency = props.dependencyData?.find((data) => !data.installed); const [isInstalling, setInstalling] = useState(false); return (
{title}
{isDefault &&