import * as React from 'react'; import { Link, Routes, Route, useNavigate } from 'react-router-dom'; import { useQuery } from '@apollo/client'; import Box from '@mui/material/Box'; import Grid from '@mui/material/Grid'; import Divider from '@mui/material/Divider'; import CircularProgress from '@mui/material/CircularProgress'; import AddIcon from '@mui/icons-material/Add'; import type { IApp } from '@automatisch/types'; import Can from 'components/Can'; import NoResultFound from 'components/NoResultFound'; import ConditionalIconButton from 'components/ConditionalIconButton'; import Container from 'components/Container'; import AddNewAppConnection from 'components/AddNewAppConnection'; import PageTitle from 'components/PageTitle'; import AppRow from 'components/AppRow'; import SearchInput from 'components/SearchInput'; import useFormatMessage from 'hooks/useFormatMessage'; import { GET_CONNECTED_APPS } from 'graphql/queries/get-connected-apps'; import * as URLS from 'config/urls'; export default function Applications(): React.ReactElement { const navigate = useNavigate(); const formatMessage = useFormatMessage(); const [appName, setAppName] = React.useState(null); const { data, loading } = useQuery(GET_CONNECTED_APPS, { variables: { name: appName }, }); const apps: IApp[] = data?.getConnectedApps; const hasApps = apps?.length; const onSearchChange = React.useCallback((event) => { setAppName(event.target.value); }, []); const goToApps = React.useCallback(() => { navigate(URLS.APPS); }, [navigate]); return ( {formatMessage('apps.title')} {(allowed) => ( } data-test="add-connection-button" > {formatMessage('apps.addConnection')} )} {loading && ( )} {!loading && !hasApps && ( )} {!loading && apps?.map((app: IApp) => ( ))} } /> ); }