import { useSession } from "next-auth/react";
import { useRouter } from "next/navigation";
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,
CreateButtonWithTeamsList,
EmptyScreen,
Meta,
SkeletonContainer,
SkeletonText,
} from "@calcom/ui";
import { getLayout } from "../../settings/layouts/SettingsLayout";
import { WebhookListItem } from "../components";
const SkeletonLoader = ({
title,
description,
borderInShellHeader,
}: {
title: string;
description: string;
borderInShellHeader: boolean;
}) => {
return (
);
};
const WebhooksView = () => {
const { t } = useLocale();
const router = useRouter();
const session = useSession();
const isAdmin = session.data?.user.role === UserPermissionRole.ADMIN;
const { data, isPending } = trpc.viewer.webhook.getByViewer.useQuery(undefined, {
enabled: session.status === "authenticated",
});
const createFunction = (teamId?: number, platform?: boolean) => {
if (platform) {
router.push(`webhooks/new${platform ? `?platform=${platform}` : ""}`);
} else {
router.push(`webhooks/new${teamId ? `?teamId=${teamId}` : ""}`);
}
};
if (isPending || !data) {
return (
);
}
return (
<>
0 ? (
) : (
<>>
)
}
borderInShellHeader={(data && data.profiles.length === 1) || !data?.webhookGroups?.length}
/>
>
);
};
const WebhooksList = ({
webhooksByViewer,
isAdmin,
createFunction,
}: {
webhooksByViewer: WebhooksByViewer;
isAdmin: boolean;
createFunction: (teamId?: number, platform?: boolean) => void;
}) => {
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 && (
}
/>
)}
>
)}
>
);
};
WebhooksView.getLayout = getLayout;
export default WebhooksView;