"use client"; import { useRouter } from "next/navigation"; import Shell from "@calcom/features/shell/Shell"; import { ErrorCode } from "@calcom/lib/errorCodes"; import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { PERMISSION_MAP } from "@calcom/platform-constants"; import { PERMISSIONS_GROUPED_MAP } from "@calcom/platform-constants/permissions"; import { showToast } from "@calcom/ui"; import { useCreateOAuthClient } from "@lib/hooks/settings/platform/oauth-clients/usePersistOAuthClient"; import NoPlatformPlan from "@components/settings/platform/dashboard/NoPlatformPlan"; import { useGetUserAttributes } from "@components/settings/platform/hooks/useGetUserAttributes"; import type { FormValues } from "@components/settings/platform/oauth-clients/oauth-client-form"; import { OAuthClientForm } from "@components/settings/platform/oauth-clients/oauth-client-form"; export default function CreateOAuthClient() { const searchParams = useCompatSearchParams(); const router = useRouter(); const { t } = useLocale(); const clientId = searchParams?.get("clientId") || ""; const { isUserLoading, isPlatformUser, isPaidUser } = useGetUserAttributes(); const { mutateAsync: save, isPending: isSaving } = useCreateOAuthClient({ onSuccess: () => { showToast("OAuth client created successfully", "success"); router.push("/settings/platform/"); }, onError: () => { showToast(ErrorCode.CreatingOauthClientError, "error"); }, }); const onSubmit = (data: FormValues) => { const userPermissions: Array = []; const userRedirectUris = data.redirectUris.map((uri) => uri.uri).filter((uri) => !!uri); Object.keys(PERMISSIONS_GROUPED_MAP).forEach((key) => { const entity = key as keyof typeof PERMISSIONS_GROUPED_MAP; const entityKey = PERMISSIONS_GROUPED_MAP[entity].key; if (data[`${entityKey}Read`]) userPermissions.push(`${entity}_READ`); if (data[`${entityKey}Write`]) userPermissions.push(`${entity}_WRITE`); }); save({ name: data.name, permissions: userPermissions, redirectUris: userRedirectUris, bookingRedirectUri: data.bookingRedirectUri, bookingCancelRedirectUri: data.bookingCancelRedirectUri, bookingRescheduleRedirectUri: data.bookingRescheduleRedirectUri, areEmailsEnabled: data.areEmailsEnabled, }); }; if (isUserLoading) return
Loading...
; if (isPlatformUser && isPaidUser) { return (

{t("oAuth_client_creation_form")}

{t("oAuth_client_creation_form_description")}

); } return (
}>
); }