import { Message } from '@shlinkio/shlink-frontend-kit'; import type { FC } from 'react'; import { useEffect } from 'react'; import { useParams } from 'react-router-dom'; import { NoMenuLayout } from '../../common/NoMenuLayout'; import type { FCWithDeps } from '../../container/utils'; import { useDependencies } from '../../container/utils'; import type { SelectedServer } from '../data'; import { isNotFoundServer } from '../data'; export type WithSelectedServerProps = { selectServer: (serverId: string) => void; selectedServer: SelectedServer; }; type WithSelectedServerPropsDeps = { ServerError: FC; }; export function withSelectedServer( WrappedComponent: FCWithDeps, ) { const ComponentWrapper: FCWithDeps = (props) => { const { ServerError } = useDependencies(ComponentWrapper); const params = useParams<{ serverId: string }>(); const { selectServer, selectedServer } = props; useEffect(() => { params.serverId && selectServer(params.serverId); }, [params.serverId, selectServer]); if (!selectedServer) { return ( ); } if (isNotFoundServer(selectedServer)) { return ; } return ; }; return ComponentWrapper; }