import { Card, TableBody, TableCell, Typography } from "@material-ui/core"; import { AppManifestTableDisplay } from "@saleor/apps/components/AppManifestTableDisplay/AppManifestTableDisplay"; import { InstallWithManifestFormButton } from "@saleor/apps/components/InstallWithManifestFormButton"; import { appUrl, createAppInstallUrl } from "@saleor/apps/urls"; import { isAppInTunnel } from "@saleor/apps/utils"; import CardTitle from "@saleor/components/CardTitle"; import { IconButton } from "@saleor/components/IconButton"; import { TableButtonWrapper } from "@saleor/components/TableButtonWrapper/TableButtonWrapper"; import TableRowLink from "@saleor/components/TableRowLink"; import { AppListItemFragment } from "@saleor/graphql"; import useNavigator from "@saleor/hooks/useNavigator"; import { ResponsiveTable, SettingsIcon } from "@saleor/macaw-ui"; import { renderCollection } from "@saleor/misc"; import { ListProps } from "@saleor/types"; import React, { useCallback } from "react"; import { FormattedMessage } from "react-intl"; import { useStyles } from "../../styles"; import { AppPermissions } from "../AppPermissions/AppPermissions"; import AppsSkeleton from "../AppsSkeleton"; export interface InstalledAppsProps extends ListProps { appsList: AppListItemFragment[]; onSettingsClick: (id: string) => void; displayQuickManifestButton?: boolean; title: string; } const InstalledApps: React.FC = ({ appsList, onSettingsClick, title, displayQuickManifestButton = false, ...props }) => { const classes = useStyles(props); const navigate = useNavigator(); const navigateToAppInstallPage = useCallback( (url: string) => { navigate(createAppInstallUrl(url)); }, [navigate], ); return ( ) : ( undefined ) } /> {renderCollection( appsList, (app, index) => app ? ( {app.name} {app.manifestUrl && isAppInTunnel(app.manifestUrl) ? ( ) : null} {app.manifestUrl && ( )} onSettingsClick(app.id)} > ) : ( ), () => ( ), )} ); }; InstalledApps.displayName = "InstalledApps"; export default InstalledApps;