diff --git a/apps/web/pages/event-types/index.tsx b/apps/web/pages/event-types/index.tsx
index 3a51b6d583..5c99a602dc 100644
--- a/apps/web/pages/event-types/index.tsx
+++ b/apps/web/pages/event-types/index.tsx
@@ -66,7 +66,6 @@ import {
User as UserIcon,
} from "@calcom/ui/components/icon";
-import { withQuery } from "@lib/QueryCell";
import useMeQuery from "@lib/hooks/useMeQuery";
import { EmbedButton, EmbedDialog } from "@components/Embed";
@@ -835,13 +834,76 @@ const SetupProfileBanner = ({ closeAction }: { closeAction: () => void }) => {
);
};
+const Main = () => {
+ const isMobile = useMediaQuery("(max-width: 768px)");
+ const router = useRouter();
+ const filters = getTeamsFiltersFromQuery(router.query);
+
+ const orgBranding = useOrgBrandingValues();
+
+ // TODO: Maybe useSuspenseQuery to focus on success case only? Remember that it would crash the page when there is an error in query. Also, it won't support skeleton
+ const res = trpc.viewer.eventTypes.getByViewer.useQuery(filters && { filters });
+
+ if (res.status === "loading") {
+ return ;
+ }
+
+ if (res.status === "error") {
+ return ;
+ }
+
+ const data = res.data;
+ const isFilteredByOnlyOneItem =
+ (filters?.teamIds?.length === 1 || filters?.userIds?.length === 1) && data.eventTypeGroups.length === 1;
+ return (
+ <>
+ {data.eventTypeGroups.length > 1 || isFilteredByOnlyOneItem ? (
+ <>
+ {isMobile ? (
+
+ ) : (
+ data.eventTypeGroups.map((group: EventTypeGroup, index: number) => (
+
+
+
+
+
+ ))
+ )}
+ >
+ ) : (
+ data.eventTypeGroups.length === 1 && (
+
+ )
+ )}
+ {data.eventTypeGroups.length === 0 && }
+
+ {router.query.dialog === "duplicate" && }
+ >
+ );
+};
+
const EventTypesPage = () => {
const { t } = useLocale();
const router = useRouter();
const { open } = useIntercom();
const { query } = router;
const { data: user } = useMeQuery();
- const isMobile = useMediaQuery("(max-width: 768px)");
const [showProfileBanner, setShowProfileBanner] = useState(false);
const orgBranding = useOrgBrandingValues();
@@ -860,10 +922,6 @@ const EventTypesPage = () => {
);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
- const filters = getTeamsFiltersFromQuery(router.query);
-
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- const WithQuery = withQuery(trpc.viewer.eventTypes.getByViewer as any, filters && { filters });
return (
@@ -879,58 +937,7 @@ const EventTypesPage = () => {
afterHeading={showProfileBanner &&
}
beforeCTAactions={
}
CTA={
}>
-
}
- success={({ data }) => {
- const isFilteredByOnlyOneItem =
- (filters?.teamIds?.length === 1 || filters?.userIds?.length === 1) &&
- data.eventTypeGroups.length === 1;
-
- return (
- <>
- {data.eventTypeGroups.length > 1 || isFilteredByOnlyOneItem ? (
- <>
- {isMobile ? (
-
- ) : (
- data.eventTypeGroups.map((group: EventTypeGroup, index: number) => (
-
-
-
-
-
- ))
- )}
- >
- ) : (
- data.eventTypeGroups.length === 1 && (
-
- )
- )}
-
- {data.eventTypeGroups.length === 0 &&
}
-
-
- {router.query.dialog === "duplicate" &&
}
- >
- );
- }}
- />
+
);