import { useCurrentStateAndParams } from '@uirouter/react';
import { AccessControlPanel } from '@/react/portainer/access-control/AccessControlPanel';
import { ContainerDetailsViewModel } from '@/docker/models/containerDetails';
import { ResourceControlType } from '@/react/portainer/access-control/types';
import { trimContainerName } from '@/docker/filters/utils';
import { useEnvironmentId } from '@/react/hooks/useEnvironmentId';
import { useEnvironmentRegistries } from '@/react/portainer/environments/queries/useEnvironmentRegistries';
import { Registry } from '@/react/portainer/registries/types/registry';
import { PageHeader } from '@@/PageHeader';
import { findBestMatchRegistry } from '@@/ImageConfigFieldset/findRegistryMatch';
import { useContainer } from '../queries/useContainer';
import { ContainerActionsSection } from './ContainerActionsSection/ContainerActionsSection';
import { ContainerStatusSection } from './ContainerStatusSection/ContainerStatusSection';
import { CreateImageSection } from './CreateImageSection/CreateImageSection';
import { ContainerDetailsSection } from './ContainerDetailsSection/ContainerDetailsSection';
import { VolumesSection } from './VolumesSection/VolumesSection';
import { ContainerNetworksDatatable } from './ContainerNetworksDatatable';
import { HealthStatus } from './HealthStatus';
import { getContainerBreadcrumbs } from './containerBreadcrumbs';
// Re-exported for backwards compatibility: the breadcrumb source of truth now
// lives in ./containerBreadcrumbs (shared with the container sub-tab views).
export { STACK_CONTAINER_STATE_NAME } from './containerBreadcrumbs';
export function ItemView() {
const environmentId = useEnvironmentId();
const { state, params } = useCurrentStateAndParams();
const { id: containerId, nodeName } = params;
const containerQuery = useContainer(
{ environmentId, containerId, nodeName },
{ select: (c) => new ContainerDetailsViewModel(c) }
);
const registriesQuery = useEnvironmentRegistries(environmentId);
if (
containerQuery.isLoading ||
!containerQuery.data ||
!registriesQuery.data
) {
return null;
}
const container = containerQuery.data;
const registryId = getRegistryId(container, registriesQuery.data);
async function handleSuccess() {
containerQuery.refetch();
}
const containerName =
trimContainerName(container.Name) || container.Id || 'unknown';
return (
<>