import Container from "@dashboard/components/Container"; import PageHeader from "@dashboard/components/PageHeader"; import PreviewPill from "@dashboard/components/PreviewPill"; import useNavigator from "@dashboard/hooks/useNavigator"; import { sectionNames } from "@dashboard/intl"; import { AppUrls } from "@dashboard/new-apps/urls"; import { ListProps } from "@dashboard/types"; import { Typography } from "@material-ui/core"; import React, { useCallback } from "react"; import { FormattedMessage, useIntl } from "react-intl"; import AllAppList from "../AllAppList"; import InstalledAppList from "../InstalledAppList"; import { InstallWithManifestFormButton } from "../InstallWithManifestFormButton"; import MarketplaceAlert from "../MarketplaceAlert"; import SectionHeader from "../SectionHeader"; import { messages } from "./messages"; import { useStyles } from "./styles"; import { AppListPageSections } from "./types"; import { getVerifiedAppsInstallations, getVerifiedInstallableMarketplaceApps, getVerifiedInstalledApps, resolveSectionsAvailability, } from "./utils"; export interface AppListPageProps extends AppListPageSections, ListProps { marketplaceError?: Error; } export const AppListPage: React.FC = props => { const { appsInstallations, installedApps, installableMarketplaceApps, comingSoonMarketplaceApps, disabled, settings, marketplaceError, onUpdateListSettings, } = props; const intl = useIntl(); const classes = useStyles(); const verifiedInstalledApps = getVerifiedInstalledApps( installedApps, installableMarketplaceApps, ); const verifiedAppsIntallations = getVerifiedAppsInstallations( appsInstallations, installableMarketplaceApps, ); const verifiedInstallableMarketplaceApps = getVerifiedInstallableMarketplaceApps( installedApps, installableMarketplaceApps, ); const sectionsAvailability = resolveSectionsAvailability({ ...props, installableMarketplaceApps: verifiedInstallableMarketplaceApps, }); const navigate = useNavigator(); const navigateToAppInstallPage = useCallback( (manifestUrl: string) => { navigate(AppUrls.resolveAppInstallUrl(manifestUrl)); }, [navigate], ); const navigateToGithubForkPage = useCallback((githubForkUrl: string) => { window.open(githubForkUrl, "_blank"); }, []); return (
{sectionsAvailability.installed && ( <> )} {sectionsAvailability.all && !marketplaceError && ( <> } /> )} {sectionsAvailability.comingSoon && !marketplaceError && ( <> )}
); }; AppListPage.displayName = "AppListPage"; export default AppListPage;