import React, { useState, useEffect } from 'react';
import { usePermission } from '../../../contexts/AuthorizationContext';
import { useRouteParameter, useRoute, useCurrentRoute } from '../../../contexts/RouterContext';
import { useMethod } from '../../../contexts/ServerContext';
import NotAuthorizedPage from '../../../components/NotAuthorizedPage';
import PageSkeleton from '../../../components/PageSkeleton';
import AppDetailsPage from './AppDetailsPage';
import MarketplacePage from './MarketplacePage';
import AppsPage from './AppsPage';
import AppInstallPage from './AppInstallPage';
import AppsProvider from './AppsProvider';
import AppLogsPage from './AppLogsPage';
function AppsRoute() {
const [isLoading, setLoading] = useState(true);
const canViewAppsAndMarketplace = usePermission('manage-apps');
const isAppsEngineEnabled = useMethod('apps/is-enabled');
const appsWhatIsItRoute = useRoute('admin-apps-disabled');
useEffect(() => {
let mounted = true;
const initialize = async () => {
if (!canViewAppsAndMarketplace) {
return;
}
if (!await isAppsEngineEnabled()) {
appsWhatIsItRoute.push();
return;
}
if (!mounted) {
return;
}
setLoading(false);
};
initialize();
return () => {
mounted = false;
};
}, [canViewAppsAndMarketplace, isAppsEngineEnabled, appsWhatIsItRoute]);
const [currentRouteName] = useCurrentRoute();
const isMarketPlace = currentRouteName === 'admin-marketplace';
const context = useRouteParameter('context');
const id = useRouteParameter('id');
const version = useRouteParameter('version');
if (!canViewAppsAndMarketplace) {
return ;
}
if (isLoading) {
return ;
}
return
{
(!context && isMarketPlace && )
|| (!context && !isMarketPlace && )
|| (context === 'details' && )
|| (context === 'logs' && )
|| (context === 'install' && )
}
;
}
export default AppsRoute;