import { useRouter } from "next/navigation"; import React from "react"; import { classNames } from "@calcom/lib"; import { PERMISSIONS_GROUPED_MAP } from "@calcom/platform-constants"; import type { Avatar } from "@calcom/prisma/client"; import { Button, Icon, showToast } from "@calcom/ui"; import { hasPermission } from "../../../../../../packages/platform/utils/permissions"; type OAuthClientCardProps = { name: string; logo?: Avatar; redirectUris: string[]; bookingRedirectUri: string | null; bookingCancelRedirectUri: string | null; bookingRescheduleRedirectUri: string | null; areEmailsEnabled: boolean; permissions: number; lastItem: boolean; id: string; secret: string; onDelete: (id: string) => Promise; isLoading: boolean; }; export const OAuthClientCard = ({ name, logo, redirectUris, bookingRedirectUri, bookingCancelRedirectUri, bookingRescheduleRedirectUri, permissions, id, secret, lastItem, onDelete, isLoading, areEmailsEnabled, }: OAuthClientCardProps) => { const router = useRouter(); const clientPermissions = Object.values(PERMISSIONS_GROUPED_MAP).map((value, index) => { let permissionsMessage = ""; const hasReadPermission = hasPermission(permissions, value.read); const hasWritePermission = hasPermission(permissions, value.write); if (hasReadPermission || hasWritePermission) { permissionsMessage = hasReadPermission ? "read" : "write"; } if (hasReadPermission && hasWritePermission) { permissionsMessage = "read/write"; } return ( !!permissionsMessage && (
 {permissionsMessage} {`${value.label}s`.toLocaleLowerCase()} {Object.values(PERMISSIONS_GROUPED_MAP).length === index + 1 ? " " : ", "}
) ); }); return (

Client name: {name}

{!!logo && (
<>{logo}
)}
Client Id:
{id}
{ navigator.clipboard.writeText(id); showToast("Client id copied to clipboard.", "success"); }} />
Client Secret:
{[...new Array(20)].map((_, index) => ( ))} { navigator.clipboard.writeText(secret); showToast("Client secret copied to clipboard.", "success"); }} />
Permissions: {permissions ?
{clientPermissions}
: <> Disabled}
Redirect uris: {redirectUris.map((item, index) => (redirectUris.length === index + 1 ? `${item}` : `${item}, `))}
{bookingRedirectUri && (
Booking redirect uri: {bookingRedirectUri}
)} {bookingRescheduleRedirectUri && (
Booking reschedule uri: {bookingRescheduleRedirectUri}
)} {bookingCancelRedirectUri && (
Booking cancel uri: {bookingCancelRedirectUri}
)}
Emails enabled: {areEmailsEnabled ? "Yes" : "No"}
); };