import { useRouteParameter, useRoute, usePermission } from '@rocket.chat/ui-contexts'; import { useState, useEffect } from 'react'; import AppDetailsPage from './AppDetailsPage'; import AppInstallPage from './AppInstallPage'; import AppsPage from './AppsPage'; import BannerEnterpriseTrialEnded from './components/BannerEnterpriseTrialEnded'; import PageSkeleton from '../../components/PageSkeleton'; import AppsProvider from '../../providers/AppsProvider'; import NotAuthorizedPage from '../notAuthorized/NotAuthorizedPage'; const AppsRoute = () => { const [isLoading, setLoading] = useState(true); const marketplaceRoute = useRoute('marketplace'); const context = useRouteParameter('context') || 'explore'; const id = useRouteParameter('id'); const page = useRouteParameter('page'); const isAdminUser = usePermission('manage-apps'); const canAccessMarketplace = usePermission('access-marketplace'); if (!page) marketplaceRoute.push({ context, page: 'list' }); useEffect(() => { let mounted = true; const initialize = async (): Promise => { if (!mounted) { return; } setLoading(false); }; initialize(); return (): void => { mounted = false; }; }, [marketplaceRoute, context]); if ( (context === 'explore' || context === 'installed' || context === 'private' || context === 'premium') && !canAccessMarketplace && !isAdminUser ) { return ; } if ((context === 'requested' || page === 'install') && !isAdminUser) return ; if (isLoading) { return ; } return ( {(page === 'list' && ) || (id && page === 'info' && ) || (page === 'install' && )} ); }; export default AppsRoute;