saleor-apps-redis_apl/apps/emails-and-messages/src/components/manage-permissions-text-link.tsx
Krzysztof Wolski be4e7d2922
Add gift card permission to the manifest and block event (#733)
* Handle missing permissions and old Saleor Version

* Throw an error when fetching app permissions fails
2023-07-10 11:04:21 +02:00

58 lines
1.7 KiB
TypeScript

import { useAppBridge, actions } from "@saleor/app-sdk/app-bridge";
import { SaleorVersionCompatibilityValidator } from "@saleor/apps-shared";
import { PermissionEnum } from "../../generated/graphql";
import { Text } from "@saleor/macaw-ui/next";
import { TextLink } from "@saleor/apps-ui";
interface ManagePermissionsTextLinkProps {
missingPermission: PermissionEnum;
}
/*
* Returns TextLink component with link to manage permissions if used in compatible dashboard version.
* Otherwise returns text instructions to reinstall the app.
*/
export const ManagePermissionsTextLink = ({
missingPermission,
}: ManagePermissionsTextLinkProps) => {
const { appBridgeState, appBridge } = useAppBridge();
const dashboardVersion = appBridgeState?.dashboardVersion;
// Editing app permissions has been introduced in Saleor Dashboard 3.15
const isPermissionManagementAvailable = dashboardVersion
? new SaleorVersionCompatibilityValidator(">=3.15").isValid(dashboardVersion)
: false;
const appId = appBridgeState?.id;
if (!isPermissionManagementAvailable || !appId) {
return (
<Text>
To use this feature, the {missingPermission} permission is required. Please reinstall the
app.
</Text>
);
}
return (
<Text>
To use this feature, the {missingPermission} permission is required. Please go to{" "}
{/* TODO: Update the shared package to handle dashboard links */}
<TextLink
onClick={(e: Event) => {
e.preventDefault();
appBridge?.dispatch(
actions.Redirect({
to: `/apps/${appId}`,
})
);
}}
href="#"
>
Manage App section
</TextLink>
, and grant the permission
</Text>
);
};