import useShop from "@saleor/hooks/useShop"; import { useTheme } from "@saleor/macaw-ui"; import React from "react"; import urlJoin from "url-join"; import { useStyles } from "./styles"; import { useAppActions } from "./useAppActions"; interface Props { src: string; appToken: string; appId: string; onLoad?(): void; onError?(): void; } const getOrigin = (url: string) => new URL(url).origin; export const AppFrame: React.FC = ({ src, appToken, appId, onLoad, onError }) => { const shop = useShop(); const frameRef = React.useRef(); const { sendThemeToExtension } = useTheme(); const classes = useStyles(); const appOrigin = getOrigin(src); const { postToExtension } = useAppActions(frameRef, appOrigin); const handleLoad = () => { postToExtension({ type: "handshake", payload: { token: appToken, version: 1 } }); sendThemeToExtension(); if (onLoad) { onLoad(); } }; if (!shop?.domain.host) { return null; } return (