fix: #1805 remove server prefetching docker (#1860)

This commit is contained in:
Manuel
2024-01-31 07:51:38 +01:00
committed by GitHub
parent 6f077f1c5e
commit 6268db182e
2 changed files with 13 additions and 41 deletions

View File

@@ -11,19 +11,14 @@ import { getServerSideTranslations } from '~/tools/server/getServerSideTranslati
import { checkForSessionOrAskForLogin } from '~/tools/server/loginBuilder'; import { checkForSessionOrAskForLogin } from '~/tools/server/loginBuilder';
import { boardNamespaces } from '~/tools/server/translation-namespaces'; import { boardNamespaces } from '~/tools/server/translation-namespaces';
import { api } from '~/utils/api'; import { api } from '~/utils/api';
import { env } from 'process';
import fs from 'fs';
export default function BoardPage({ export default function BoardPage({
config: initialConfig, config: initialConfig,
isDockerEnabled, isDockerEnabled: isDockerEnabled
initialContainers,
}: InferGetServerSidePropsType<typeof getServerSideProps>) { }: InferGetServerSidePropsType<typeof getServerSideProps>) {
useInitConfig(initialConfig); useInitConfig(initialConfig);
const { data } = api.docker.containers.useQuery(undefined, {
initialData: initialContainers ?? undefined,
enabled: isDockerEnabled,
cacheTime: 60 * 1000 * 5,
staleTime: 60 * 1000 * 1,
});
return ( return (
<BoardLayout isDockerEnabled={isDockerEnabled}> <BoardLayout isDockerEnabled={isDockerEnabled}>
@@ -69,15 +64,8 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
if (result) { if (result) {
return result; return result;
} }
const caller = dockerRouter.createCaller({
session: session, const isDockerEnabled: boolean = !!env.DOCKER_HOST || !!env.DOCKER_PORT || fs.existsSync('/var/run/docker');
cookies: context.req.cookies,
});
let containers = undefined;
// Fetch containers if user is admin, otherwise we don't need them
try {
if (session?.user.isAdmin == true) containers = await caller.containers();
} catch (error) {}
return { return {
props: { props: {
@@ -85,8 +73,7 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
primaryColor: config.settings.customization.colors.primary, primaryColor: config.settings.customization.colors.primary,
secondaryColor: config.settings.customization.colors.secondary, secondaryColor: config.settings.customization.colors.secondary,
primaryShade: config.settings.customization.colors.shade, primaryShade: config.settings.customization.colors.shade,
isDockerEnabled: containers != undefined, isDockerEnabled: isDockerEnabled,
initialContainers: containers ?? null,
...translations, ...translations,
}, },
}; };

View File

@@ -2,7 +2,6 @@ import { GetServerSidePropsContext, InferGetServerSidePropsType } from 'next';
import { Dashboard } from '~/components/Dashboard/Dashboard'; import { Dashboard } from '~/components/Dashboard/Dashboard';
import { BoardLayout } from '~/components/layout/Templates/BoardLayout'; import { BoardLayout } from '~/components/layout/Templates/BoardLayout';
import { useInitConfig } from '~/config/init'; import { useInitConfig } from '~/config/init';
import { dockerRouter } from '~/server/api/routers/docker/router';
import { getServerAuthSession } from '~/server/auth'; import { getServerAuthSession } from '~/server/auth';
import { getDefaultBoardAsync } from '~/server/db/queries/userSettings'; import { getDefaultBoardAsync } from '~/server/db/queries/userSettings';
import { getFrontendConfig } from '~/tools/config/getFrontendConfig'; import { getFrontendConfig } from '~/tools/config/getFrontendConfig';
@@ -10,19 +9,14 @@ import { getServerSideTranslations } from '~/tools/server/getServerSideTranslati
import { checkForSessionOrAskForLogin } from '~/tools/server/loginBuilder'; import { checkForSessionOrAskForLogin } from '~/tools/server/loginBuilder';
import { boardNamespaces } from '~/tools/server/translation-namespaces'; import { boardNamespaces } from '~/tools/server/translation-namespaces';
import { api } from '~/utils/api'; import { api } from '~/utils/api';
import { env } from 'process';
import fs from 'fs';
export default function BoardPage({ export default function BoardPage({
config: initialConfig, config: initialConfig,
isDockerEnabled, isDockerEnabled: isDockerEnabled,
initialContainers,
}: InferGetServerSidePropsType<typeof getServerSideProps>) { }: InferGetServerSidePropsType<typeof getServerSideProps>) {
useInitConfig(initialConfig); useInitConfig(initialConfig);
const { data } = api.docker.containers.useQuery(undefined, {
initialData: initialContainers ?? undefined,
enabled: isDockerEnabled,
cacheTime: 60 * 1000 * 5,
staleTime: 60 * 1000 * 1,
});
return ( return (
<BoardLayout isDockerEnabled={isDockerEnabled}> <BoardLayout isDockerEnabled={isDockerEnabled}>
@@ -51,25 +45,16 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
if (result) { if (result) {
return result; return result;
} }
const caller = dockerRouter.createCaller({
session: session, const isDockerEnabled: boolean = !!env.DOCKER_HOST || !!env.DOCKER_PORT || fs.existsSync('/var/run/docker');
cookies: context.req.cookies,
});
let containers = undefined;
// Fetch containers if user is admin, otherwise we don't need them
try {
if (session?.user.isAdmin == true) containers = await caller.containers();
} catch (error) {
}
return { return {
props: { props: {
config, config,
primaryColor: config.settings.customization.colors.primary, primaryColor: config.settings.customization.colors.primary,
secondaryColor: config.settings.customization.colors.secondary, secondaryColor: config.settings.customization.colors.secondary,
primaryShade: config.settings.customization.colors.shade, primaryShade: config.settings.customization.colors.shade,
isDockerEnabled: containers != undefined, isDockerEnabled: isDockerEnabled,
initialContainers: containers ?? null,
...translations, ...translations,
}, },
}; };