diff --git a/apps/dokploy/__test__/logs/container-selection.test.ts b/apps/dokploy/__test__/logs/container-selection.test.ts index e87817556..d8af2ede4 100644 --- a/apps/dokploy/__test__/logs/container-selection.test.ts +++ b/apps/dokploy/__test__/logs/container-selection.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { resolveContainerSelection } from "@/components/dashboard/application/logs/container-selection"; +import { resolveContainerSelection } from "@/components/dashboard/docker/logs/utils"; const containers = [ { containerId: "first-container" }, diff --git a/apps/dokploy/components/dashboard/application/logs/container-selection.ts b/apps/dokploy/components/dashboard/application/logs/container-selection.ts deleted file mode 100644 index 445ffb0a8..000000000 --- a/apps/dokploy/components/dashboard/application/logs/container-selection.ts +++ /dev/null @@ -1,21 +0,0 @@ -interface ContainerOption { - containerId: string; -} - -export const resolveContainerSelection = ( - currentContainerId: string | undefined, - containers: readonly ContainerOption[] | undefined, -) => { - if (!containers) { - return currentContainerId; - } - - if ( - currentContainerId && - containers.some(({ containerId }) => containerId === currentContainerId) - ) { - return currentContainerId; - } - - return containers[0]?.containerId; -}; diff --git a/apps/dokploy/components/dashboard/application/logs/show.tsx b/apps/dokploy/components/dashboard/application/logs/show.tsx index d5db191d1..372640906 100644 --- a/apps/dokploy/components/dashboard/application/logs/show.tsx +++ b/apps/dokploy/components/dashboard/application/logs/show.tsx @@ -1,6 +1,7 @@ import { Loader2 } from "lucide-react"; import dynamic from "next/dynamic"; import { useEffect, useState } from "react"; +import { resolveContainerSelection } from "@/components/dashboard/docker/logs/utils"; import { Badge } from "@/components/ui/badge"; import { Card, @@ -21,7 +22,6 @@ import { } from "@/components/ui/select"; import { Switch } from "@/components/ui/switch"; import { api } from "@/utils/api"; -import { resolveContainerSelection } from "./container-selection"; export const DockerLogs = dynamic( () => import("@/components/dashboard/docker/logs/docker-logs-id").then( diff --git a/apps/dokploy/components/dashboard/compose/logs/show-stack.tsx b/apps/dokploy/components/dashboard/compose/logs/show-stack.tsx index 558dc1c0f..acf296f7e 100644 --- a/apps/dokploy/components/dashboard/compose/logs/show-stack.tsx +++ b/apps/dokploy/components/dashboard/compose/logs/show-stack.tsx @@ -2,6 +2,7 @@ import { Loader2 } from "lucide-react"; import dynamic from "next/dynamic"; import { useEffect, useState } from "react"; import { badgeStateColor } from "@/components/dashboard/application/logs/show"; +import { resolveContainerSelection } from "@/components/dashboard/docker/logs/utils"; import { Badge } from "@/components/ui/badge"; import { Card, @@ -70,22 +71,13 @@ export const ShowDockerLogsStack = ({ ); const containers = data?.filter((container) => container.containerId); + const availableContainers = option === "native" ? containers : services; useEffect(() => { - const currentContainers = option === "native" ? containers : services; - - if (currentContainers) { - const nextContainerId = currentContainers.some( - (container) => container.containerId === containerId, - ) - ? containerId - : currentContainers[0]?.containerId; - - if (nextContainerId !== containerId) { - setContainerId(nextContainerId); - } - } - }, [option, services, containers, containerId]); + setContainerId((currentContainerId) => + resolveContainerSelection(currentContainerId, availableContainers), + ); + }, [availableContainers]); const isLoading = option === "native" ? containersLoading : servicesLoading; const containersLength = diff --git a/apps/dokploy/components/dashboard/docker/logs/utils.ts b/apps/dokploy/components/dashboard/docker/logs/utils.ts index f817d980e..81d86408d 100644 --- a/apps/dokploy/components/dashboard/docker/logs/utils.ts +++ b/apps/dokploy/components/dashboard/docker/logs/utils.ts @@ -7,6 +7,28 @@ export interface LogLine { message: string; } +interface ContainerOption { + containerId: string; +} + +export const resolveContainerSelection = ( + currentContainerId: string | undefined, + containers: readonly ContainerOption[] | undefined, +) => { + if (!containers) { + return currentContainerId; + } + + if ( + currentContainerId && + containers.some(({ containerId }) => containerId === currentContainerId) + ) { + return currentContainerId; + } + + return containers[0]?.containerId; +}; + interface LogStyle { type: LogType; variant: LogVariant;