diff --git a/apps/web/components/AppListCard.tsx b/apps/web/components/AppListCard.tsx index 51cc21592d..ddc2075fbb 100644 --- a/apps/web/components/AppListCard.tsx +++ b/apps/web/components/AppListCard.tsx @@ -4,6 +4,7 @@ import { useEffect, useRef, useState } from "react"; import { z } from "zod"; import type { CredentialOwner } from "@calcom/app-store/types"; +import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { useTypedQuery } from "@calcom/lib/hooks/useTypedQuery"; import { Badge, ListItemText, Avatar } from "@calcom/ui"; @@ -96,7 +97,7 @@ export default function AppListCard(props: AppListCardProps) { className="mr-2" alt={credentialOwner.name || "Nameless"} size="xs" - imageSrc={credentialOwner.avatar} + imageSrc={getPlaceholderAvatar(credentialOwner.avatar, credentialOwner?.name as string)} /> {credentialOwner.name} diff --git a/apps/web/components/apps/App.tsx b/apps/web/components/apps/App.tsx index 2c8224a83b..b756af691b 100644 --- a/apps/web/components/apps/App.tsx +++ b/apps/web/components/apps/App.tsx @@ -4,6 +4,7 @@ import React, { useState } from "react"; import useAddAppMutation from "@calcom/app-store/_utils/useAddAppMutation"; import { InstallAppButton, AppDependencyComponent } from "@calcom/app-store/components"; +import { doesAppSupportTeamInstall } from "@calcom/app-store/utils"; import DisconnectIntegration from "@calcom/features/apps/components/DisconnectIntegration"; import { Spinner } from "@calcom/features/calendars/weeklyview/components/spinner/Spinner"; import LicenseRequired from "@calcom/features/ee/common/components/LicenseRequired"; @@ -53,6 +54,7 @@ const Component = ({ descriptionItems, isTemplate, dependencies, + concurrentMeetings, }: Parameters[0]) => { const { t, i18n } = useLocale(); const hasDescriptionItems = descriptionItems && descriptionItems.length > 0; @@ -189,6 +191,7 @@ const Component = ({ appCategories={categories} userAdminTeams={appDbQuery.data?.userAdminTeams} addAppMutationInput={{ type, variant, slug }} + concurrentMeetings={concurrentMeetings} multiInstall {...props} /> @@ -227,6 +230,7 @@ const Component = ({ userAdminTeams={appDbQuery.data?.userAdminTeams} addAppMutationInput={{ type, variant, slug }} credentials={appDbQuery.data?.credentials} + concurrentMeetings={concurrentMeetings} {...props} /> ); @@ -381,6 +385,7 @@ export default function App(props: { isTemplate?: boolean; disableInstall?: boolean; dependencies?: string[]; + concurrentMeetings?: boolean; }) { return ( } backPath="/apps" withoutSeo> @@ -406,6 +411,7 @@ const InstallAppButtonChild = ({ appCategories, multiInstall, credentials, + concurrentMeetings, ...props }: { userAdminTeams?: UserAdminTeams; @@ -413,6 +419,7 @@ const InstallAppButtonChild = ({ appCategories: string[]; multiInstall?: boolean; credentials?: RouterOutputs["viewer"]["appCredentialsByType"]["credentials"]; + concurrentMeetings?: boolean; } & ButtonProps) => { const { t } = useLocale(); @@ -426,10 +433,7 @@ const InstallAppButtonChild = ({ }, }); - if ( - !userAdminTeams?.length || - appCategories.some((category) => ["calendar", "conferencing"].includes(category)) - ) { + if (!userAdminTeams?.length || !doesAppSupportTeamInstall(appCategories, concurrentMeetings)) { return (