Skip to content

Commit 02fdc13

Browse files
authored
perf: redundant query in eventsAppsTab (calcom#24491)
1 parent 5731321 commit 02fdc13

2 files changed

Lines changed: 20 additions & 10 deletions

File tree

packages/features/eventtypes/components/tabs/apps/EventAppsTab.tsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type { EventTypeAppCardComponentProps } from "@calcom/app-store/types";
66
import type { EventTypeAppsList } from "@calcom/app-store/utils";
77
import useAppsData from "@calcom/features/apps/hooks/useAppsData";
88
import useLockedFieldsManager from "@calcom/features/ee/managed-event-types/hooks/useLockedFieldsManager";
9-
import type { FormValues, EventTypeSetupProps } from "@calcom/features/eventtypes/lib/types";
9+
import type { FormValues, EventTypeSetupProps, EventTypeApps } from "@calcom/features/eventtypes/lib/types";
1010
import ServerTrans from "@calcom/lib/components/ServerTrans";
1111
import { useLocale } from "@calcom/lib/hooks/useLocale";
1212
import { trpc } from "@calcom/trpc/react";
@@ -18,12 +18,16 @@ import { Section } from "@calcom/ui/components/section";
1818
export type EventType = Pick<EventTypeSetupProps, "eventType">["eventType"] &
1919
EventTypeAppCardComponentProps["eventType"];
2020

21-
export const EventAppsTab = ({ eventType }: { eventType: EventType }) => {
21+
export const EventAppsTab = ({
22+
eventType,
23+
eventTypeApps,
24+
isPendingApps,
25+
}: {
26+
eventType: EventType;
27+
eventTypeApps?: EventTypeApps;
28+
isPendingApps: boolean;
29+
}) => {
2230
const { t } = useLocale();
23-
const { data: eventTypeApps, isPending } = trpc.viewer.apps.integrations.useQuery({
24-
extendsFeature: "EventType",
25-
teamId: eventType.team?.id || eventType.parent?.teamId,
26-
});
2731

2832
const utils = trpc.useUtils();
2933

@@ -126,7 +130,7 @@ export const EventAppsTab = ({ eventType }: { eventType: EventType }) => {
126130
}
127131
/>
128132
)}
129-
{!isPending && !installedApps?.length ? (
133+
{!isPendingApps && !installedApps?.length ? (
130134
<EmptyScreen
131135
Icon="grid-3x3"
132136
headline={t("empty_installed_apps_headline")}
@@ -168,7 +172,7 @@ export const EventAppsTab = ({ eventType }: { eventType: EventType }) => {
168172
{/* TODO: Add back after salesforce v3 dev */}
169173
{!appsDisableProps.disabled && (
170174
<div className="bg-muted mt-4 rounded-2xl p-4">
171-
{!isPending && notInstalledApps?.length ? (
175+
{!isPendingApps && notInstalledApps?.length ? (
172176
<div className="mb-4 flex flex-col">
173177
<Section.Title>{t("available_apps_lower_case")}</Section.Title>
174178
<Section.Description>

packages/platform/atoms/event-types/wrappers/EventTypeWebWrapper.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ const EventTypeWeb = ({
169169
const [pendingRoute, setPendingRoute] = useState("");
170170
const { eventType, locationOptions, team, teamMembers, destinationCalendar } = rest;
171171
const [slugExistsChildrenDialogOpen, setSlugExistsChildrenDialogOpen] = useState<ChildrenEventType[]>([]);
172-
const { data: eventTypeApps } = trpc.viewer.apps.integrations.useQuery({
172+
const { data: eventTypeApps, isPending: isPendingApps } = trpc.viewer.apps.integrations.useQuery({
173173
extendsFeature: "EventType",
174174
teamId: eventType.team?.id || eventType.parent?.teamId,
175175
onlyInstalled: true,
@@ -287,7 +287,13 @@ const EventTypeWeb = ({
287287
),
288288
instant: <EventInstantTab eventType={eventType} isTeamEvent={!!team} />,
289289
recurring: <EventRecurringTab eventType={eventType} />,
290-
apps: <EventAppsTab eventType={{ ...eventType, URL: permalink }} />,
290+
apps: (
291+
<EventAppsTab
292+
eventType={{ ...eventType, URL: permalink }}
293+
eventTypeApps={eventTypeApps}
294+
isPendingApps={isPendingApps}
295+
/>
296+
),
291297
workflows:
292298
allActiveWorkflows && canReadWorkflows ? (
293299
<EventWorkflowsTab eventType={eventType} workflows={allActiveWorkflows} />

0 commit comments

Comments
 (0)