diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/conferencing/loading.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/conferencing/loading.tsx
new file mode 100644
index 0000000000..40bb0e3205
--- /dev/null
+++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/conferencing/loading.tsx
@@ -0,0 +1,5 @@
+import { SkeletonLoader } from "@calcom/atoms/connect/conferencing-apps/ConferencingAppsViewWebWrapper";
+
+export default function Loading() {
+ return ;
+}
diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/conferencing/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/conferencing/page.tsx
index 300fa17c15..ebb7bd810f 100644
--- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/conferencing/page.tsx
+++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/conferencing/page.tsx
@@ -1,6 +1,9 @@
+import { createRouterCaller } from "app/_trpc/context";
import { _generateMetadata } from "app/_utils";
import { ConferencingAppsViewWebWrapper } from "@calcom/atoms/connect/conferencing-apps/ConferencingAppsViewWebWrapper";
+import { appsRouter } from "@calcom/trpc/server/routers/viewer/apps/_router";
+import { eventTypesRouter } from "@calcom/trpc/server/routers/viewer/eventTypes/_router";
export const generateMetadata = async () =>
await _generateMetadata(
@@ -12,7 +15,24 @@ export const generateMetadata = async () =>
);
const Page = async () => {
- return ;
+ const [appsCaller, eventTypesCaller] = await Promise.all([
+ createRouterCaller(appsRouter),
+ createRouterCaller(eventTypesRouter),
+ ]);
+
+ const [integrations, defaultConferencingApp, eventTypesQueryData] = await Promise.all([
+ appsCaller.integrations({ variant: "conferencing", onlyInstalled: true }),
+ appsCaller.getUsersDefaultConferencingApp(),
+ eventTypesCaller.bulkEventFetch(),
+ ]);
+
+ return (
+
+ );
};
export default Page;
diff --git a/packages/platform/atoms/connect/conferencing-apps/ConferencingAppsViewWebWrapper.tsx b/packages/platform/atoms/connect/conferencing-apps/ConferencingAppsViewWebWrapper.tsx
index 6da033c0eb..6f78be2c89 100644
--- a/packages/platform/atoms/connect/conferencing-apps/ConferencingAppsViewWebWrapper.tsx
+++ b/packages/platform/atoms/connect/conferencing-apps/ConferencingAppsViewWebWrapper.tsx
@@ -1,12 +1,13 @@
"use client";
-import { useReducer, Suspense } from "react";
+import { useReducer } from "react";
import { AppList } from "@calcom/features/apps/components/AppList";
import DisconnectIntegrationModal from "@calcom/features/apps/components/DisconnectIntegrationModal";
import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { trpc } from "@calcom/trpc/react";
+import type { RouterOutputs } from "@calcom/trpc/react";
import { Button } from "@calcom/ui/components/button";
import { EmptyScreen } from "@calcom/ui/components/empty-screen";
import { SkeletonText, SkeletonContainer } from "@calcom/ui/components/skeleton";
@@ -22,39 +23,46 @@ export type UpdateUsersDefaultConferencingAppParams = {
export type BulkUpdatParams = { eventTypeIds: number[]; callback: () => void };
type RemoveAppParams = { credentialId: number; teamId?: number; callback: () => void };
-const SkeletonLoader = () => {
+export const SkeletonLoader = () => {
+ const { t } = useLocale();
return (
-
-
-
-
-
-
+ }
+ borderInShellHeader={true}>
+
+
+
+
+
+
+
);
};
-const InstalledConferencingApps = ({
+type IntegrationsOutput = RouterOutputs["viewer"]["apps"]["integrations"];
+type DefaultConferencingApp = RouterOutputs["viewer"]["apps"]["getUsersDefaultConferencingApp"] | undefined;
+type EventTypesList = RouterOutputs["viewer"]["eventTypes"]["bulkEventFetch"]["eventTypes"];
+
+export const InstalledConferencingApps = ({
disconnectIntegrationModalCtrl,
+ integrations,
+ defaultConferencingApp,
+ eventTypes,
}: {
disconnectIntegrationModalCtrl: ReturnType;
+ integrations: IntegrationsOutput;
+ defaultConferencingApp: DefaultConferencingApp;
+ eventTypes: EventTypesList;
}) => {
const { t } = useLocale();
const utils = trpc.useUtils();
- const { data: defaultConferencingApp } = trpc.viewer.apps.getUsersDefaultConferencingApp.useQuery();
-
const updateDefaultAppMutation = trpc.viewer.apps.updateUserDefaultConferencingApp.useMutation();
const updateLocationsMutation = trpc.viewer.eventTypes.bulkUpdateToDefaultLocation.useMutation();
- const { data: eventTypesQueryData, isFetching: isEventTypesFetching } =
- trpc.viewer.eventTypes.bulkEventFetch.useQuery();
-
- const [result] = trpc.viewer.apps.integrations.useSuspenseQuery({
- variant: "conferencing",
- onlyInstalled: true,
- });
-
const handleConnectDisconnectIntegrationMenuToggle = () => {
utils.viewer.apps.integrations.invalidate();
};
@@ -99,7 +107,7 @@ const InstalledConferencingApps = ({
);
};
- if (result.items.length === 0) {
+ if (integrations.items.length === 0) {
return (
@@ -179,7 +187,15 @@ const AddConferencingButton = () => {
);
};
-export const ConferencingAppsViewWebWrapper = () => {
+export const ConferencingAppsViewWebWrapper = ({
+ integrations,
+ defaultConferencingApp,
+ eventTypes,
+}: {
+ integrations: IntegrationsOutput;
+ defaultConferencingApp: DefaultConferencingApp;
+ eventTypes: EventTypesList;
+}) => {
const { t } = useLocale();
const utils = trpc.useUtils();
@@ -213,9 +229,12 @@ export const ConferencingAppsViewWebWrapper = () => {
borderInShellHeader={true}>
<>
- }>
-
-
+