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 {