import { useStore } from 'zustand'; import { useCurrentStateAndParams, useRouter } from '@uirouter/react'; import { useEffect, useState } from 'react'; import { environmentStore } from '@/react/hooks/current-environment-store'; import { Environment } from '@/react/portainer/environments/types'; import { isEdgeEnvironment } from '@/react/portainer/environments/utils'; import { confirm } from '@@/modals/confirm'; import { PageHeader } from '@@/PageHeader'; import { ModalType } from '@@/modals'; import { buildConfirmButton } from '@@/modals/utils'; import { EnvironmentList } from './EnvironmentList'; import { EdgeLoadingSpinner } from './EdgeLoadingSpinner'; import { MotdPanel } from './MotdPanel'; import { LicenseNodePanel } from './LicenseNodePanel'; import { BackupFailedPanel } from './BackupFailedPanel'; import { EnvironmentHeader } from './EnvironmentHeader/EnvironmentHeader'; export function HomeView() { const { clear: clearStore } = useStore(environmentStore); const { params } = useCurrentStateAndParams(); const [connectingToEdgeEndpoint, setConnectingToEdgeEndpoint] = useState( !!params.redirect ); const router = useRouter(); useEffect(() => { async function redirect() { const options = { title: `Failed connecting to ${params.environmentName}`, message: `There was an issue connecting to edge agent via tunnel. Click 'Retry' below to retry now, or wait 10 seconds to automatically retry.`, confirmButton: buildConfirmButton('Retry', 'primary', 10), modalType: ModalType.Destructive, }; if (await confirm(options)) { setConnectingToEdgeEndpoint(true); router.stateService.go(params.route, { endpointId: params.environmentId, }); } else { clearStore(); router.stateService.go( 'portainer.home', {}, { reload: true, inherit: false } ); } } if (params.redirect) { redirect(); } }, [params, setConnectingToEdgeEndpoint, router, clearStore]); return (
{process.env.PORTAINER_EDITION !== 'CE' && } {process.env.PORTAINER_EDITION !== 'CE' && } {connectingToEdgeEndpoint ? (
) : (
)}
); function handleBrowseClick(environment: Environment) { if (isEdgeEnvironment(environment.Type)) { setConnectingToEdgeEndpoint(true); } } }