Fix breaking Manage App screen when app is disabled (#3777)

This commit is contained in:
Lukasz Ostrowski 2023-06-20 16:03:42 +02:00 committed by GitHub
parent 2db64cd135
commit d98aa2ac8a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 32 deletions

View file

@ -21,7 +21,12 @@ export const AppDetailsPage: React.FC<AppDetailsPageProps> = ({
onAppActivateOpen, onAppActivateOpen,
onAppDeactivateOpen, onAppDeactivateOpen,
onAppDeleteOpen, onAppDeleteOpen,
}) => ( }) => {
if (!data) {
return null;
}
return (
<> <>
<Header <Header
data={data} data={data}
@ -33,10 +38,14 @@ export const AppDetailsPage: React.FC<AppDetailsPageProps> = ({
<CardSpacer /> <CardSpacer />
<PermissionsCard permissions={data?.permissions} loading={loading} /> <PermissionsCard permissions={data?.permissions} loading={loading} />
<CardSpacer /> <CardSpacer />
<DataPrivacyCard dataPrivacyUrl={data?.dataPrivacyUrl} loading={loading} /> <DataPrivacyCard
dataPrivacyUrl={data?.dataPrivacyUrl}
loading={loading}
/>
<CardSpacer /> <CardSpacer />
</> </>
); );
};
AppDetailsPage.displayName = "AppDetailsPage"; AppDetailsPage.displayName = "AppDetailsPage";
export default AppDetailsPage; export default AppDetailsPage;

View file

@ -33,6 +33,10 @@ const Header: React.FC<HeaderProps> = ({
: AppUrls.resolveAppListUrl(); : AppUrls.resolveAppListUrl();
}; };
if (!data) {
return null;
}
return ( return (
<> <>
<AppPageNav <AppPageNav
@ -47,7 +51,7 @@ const Header: React.FC<HeaderProps> = ({
/> />
<HeaderOptions <HeaderOptions
data={data} isActive={data.isActive}
onAppActivateOpen={onAppActivateOpen} onAppActivateOpen={onAppActivateOpen}
onAppDeactivateOpen={onAppDeactivateOpen} onAppDeactivateOpen={onAppDeactivateOpen}
onAppDeleteOpen={onAppDeleteOpen} onAppDeleteOpen={onAppDeleteOpen}

View file

@ -1,5 +1,3 @@
import Skeleton from "@dashboard/components/Skeleton";
import { AppQuery } from "@dashboard/graphql";
import { buttonMessages } from "@dashboard/intl"; import { buttonMessages } from "@dashboard/intl";
import { ButtonBase } from "@material-ui/core"; import { ButtonBase } from "@material-ui/core";
import { Box } from "@saleor/macaw-ui/next"; import { Box } from "@saleor/macaw-ui/next";
@ -12,39 +10,30 @@ import deleteIcon from "../../../../assets/images/delete.svg";
import { useStyles } from "./styles"; import { useStyles } from "./styles";
interface HeaderOptionsProps { interface HeaderOptionsProps {
data: AppQuery["app"]; isActive: boolean;
onAppActivateOpen: () => void; onAppActivateOpen: () => void;
onAppDeactivateOpen: () => void; onAppDeactivateOpen: () => void;
onAppDeleteOpen: () => void; onAppDeleteOpen: () => void;
} }
const HeaderOptions: React.FC<HeaderOptionsProps> = ({ const HeaderOptions: React.FC<HeaderOptionsProps> = ({
data, isActive,
onAppActivateOpen, onAppActivateOpen,
onAppDeactivateOpen, onAppDeactivateOpen,
onAppDeleteOpen, onAppDeleteOpen,
}) => { }) => {
const classes = useStyles(); const classes = useStyles();
if (!data) {
return (
<Box marginX={7}>
<Skeleton />
<div className={classes.hr} />
</Box>
);
}
return ( return (
<Box marginX={7}> <Box marginX={7}>
<div className={classes.appHeaderLinks}> <div className={classes.appHeaderLinks}>
<ButtonBase <ButtonBase
className={classes.headerLinkContainer} className={classes.headerLinkContainer}
disableRipple disableRipple
onClick={data.isActive ? onAppDeactivateOpen : onAppActivateOpen} onClick={isActive ? onAppDeactivateOpen : onAppActivateOpen}
> >
<SVG src={activateIcon} /> <SVG src={activateIcon} />
{data?.isActive ? ( {isActive ? (
<FormattedMessage {...buttonMessages.deactivate} /> <FormattedMessage {...buttonMessages.deactivate} />
) : ( ) : (
<FormattedMessage {...buttonMessages.activate} /> <FormattedMessage {...buttonMessages.activate} />