"use client"; import { useSession } from "next-auth/react"; import { useRouter } from "next/navigation"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; import classNames from "@calcom/lib/classNames"; import { APP_NAME, WEBAPP_URL } from "@calcom/lib/constants"; import { useBookerUrl } from "@calcom/lib/hooks/useBookerUrl"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { UserPermissionRole } from "@calcom/prisma/enums"; import { trpc } from "@calcom/trpc/react"; import type { WebhooksByViewer } from "@calcom/trpc/server/routers/viewer/webhook/getByViewer.handler"; import { Avatar, EmptyScreen, SkeletonContainer, SkeletonText } from "@calcom/ui"; import { WebhookListItem, CreateNewWebhookButton } from "../components"; const SkeletonLoader = () => { return (
); }; const WebhooksView = () => { const { t } = useLocale(); const session = useSession(); const isAdmin = session.data?.user.role === UserPermissionRole.ADMIN; const { data, isPending } = trpc.viewer.webhook.getByViewer.useQuery(undefined, { enabled: session.status === "authenticated", }); if (isPending || !data) { return ; } return ( 0 ? : null} borderInShellHeader={(data && data.profiles.length === 1) || !data?.webhookGroups?.length}>
); }; const WebhooksList = ({ webhooksByViewer, isAdmin, }: { webhooksByViewer: WebhooksByViewer; isAdmin: boolean; }) => { const { t } = useLocale(); const router = useRouter(); const { profiles, webhookGroups } = webhooksByViewer; const bookerUrl = useBookerUrl(); const hasTeams = profiles && profiles.length > 1; return ( <> {webhookGroups && ( <> {!!webhookGroups.length && (
{webhookGroups.map((group) => (
{hasTeams && (
{group.profile.name || ""}
)}
{group.webhooks.map((webhook, index) => ( router.push(`${WEBAPP_URL}/settings/developer/webhooks/${webhook.id}`) } /> ))}
))}
)} {!webhookGroups.length && ( } border={true} /> )} )} ); }; export default WebhooksView;