"use client"; import Link from "next/link"; import type { UseAddAppMutationOptions } from "@calcom/app-store/_utils/useAddAppMutation"; import useAddAppMutation from "@calcom/app-store/_utils/useAddAppMutation"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { deriveAppDictKeyFromType } from "@calcom/lib/deriveAppDictKeyFromType"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { RouterOutputs } from "@calcom/trpc/react"; import type { App } from "@calcom/types/App"; import classNames from "@calcom/ui/classNames"; import { Icon } from "@calcom/ui/components/icon"; import { InstallAppButtonMap } from "./apps.browser.generated"; import type { InstallAppButtonProps } from "./types"; export const InstallAppButtonWithoutPlanCheck = ( props: { type: App["type"]; options?: UseAddAppMutationOptions; } & InstallAppButtonProps ) => { const mutation = useAddAppMutation(null, props.options); const key = deriveAppDictKeyFromType(props.type, InstallAppButtonMap); const InstallAppButtonComponent = InstallAppButtonMap[key as keyof typeof InstallAppButtonMap]; if (!InstallAppButtonComponent) return ( <> {props.render({ useDefaultComponent: true, disabled: props.disableInstall, onClick: () => { mutation.mutate({ type: props.type }); }, loading: mutation.data?.setupPending, })} ); return ( ); }; export const InstallAppButton = ( props: { teamsPlanRequired?: App["teamsPlanRequired"]; type: App["type"]; wrapperClassName?: string; disableInstall?: boolean; } & InstallAppButtonProps ) => { return (
); }; export { AppConfiguration } from "./_components/AppConfiguration"; export const AppDependencyComponent = ({ appName, dependencyData, }: { appName: string; dependencyData: RouterOutputs["viewer"]["apps"]["queryForDependencies"]; }) => { const { t } = useLocale(); return (
!dependency.installed) ? "bg-info" : "bg-subtle" )}> {dependencyData && dependencyData.map((dependency) => { return dependency.installed ? (
{t("app_is_connected", { dependencyName: dependency.name })}
{t("this_app_requires_connected_account", { appName, dependencyName: dependency.name, interpolation: { escapeValue: false }, })}
) : (
{t("this_app_requires_connected_account", { appName, dependencyName: dependency.name, interpolation: { escapeValue: false }, })}
<> {t("connect_app", { dependencyName: dependency.name })}
); })}
); };