import * as React from 'react';
import { useQuery } from '@apollo/client';
import {
Link,
Route,
Navigate,
Routes,
useParams,
useSearchParams,
useMatch,
useNavigate,
} from 'react-router-dom';
import type { LinkProps } from 'react-router-dom';
import { useTheme } from '@mui/material/styles';
import useMediaQuery from '@mui/material/useMediaQuery';
import Box from '@mui/material/Box';
import Grid from '@mui/material/Grid';
import Tabs from '@mui/material/Tabs';
import Tab from '@mui/material/Tab';
import AddIcon from '@mui/icons-material/Add';
import useFormatMessage from 'hooks/useFormatMessage';
import { GET_APP } from 'graphql/queries/get-app';
import * as URLS from 'config/urls';
import ConditionalIconButton from 'components/ConditionalIconButton';
import AppConnections from 'components/AppConnections';
import AppFlows from 'components/AppFlows';
import AddAppConnection from 'components/AddAppConnection';
import AppIcon from 'components/AppIcon';
import Container from 'components/Container';
import PageTitle from 'components/PageTitle';
type ApplicationParams = {
appKey: string;
connectionId?: string;
};
const ReconnectConnection = (props: any): React.ReactElement => {
const { application, onClose } = props;
const { connectionId } = useParams() as ApplicationParams;
return (
);
};
export default function Application(): React.ReactElement | null {
const theme = useTheme();
const matchSmallScreens = useMediaQuery(theme.breakpoints.down('md'), {
noSsr: true,
});
const formatMessage = useFormatMessage();
const connectionsPathMatch = useMatch({
path: URLS.APP_CONNECTIONS_PATTERN,
end: false,
});
const flowsPathMatch = useMatch({ path: URLS.APP_FLOWS_PATTERN, end: false });
const [searchParams] = useSearchParams();
const { appKey } = useParams() as ApplicationParams;
const navigate = useNavigate();
const { data, loading } = useQuery(GET_APP, { variables: { key: appKey } });
const connectionId = searchParams.get('connectionId') || undefined;
const goToApplicationPage = () => navigate('connections');
const app = data?.getApp || {};
const NewConnectionLink = React.useMemo(
() =>
React.forwardRef>(
function InlineLink(linkProps, ref) {
return (
);
}
),
[appKey]
);
const NewFlowLink = React.useMemo(
() =>
React.forwardRef>(
function InlineLink(linkProps, ref) {
return (
);
}
),
[appKey, connectionId]
);
if (loading) return null;
return (
<>
{app.name}
}
>
{formatMessage('app.createFlow')}
}
/>
}
data-test="add-connection-button"
>
{formatMessage('app.addConnection')}
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
>
);
}