import { useState, useEffect } from 'react'; import { Registry } from '@/react/portainer/registries/types'; import { Select } from '@@/form-components/ReactSelect'; import { FormControl } from '@@/form-components/FormControl'; import { Button } from '@@/buttons'; import { FormError } from '@@/form-components/FormError'; import { SwitchField } from '@@/form-components/SwitchField'; import { TextTip } from '@@/Tip/TextTip'; import { FormSection } from '@@/form-components/FormSection'; interface Props { value?: number; registries: Registry[]; onChange: () => void; formInvalid?: boolean; errorMessage?: string; onSelect: (value?: number) => void; isActive?: boolean; clearRegistries: () => void; method?: string; } export function PrivateRegistryFieldset({ value, registries, onChange, formInvalid, errorMessage, onSelect, isActive, clearRegistries, method, }: Props) { const [checked, setChecked] = useState(isActive || false); const [selected, setSelected] = useState(value); const tooltipMessage = 'Use this when using a private registry that requires credentials'; useEffect(() => { if (checked) { onChange(); } else { clearRegistries(); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [checked]); useEffect(() => { setSelected(value); }, [value]); function reload() { onChange(); setSelected(value); } return (
setChecked(value)} tooltip={tooltipMessage} label="Use Credentials" labelClass="col-sm-3 col-lg-2" disabled={formInvalid} />
{checked && ( <> {method !== 'repository' && ( <> If you make any changes to the image urls in your yaml, please reload or select registry manually )} {!errorMessage ? (