From 02fdc1361ce6deffcf4255925dea07082859e05f Mon Sep 17 00:00:00 2001 From: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> Date: Thu, 16 Oct 2025 08:42:31 +0530 Subject: [PATCH] perf: redundant query in eventsAppsTab (#24491) --- .../components/tabs/apps/EventAppsTab.tsx | 20 +++++++++++-------- .../wrappers/EventTypeWebWrapper.tsx | 10 ++++++++-- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/packages/features/eventtypes/components/tabs/apps/EventAppsTab.tsx b/packages/features/eventtypes/components/tabs/apps/EventAppsTab.tsx index c9d0da8dad..8d6ee1cb7d 100644 --- a/packages/features/eventtypes/components/tabs/apps/EventAppsTab.tsx +++ b/packages/features/eventtypes/components/tabs/apps/EventAppsTab.tsx @@ -6,7 +6,7 @@ import type { EventTypeAppCardComponentProps } from "@calcom/app-store/types"; import type { EventTypeAppsList } from "@calcom/app-store/utils"; import useAppsData from "@calcom/features/apps/hooks/useAppsData"; import useLockedFieldsManager from "@calcom/features/ee/managed-event-types/hooks/useLockedFieldsManager"; -import type { FormValues, EventTypeSetupProps } from "@calcom/features/eventtypes/lib/types"; +import type { FormValues, EventTypeSetupProps, EventTypeApps } from "@calcom/features/eventtypes/lib/types"; import ServerTrans from "@calcom/lib/components/ServerTrans"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; @@ -18,12 +18,16 @@ import { Section } from "@calcom/ui/components/section"; export type EventType = Pick["eventType"] & EventTypeAppCardComponentProps["eventType"]; -export const EventAppsTab = ({ eventType }: { eventType: EventType }) => { +export const EventAppsTab = ({ + eventType, + eventTypeApps, + isPendingApps, +}: { + eventType: EventType; + eventTypeApps?: EventTypeApps; + isPendingApps: boolean; +}) => { const { t } = useLocale(); - const { data: eventTypeApps, isPending } = trpc.viewer.apps.integrations.useQuery({ - extendsFeature: "EventType", - teamId: eventType.team?.id || eventType.parent?.teamId, - }); const utils = trpc.useUtils(); @@ -126,7 +130,7 @@ export const EventAppsTab = ({ eventType }: { eventType: EventType }) => { } /> )} - {!isPending && !installedApps?.length ? ( + {!isPendingApps && !installedApps?.length ? ( { {/* TODO: Add back after salesforce v3 dev */} {!appsDisableProps.disabled && (
- {!isPending && notInstalledApps?.length ? ( + {!isPendingApps && notInstalledApps?.length ? (
{t("available_apps_lower_case")} diff --git a/packages/platform/atoms/event-types/wrappers/EventTypeWebWrapper.tsx b/packages/platform/atoms/event-types/wrappers/EventTypeWebWrapper.tsx index e8a7d125b0..7ee712dd32 100644 --- a/packages/platform/atoms/event-types/wrappers/EventTypeWebWrapper.tsx +++ b/packages/platform/atoms/event-types/wrappers/EventTypeWebWrapper.tsx @@ -169,7 +169,7 @@ const EventTypeWeb = ({ const [pendingRoute, setPendingRoute] = useState(""); const { eventType, locationOptions, team, teamMembers, destinationCalendar } = rest; const [slugExistsChildrenDialogOpen, setSlugExistsChildrenDialogOpen] = useState([]); - const { data: eventTypeApps } = trpc.viewer.apps.integrations.useQuery({ + const { data: eventTypeApps, isPending: isPendingApps } = trpc.viewer.apps.integrations.useQuery({ extendsFeature: "EventType", teamId: eventType.team?.id || eventType.parent?.teamId, onlyInstalled: true, @@ -287,7 +287,13 @@ const EventTypeWeb = ({ ), instant: , recurring: , - apps: , + apps: ( + + ), workflows: allActiveWorkflows && canReadWorkflows ? (