From b21ee509082cefd9a3c7fd5789f408b1756609c0 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Thu, 10 Aug 2023 06:56:45 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20docker=20enabled=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/layout/Templates/BoardLayout.tsx | 13 +++++++++---- src/env.js | 3 +-- src/pages/board/[slug].tsx | 6 +++++- src/pages/board/index.tsx | 6 +++++- src/pages/docker.tsx | 7 ++----- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/components/layout/Templates/BoardLayout.tsx b/src/components/layout/Templates/BoardLayout.tsx index 539cfc9e9..642f3c768 100644 --- a/src/components/layout/Templates/BoardLayout.tsx +++ b/src/components/layout/Templates/BoardLayout.tsx @@ -24,14 +24,15 @@ import { api } from '~/utils/api'; import { MainLayout } from './MainLayout'; type BoardLayoutProps = { + dockerEnabled: boolean; children: React.ReactNode; }; -export const BoardLayout = ({ children }: BoardLayoutProps) => { +export const BoardLayout = ({ children, dockerEnabled }: BoardLayoutProps) => { const { config } = useConfigContext(); return ( - }> + }> {children} @@ -40,14 +41,18 @@ export const BoardLayout = ({ children }: BoardLayoutProps) => { ); }; -export const HeaderActions = () => { +type HeaderActionProps = { + dockerEnabled: boolean; +}; + +export const HeaderActions = ({ dockerEnabled }: HeaderActionProps) => { const { data: sessionData } = useSession(); if (!sessionData?.user?.isAdmin) return null; return ( <> - {env.NEXT_PUBLIC_DOCKER_ENABLED && } + {dockerEnabled && } diff --git a/src/env.js b/src/env.js index 5f931df4d..728685a87 100644 --- a/src/env.js +++ b/src/env.js @@ -39,7 +39,7 @@ const env = createEnv({ .refine((s) => s === 'light' || s === 'dark') .optional() .default('light'), - NEXT_PUBLIC_DOCKER_ENABLED: z.boolean().optional().default(false), + NEXT_PUBLIC_DOCKER_HOST: z.string().optional(), }, /** @@ -56,7 +56,6 @@ const env = createEnv({ NEXT_PUBLIC_DEFAULT_COLOR_SCHEME: process.env.DEFAULT_COLOR_SCHEME, NEXT_PUBLIC_PORT: process.env.PORT, NEXT_PUBLIC_NODE_ENV: process.env.NODE_ENV, - NEXT_PUBLIC_DOCKER_ENABLED: process.env.DOCKER_PORT && process.env.DOCKER_HOST, }, }); diff --git a/src/pages/board/[slug].tsx b/src/pages/board/[slug].tsx index cc6ea9777..ebb300a72 100644 --- a/src/pages/board/[slug].tsx +++ b/src/pages/board/[slug].tsx @@ -4,6 +4,7 @@ import { z } from 'zod'; import { Dashboard } from '~/components/Dashboard/Dashboard'; import { BoardLayout } from '~/components/layout/Templates/BoardLayout'; import { useInitConfig } from '~/config/init'; +import { env } from '~/env'; import { configExists } from '~/tools/config/configExists'; import { getFrontendConfig } from '~/tools/config/getFrontendConfig'; import { getServerSideTranslations } from '~/tools/server/getServerSideTranslations'; @@ -12,11 +13,12 @@ import { ConfigType } from '~/types/config'; export default function BoardPage({ config: initialConfig, + dockerEnabled, }: InferGetServerSidePropsType) { useInitConfig(initialConfig); return ( - + ); @@ -24,6 +26,7 @@ export default function BoardPage({ type BoardGetServerSideProps = { config: ConfigType; + dockerEnabled: boolean; _nextI18Next?: SSRConfig['_nextI18Next']; }; @@ -60,6 +63,7 @@ export const getServerSideProps: GetServerSideProps = a primaryColor: config.settings.customization.colors.primary, secondaryColor: config.settings.customization.colors.secondary, primaryShade: config.settings.customization.colors.shade, + dockerEnabled: !!env.DOCKER_HOST && !!env.DOCKER_PORT, ...translations, }, }; diff --git a/src/pages/board/index.tsx b/src/pages/board/index.tsx index 2e8852f23..8bb2ae230 100644 --- a/src/pages/board/index.tsx +++ b/src/pages/board/index.tsx @@ -3,6 +3,7 @@ import { SSRConfig } from 'next-i18next'; import { Dashboard } from '~/components/Dashboard/Dashboard'; import { BoardLayout } from '~/components/layout/Templates/BoardLayout'; import { useInitConfig } from '~/config/init'; +import { env } from '~/env'; import { getServerAuthSession } from '~/server/auth'; import { prisma } from '~/server/db'; import { getFrontendConfig } from '~/tools/config/getFrontendConfig'; @@ -12,11 +13,12 @@ import { ConfigType } from '~/types/config'; export default function BoardPage({ config: initialConfig, + dockerEnabled, }: InferGetServerSidePropsType) { useInitConfig(initialConfig); return ( - + ); @@ -24,6 +26,7 @@ export default function BoardPage({ type BoardGetServerSideProps = { config: ConfigType; + dockerEnabled: boolean; _nextI18Next?: SSRConfig['_nextI18Next']; }; @@ -50,6 +53,7 @@ export const getServerSideProps: GetServerSideProps = a primaryColor: config.settings.customization.colors.primary, secondaryColor: config.settings.customization.colors.secondary, primaryShade: config.settings.customization.colors.shade, + dockerEnabled: !!env.DOCKER_HOST && !!env.DOCKER_PORT, ...translations, }, }; diff --git a/src/pages/docker.tsx b/src/pages/docker.tsx index c18faabf4..2dd0700db 100644 --- a/src/pages/docker.tsx +++ b/src/pages/docker.tsx @@ -13,10 +13,7 @@ import { api } from '~/utils/api'; export default function DockerPage() { const [selection, setSelection] = useState([]); - const dockerEnabled = env.NEXT_PUBLIC_DOCKER_ENABLED; - const { data, refetch, isRefetching } = api.docker.containers.useQuery(undefined, { - enabled: dockerEnabled, - }); + const { data, refetch, isRefetching } = api.docker.containers.useQuery(); const reload = () => { refetch(); @@ -34,7 +31,7 @@ export default function DockerPage() { } export const getServerSideProps: GetServerSideProps = async ({ locale, req, res }) => { - if (!env.NEXT_PUBLIC_DOCKER_ENABLED) return { notFound: true }; + if (!env.DOCKER_HOST || !env.DOCKER_PORT) return { notFound: true }; const session = await getServerAuthSession({ req, res }); if (!session?.user.isAdmin) { return {