🐛 Fix docker enabled issue

This commit is contained in:
Meier Lukas
2023-08-10 06:56:45 +02:00
parent 1d09f662aa
commit b21ee50908
5 changed files with 22 additions and 13 deletions

View File

@@ -24,14 +24,15 @@ import { api } from '~/utils/api';
import { MainLayout } from './MainLayout'; import { MainLayout } from './MainLayout';
type BoardLayoutProps = { type BoardLayoutProps = {
dockerEnabled: boolean;
children: React.ReactNode; children: React.ReactNode;
}; };
export const BoardLayout = ({ children }: BoardLayoutProps) => { export const BoardLayout = ({ children, dockerEnabled }: BoardLayoutProps) => {
const { config } = useConfigContext(); const { config } = useConfigContext();
return ( return (
<MainLayout headerActions={<HeaderActions />}> <MainLayout headerActions={<HeaderActions dockerEnabled={dockerEnabled} />}>
<BoardHeadOverride /> <BoardHeadOverride />
<BackgroundImage /> <BackgroundImage />
{children} {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(); const { data: sessionData } = useSession();
if (!sessionData?.user?.isAdmin) return null; if (!sessionData?.user?.isAdmin) return null;
return ( return (
<> <>
{env.NEXT_PUBLIC_DOCKER_ENABLED && <DockerButton />} {dockerEnabled && <DockerButton />}
<ToggleEditModeButton /> <ToggleEditModeButton />
<CustomizeBoardButton /> <CustomizeBoardButton />
</> </>

View File

@@ -39,7 +39,7 @@ const env = createEnv({
.refine((s) => s === 'light' || s === 'dark') .refine((s) => s === 'light' || s === 'dark')
.optional() .optional()
.default('light'), .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_DEFAULT_COLOR_SCHEME: process.env.DEFAULT_COLOR_SCHEME,
NEXT_PUBLIC_PORT: process.env.PORT, NEXT_PUBLIC_PORT: process.env.PORT,
NEXT_PUBLIC_NODE_ENV: process.env.NODE_ENV, NEXT_PUBLIC_NODE_ENV: process.env.NODE_ENV,
NEXT_PUBLIC_DOCKER_ENABLED: process.env.DOCKER_PORT && process.env.DOCKER_HOST,
}, },
}); });

View File

@@ -4,6 +4,7 @@ import { z } from 'zod';
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 { env } from '~/env';
import { configExists } from '~/tools/config/configExists'; import { configExists } from '~/tools/config/configExists';
import { getFrontendConfig } from '~/tools/config/getFrontendConfig'; import { getFrontendConfig } from '~/tools/config/getFrontendConfig';
import { getServerSideTranslations } from '~/tools/server/getServerSideTranslations'; import { getServerSideTranslations } from '~/tools/server/getServerSideTranslations';
@@ -12,11 +13,12 @@ import { ConfigType } from '~/types/config';
export default function BoardPage({ export default function BoardPage({
config: initialConfig, config: initialConfig,
dockerEnabled,
}: InferGetServerSidePropsType<typeof getServerSideProps>) { }: InferGetServerSidePropsType<typeof getServerSideProps>) {
useInitConfig(initialConfig); useInitConfig(initialConfig);
return ( return (
<BoardLayout> <BoardLayout dockerEnabled={dockerEnabled}>
<Dashboard /> <Dashboard />
</BoardLayout> </BoardLayout>
); );
@@ -24,6 +26,7 @@ export default function BoardPage({
type BoardGetServerSideProps = { type BoardGetServerSideProps = {
config: ConfigType; config: ConfigType;
dockerEnabled: boolean;
_nextI18Next?: SSRConfig['_nextI18Next']; _nextI18Next?: SSRConfig['_nextI18Next'];
}; };
@@ -60,6 +63,7 @@ export const getServerSideProps: GetServerSideProps<BoardGetServerSideProps> = a
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,
dockerEnabled: !!env.DOCKER_HOST && !!env.DOCKER_PORT,
...translations, ...translations,
}, },
}; };

View File

@@ -3,6 +3,7 @@ import { SSRConfig } from 'next-i18next';
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 { env } from '~/env';
import { getServerAuthSession } from '~/server/auth'; import { getServerAuthSession } from '~/server/auth';
import { prisma } from '~/server/db'; import { prisma } from '~/server/db';
import { getFrontendConfig } from '~/tools/config/getFrontendConfig'; import { getFrontendConfig } from '~/tools/config/getFrontendConfig';
@@ -12,11 +13,12 @@ import { ConfigType } from '~/types/config';
export default function BoardPage({ export default function BoardPage({
config: initialConfig, config: initialConfig,
dockerEnabled,
}: InferGetServerSidePropsType<typeof getServerSideProps>) { }: InferGetServerSidePropsType<typeof getServerSideProps>) {
useInitConfig(initialConfig); useInitConfig(initialConfig);
return ( return (
<BoardLayout> <BoardLayout dockerEnabled={dockerEnabled}>
<Dashboard /> <Dashboard />
</BoardLayout> </BoardLayout>
); );
@@ -24,6 +26,7 @@ export default function BoardPage({
type BoardGetServerSideProps = { type BoardGetServerSideProps = {
config: ConfigType; config: ConfigType;
dockerEnabled: boolean;
_nextI18Next?: SSRConfig['_nextI18Next']; _nextI18Next?: SSRConfig['_nextI18Next'];
}; };
@@ -50,6 +53,7 @@ export const getServerSideProps: GetServerSideProps<BoardGetServerSideProps> = a
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,
dockerEnabled: !!env.DOCKER_HOST && !!env.DOCKER_PORT,
...translations, ...translations,
}, },
}; };

View File

@@ -13,10 +13,7 @@ import { api } from '~/utils/api';
export default function DockerPage() { export default function DockerPage() {
const [selection, setSelection] = useState<ContainerInfo[]>([]); const [selection, setSelection] = useState<ContainerInfo[]>([]);
const dockerEnabled = env.NEXT_PUBLIC_DOCKER_ENABLED; const { data, refetch, isRefetching } = api.docker.containers.useQuery();
const { data, refetch, isRefetching } = api.docker.containers.useQuery(undefined, {
enabled: dockerEnabled,
});
const reload = () => { const reload = () => {
refetch(); refetch();
@@ -34,7 +31,7 @@ export default function DockerPage() {
} }
export const getServerSideProps: GetServerSideProps = async ({ locale, req, res }) => { 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 }); const session = await getServerAuthSession({ req, res });
if (!session?.user.isAdmin) { if (!session?.user.isAdmin) {
return { return {