App adjustments (#1385)

* Use shop domain as backendHost, guard domain changes on cloud instances

* Update messages and snapshots

* Remove unused prop
This commit is contained in:
Jakub Majorek 2021-09-13 16:14:04 +02:00 committed by GitHub
parent cda3cfa4c0
commit dbaed5478a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 61 additions and 65 deletions

View file

@ -25,6 +25,7 @@ jobs:
ENVIRONMENT: ${{ github.event.inputs.service_name }} ENVIRONMENT: ${{ github.event.inputs.service_name }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
IS_CLOUD_INSTANCE: true
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with: with:

View file

@ -24,6 +24,7 @@ jobs:
SENTRY_URL_PREFIX: "~/dashboard/static" SENTRY_URL_PREFIX: "~/dashboard/static"
SENTRY_DSN: ${{ secrets.SENTRY_DSN }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
IS_CLOUD_INSTANCE: true
steps: steps:
- name: Set env variables - name: Set env variables
run: | run: |

View file

@ -62,6 +62,7 @@ jobs:
API_URI: ${{ steps.api_uri.outputs.custom_api_uri || 'https://qa.staging.saleor.cloud/graphql/' }} API_URI: ${{ steps.api_uri.outputs.custom_api_uri || 'https://qa.staging.saleor.cloud/graphql/' }}
APP_MOUNT_URI: / APP_MOUNT_URI: /
STATIC_URL: / STATIC_URL: /
IS_CLOUD_INSTANCE: true
run: | run: |
npm run build npm run build

View file

@ -6726,14 +6726,14 @@
"src_dot_siteSettings_dot_components_dot_SiteSettingsDetails_dot_1008586926": { "src_dot_siteSettings_dot_components_dot_SiteSettingsDetails_dot_1008586926": {
"string": "Name of your store is shown on tab in web browser" "string": "Name of your store is shown on tab in web browser"
}, },
"src_dot_siteSettings_dot_components_dot_SiteSettingsDetails_dot_1987367127": { "src_dot_siteSettings_dot_components_dot_SiteSettingsDetails_dot_1170194728": {
"string": "Store Description" "string": "Store domain"
}, },
"src_dot_siteSettings_dot_components_dot_SiteSettingsDetails_dot_2286355060": { "src_dot_siteSettings_dot_components_dot_SiteSettingsDetails_dot_2286355060": {
"string": "Name of your store" "string": "Name of your store"
}, },
"src_dot_siteSettings_dot_components_dot_SiteSettingsDetails_dot_3808773492": { "src_dot_siteSettings_dot_components_dot_SiteSettingsDetails_dot_3868874271": {
"string": "URL of your online store" "string": "Store description"
}, },
"src_dot_siteSettings_dot_components_dot_SiteSettingsDetails_dot_529433178": { "src_dot_siteSettings_dot_components_dot_SiteSettingsDetails_dot_529433178": {
"string": "Store description is shown on taskbar after your store name" "string": "Store description is shown on taskbar after your store name"

View file

@ -8,7 +8,6 @@ import AppDetailsSettingsPage, {
} from "./AppDetailsSettingsPage"; } from "./AppDetailsSettingsPage";
const props: AppDetailsSettingsPageProps = { const props: AppDetailsSettingsPageProps = {
backendHost: "host",
data: appDetails, data: appDetails,
navigateToDashboard: () => undefined, navigateToDashboard: () => undefined,
onBack: () => undefined, onBack: () => undefined,

View file

@ -5,7 +5,6 @@ import Grid from "@saleor/components/Grid";
import Hr from "@saleor/components/Hr"; import Hr from "@saleor/components/Hr";
import { sectionNames } from "@saleor/intl"; import { sectionNames } from "@saleor/intl";
import { Backlink } from "@saleor/macaw-ui"; import { Backlink } from "@saleor/macaw-ui";
import { useTheme } from "@saleor/macaw-ui";
import classNames from "classnames"; import classNames from "classnames";
import React from "react"; import React from "react";
import { FormattedMessage, useIntl } from "react-intl"; import { FormattedMessage, useIntl } from "react-intl";
@ -16,7 +15,6 @@ import { useStyles } from "./styles";
import useSettingsBreadcrumbs from "./useSettingsBreadcrumbs"; import useSettingsBreadcrumbs from "./useSettingsBreadcrumbs";
export interface AppDetailsSettingsPageProps { export interface AppDetailsSettingsPageProps {
backendHost: string;
data: App_app; data: App_app;
navigateToDashboard: () => void; navigateToDashboard: () => void;
onBack: () => void; onBack: () => void;
@ -24,7 +22,6 @@ export interface AppDetailsSettingsPageProps {
} }
export const AppDetailsSettingsPage: React.FC<AppDetailsSettingsPageProps> = ({ export const AppDetailsSettingsPage: React.FC<AppDetailsSettingsPageProps> = ({
backendHost,
data, data,
navigateToDashboard, navigateToDashboard,
onBack, onBack,
@ -33,7 +30,6 @@ export const AppDetailsSettingsPage: React.FC<AppDetailsSettingsPageProps> = ({
const intl = useIntl(); const intl = useIntl();
const classes = useStyles({}); const classes = useStyles({});
const [breadcrumbs, onBreadcrumbClick] = useSettingsBreadcrumbs(); const [breadcrumbs, onBreadcrumbClick] = useSettingsBreadcrumbs();
const { sendThemeToExtension } = useTheme();
return ( return (
<Container> <Container>
@ -104,9 +100,7 @@ export const AppDetailsSettingsPage: React.FC<AppDetailsSettingsPageProps> = ({
{data && ( {data && (
<AppFrame <AppFrame
src={data.configurationUrl} src={data.configurationUrl}
backendHost={backendHost}
appToken={data.accessToken} appToken={data.accessToken}
onLoad={sendThemeToExtension}
onError={onError} onError={onError}
/> />
)} )}

View file

@ -1,3 +1,4 @@
import useShop from "@saleor/hooks/useShop";
import { useTheme } from "@saleor/macaw-ui"; import { useTheme } from "@saleor/macaw-ui";
import React from "react"; import React from "react";
import urlJoin from "url-join"; import urlJoin from "url-join";
@ -8,7 +9,6 @@ import { useAppActions } from "./useAppActions";
interface Props { interface Props {
src: string; src: string;
appToken: string; appToken: string;
backendHost: string;
onLoad?(): void; onLoad?(): void;
onError?(): void; onError?(): void;
} }
@ -18,10 +18,10 @@ const getOrigin = (url: string) => new URL(url).origin;
export const AppFrame: React.FC<Props> = ({ export const AppFrame: React.FC<Props> = ({
src, src,
appToken, appToken,
backendHost,
onLoad, onLoad,
onError onError
}) => { }) => {
const shop = useShop();
const frameRef = React.useRef<HTMLIFrameElement>(); const frameRef = React.useRef<HTMLIFrameElement>();
const { sendThemeToExtension } = useTheme(); const { sendThemeToExtension } = useTheme();
const classes = useStyles(); const classes = useStyles();
@ -43,10 +43,14 @@ export const AppFrame: React.FC<Props> = ({
} }
}; };
if (!shop?.domain.host) {
return null;
}
return ( return (
<iframe <iframe
ref={frameRef} ref={frameRef}
src={urlJoin(src, `?domain=${backendHost}`)} src={urlJoin(src, `?domain=${shop.domain.host}`)}
onError={onError} onError={onError}
onLoad={handleLoad} onLoad={handleLoad}
className={classes.iframe} className={classes.iframe}

View file

@ -6,7 +6,6 @@ import { AppFrame } from "../AppFrame";
export interface AppData { export interface AppData {
appToken: string; appToken: string;
src: string; src: string;
backendUrl: string;
label: string; label: string;
} }
@ -31,11 +30,7 @@ export const ExternalAppProvider: React.FC = ({ children }) => {
{children} {children}
<AppDialog open={open} onClose={handleClose} title={appData?.label}> <AppDialog open={open} onClose={handleClose} title={appData?.label}>
{open && appData && ( {open && appData && (
<AppFrame <AppFrame src={appData.src} appToken={appData.appToken} />
src={appData.src}
appToken={appData.appToken}
backendHost={appData.backendUrl}
/>
)} )}
</AppDialog> </AppDialog>
</ExternalAppContext.Provider> </ExternalAppContext.Provider>

View file

@ -30,8 +30,7 @@ const filterAndMapToTarget = (
accessToken, accessToken,
url, url,
label, label,
open: () => open: () => openApp({ appToken: accessToken, src: url, label })
openApp({ appToken: accessToken, backendUrl: url, src: url, label })
})); }));
export const mapToMenuItems = (extensions: Extension[]) => export const mapToMenuItems = (extensions: Extension[]) =>

View file

@ -1,6 +1,5 @@
import useNavigator from "@saleor/hooks/useNavigator"; import useNavigator from "@saleor/hooks/useNavigator";
import useNotifier from "@saleor/hooks/useNotifier"; import useNotifier from "@saleor/hooks/useNotifier";
import useShop from "@saleor/hooks/useShop";
import React from "react"; import React from "react";
import { useIntl } from "react-intl"; import { useIntl } from "react-intl";
@ -15,7 +14,6 @@ interface AppDetailsSetttingsProps {
export const AppDetailsSettings: React.FC<AppDetailsSetttingsProps> = ({ export const AppDetailsSettings: React.FC<AppDetailsSetttingsProps> = ({
id id
}) => { }) => {
const shop = useShop();
const { data } = useAppDetails({ const { data } = useAppDetails({
displayLoader: true, displayLoader: true,
variables: { id } variables: { id }
@ -26,7 +24,6 @@ export const AppDetailsSettings: React.FC<AppDetailsSetttingsProps> = ({
return ( return (
<AppDetailsSettingsPage <AppDetailsSettingsPage
backendHost={shop?.domain.host}
data={data?.app} data={data?.app}
navigateToDashboard={() => navigate(appUrl(id))} navigateToDashboard={() => navigate(appUrl(id))}
onBack={() => navigate(appsListPath)} onBack={() => navigate(appsListPath)}

View file

@ -6,6 +6,7 @@ export const APP_MOUNT_URI = process.env.APP_MOUNT_URI;
export const APP_DEFAULT_URI = "/"; export const APP_DEFAULT_URI = "/";
export const API_URI = process.env.API_URI; export const API_URI = process.env.API_URI;
export const SW_INTERVAL = parseInt(process.env.SW_INTERVAL, 0); export const SW_INTERVAL = parseInt(process.env.SW_INTERVAL, 0);
export const IS_CLOUD_INSTANCE = process.env.IS_CLOUD_INSTANCE === "true";
export const DEFAULT_INITIAL_SEARCH_DATA: SearchVariables = { export const DEFAULT_INITIAL_SEARCH_DATA: SearchVariables = {
after: null, after: null,

View file

@ -1,6 +1,7 @@
import { Card, CardContent, TextField } from "@material-ui/core"; import { Card, CardContent, TextField } from "@material-ui/core";
import CardTitle from "@saleor/components/CardTitle"; import CardTitle from "@saleor/components/CardTitle";
import FormSpacer from "@saleor/components/FormSpacer"; import FormSpacer from "@saleor/components/FormSpacer";
import { IS_CLOUD_INSTANCE } from "@saleor/config";
import { ShopErrorFragment } from "@saleor/fragments/types/ShopErrorFragment"; import { ShopErrorFragment } from "@saleor/fragments/types/ShopErrorFragment";
import { commonMessages } from "@saleor/intl"; import { commonMessages } from "@saleor/intl";
import { getFormErrors } from "@saleor/utils/errors"; import { getFormErrors } from "@saleor/utils/errors";
@ -63,12 +64,13 @@ const SiteSettingsDetails: React.FC<SiteSettingsDetailsProps> = ({
fullWidth fullWidth
name="domain" name="domain"
label={intl.formatMessage({ label={intl.formatMessage({
defaultMessage: "URL of your online store" defaultMessage: "Store domain"
})} })}
helperText={getShopErrorMessage(formErrors.domain, intl)} helperText={getShopErrorMessage(formErrors.domain, intl)}
value={data.domain} value={data.domain}
onChange={onChange} onChange={onChange}
InputProps={{ InputProps={{
readOnly: IS_CLOUD_INSTANCE,
inputProps: { inputProps: {
autoComplete: "none" autoComplete: "none"
} }
@ -81,7 +83,7 @@ const SiteSettingsDetails: React.FC<SiteSettingsDetailsProps> = ({
fullWidth fullWidth
name="description" name="description"
label={intl.formatMessage({ label={intl.formatMessage({
defaultMessage: "Store Description" defaultMessage: "Store description"
})} })}
helperText={ helperText={
getShopErrorMessage(formErrors.description, intl) || getShopErrorMessage(formErrors.description, intl) ||

View file

@ -19,7 +19,6 @@ import { mapCountriesToChoices } from "@saleor/utils/maps";
import React from "react"; import React from "react";
import { FormattedMessage, useIntl } from "react-intl"; import { FormattedMessage, useIntl } from "react-intl";
import { maybe } from "../../../misc";
import { SiteSettings_shop } from "../../types/SiteSettings"; import { SiteSettings_shop } from "../../types/SiteSettings";
import SiteSettingsDetails from "../SiteSettingsDetails/SiteSettingsDetails"; import SiteSettingsDetails from "../SiteSettingsDetails/SiteSettingsDetails";
@ -90,7 +89,7 @@ const SiteSettingsPage: React.FC<SiteSettingsPageProps> = props => {
const classes = useStyles(props); const classes = useStyles(props);
const intl = useIntl(); const intl = useIntl();
const [displayCountry, setDisplayCountry] = useStateFromProps( const [displayCountry, setDisplayCountry] = useStateFromProps(
maybe(() => shop.companyAddress.country.code, "") shop?.companyAddress?.country.code || ""
); );
const { const {
@ -99,20 +98,20 @@ const SiteSettingsPage: React.FC<SiteSettingsPageProps> = props => {
} = useAddressValidation(onSubmit); } = useAddressValidation(onSubmit);
const initialFormAddress: SiteSettingsPageAddressFormData = { const initialFormAddress: SiteSettingsPageAddressFormData = {
city: maybe(() => shop.companyAddress.city, ""), city: shop?.companyAddress?.city || "",
companyName: maybe(() => shop.companyAddress.companyName, ""), companyName: shop?.companyAddress?.companyName || "",
country: maybe(() => shop.companyAddress.country.code, ""), country: shop?.companyAddress?.country.code || "",
countryArea: maybe(() => shop.companyAddress.countryArea, ""), countryArea: shop?.companyAddress?.countryArea || "",
phone: maybe(() => shop.companyAddress.phone, ""), phone: shop?.companyAddress?.phone || "",
postalCode: maybe(() => shop.companyAddress.postalCode, ""), postalCode: shop?.companyAddress?.postalCode || "",
streetAddress1: maybe(() => shop.companyAddress.streetAddress1, ""), streetAddress1: shop?.companyAddress?.streetAddress1 || "",
streetAddress2: maybe(() => shop.companyAddress.streetAddress2, "") streetAddress2: shop?.companyAddress?.streetAddress2 || ""
}; };
const initialForm: SiteSettingsPageFormData = { const initialForm: SiteSettingsPageFormData = {
...initialFormAddress, ...initialFormAddress,
description: maybe(() => shop.description, ""), description: shop?.description || "",
domain: maybe(() => shop.domain.host, ""), domain: shop?.domain.host || "",
name: maybe(() => shop.name, "") name: shop?.name || ""
}; };
return ( return (

View file

@ -1,3 +1,4 @@
import { IS_CLOUD_INSTANCE } from "@saleor/config";
import { fragmentAddress } from "@saleor/fragments/address"; import { fragmentAddress } from "@saleor/fragments/address";
import { shopErrorFragment } from "@saleor/fragments/errors"; import { shopErrorFragment } from "@saleor/fragments/errors";
import { shopFragment } from "@saleor/fragments/shop"; import { shopFragment } from "@saleor/fragments/shop";
@ -26,7 +27,7 @@ const shopSettingsUpdate = gql`
...ShopFragment ...ShopFragment
} }
} }
shopDomainUpdate(input: $shopDomainInput) { shopDomainUpdate(input: $shopDomainInput) @skip(if: ${IS_CLOUD_INSTANCE}) {
errors { errors {
...ShopErrorFragment ...ShopErrorFragment
} }

View file

@ -28,9 +28,11 @@ export const SiteSettings: React.FC<SiteSettingsProps> = () => {
const handleSiteSettingsSuccess = (data: ShopSettingsUpdate) => { const handleSiteSettingsSuccess = (data: ShopSettingsUpdate) => {
if ( if (
data.shopDomainUpdate.errors.length === 0 && [
data.shopSettingsUpdate.errors.length === 0 && ...data.shopAddressUpdate.errors,
data.shopAddressUpdate.errors.length === 0 ...data.shopSettingsUpdate.errors,
...(data.shopDomainUpdate?.errors || [])
].length === 0
) { ) {
notify({ notify({
status: "success", status: "success",
@ -45,7 +47,7 @@ export const SiteSettings: React.FC<SiteSettingsProps> = () => {
<TypedShopSettingsUpdate onCompleted={handleSiteSettingsSuccess}> <TypedShopSettingsUpdate onCompleted={handleSiteSettingsSuccess}>
{(updateShopSettings, updateShopSettingsOpts) => { {(updateShopSettings, updateShopSettingsOpts) => {
const errors = [ const errors = [
...(updateShopSettingsOpts.data?.shopDomainUpdate.errors || []), ...(updateShopSettingsOpts.data?.shopDomainUpdate?.errors || []),
...(updateShopSettingsOpts.data?.shopSettingsUpdate.errors || []), ...(updateShopSettingsOpts.data?.shopSettingsUpdate.errors || []),
...(updateShopSettingsOpts.data?.shopAddressUpdate.errors || []) ...(updateShopSettingsOpts.data?.shopAddressUpdate.errors || [])
]; ];
@ -84,7 +86,7 @@ export const SiteSettings: React.FC<SiteSettingsProps> = () => {
return [ return [
...result.data.shopAddressUpdate.errors, ...result.data.shopAddressUpdate.errors,
...result.data.shopDomainUpdate.errors, ...(result.data.shopDomainUpdate?.errors || []),
...result.data.shopSettingsUpdate.errors ...result.data.shopSettingsUpdate.errors
]; ];
}; };

View file

@ -23505,12 +23505,7 @@ exports[`Storyshots Views / Apps / App details settings default 1`] = `
/> />
<div <div
class="AppDetailsSettingsPage-iframeContainer-id" class="AppDetailsSettingsPage-iframeContainer-id"
>
<iframe
class="AppFrame-iframe-id"
src="htpp://localhost:8888/configuration?domain=host"
/> />
</div>
<div <div
class="CardSpacer-spacer-id" class="CardSpacer-spacer-id"
/> />
@ -246205,7 +246200,7 @@ exports[`Storyshots Views / Site settings / Page default 1`] = `
class="MuiFormLabel-root-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-shrink-id MuiInputLabel-outlined-id MuiFormLabel-filled-id" class="MuiFormLabel-root-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-shrink-id MuiInputLabel-outlined-id MuiFormLabel-filled-id"
data-shrink="true" data-shrink="true"
> >
URL of your online store Store domain
</label> </label>
<div <div
class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id" class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id"
@ -246226,7 +246221,7 @@ exports[`Storyshots Views / Site settings / Page default 1`] = `
class="PrivateNotchedOutline-legendLabelled-id PrivateNotchedOutline-legendNotched-id" class="PrivateNotchedOutline-legendLabelled-id PrivateNotchedOutline-legendNotched-id"
> >
<span> <span>
URL of your online store Store domain
</span> </span>
</legend> </legend>
</fieldset> </fieldset>
@ -246242,7 +246237,7 @@ exports[`Storyshots Views / Site settings / Page default 1`] = `
class="MuiFormLabel-root-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-shrink-id MuiInputLabel-outlined-id MuiFormLabel-filled-id" class="MuiFormLabel-root-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-shrink-id MuiInputLabel-outlined-id MuiFormLabel-filled-id"
data-shrink="true" data-shrink="true"
> >
Store Description Store description
</label> </label>
<div <div
class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id" class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id"
@ -246263,7 +246258,7 @@ exports[`Storyshots Views / Site settings / Page default 1`] = `
class="PrivateNotchedOutline-legendLabelled-id PrivateNotchedOutline-legendNotched-id" class="PrivateNotchedOutline-legendLabelled-id PrivateNotchedOutline-legendNotched-id"
> >
<span> <span>
Store Description Store description
</span> </span>
</legend> </legend>
</fieldset> </fieldset>
@ -246410,6 +246405,7 @@ exports[`Storyshots Views / Site settings / Page default 1`] = `
class="MuiInputBase-input-id MuiOutlinedInput-input-id" class="MuiInputBase-input-id MuiOutlinedInput-input-id"
name="streetAddress2" name="streetAddress2"
type="text" type="text"
value=""
/> />
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -246581,6 +246577,7 @@ exports[`Storyshots Views / Site settings / Page default 1`] = `
class="MuiInputBase-input-id MuiOutlinedInput-input-id" class="MuiInputBase-input-id MuiOutlinedInput-input-id"
name="countryArea" name="countryArea"
type="text" type="text"
value=""
/> />
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -246756,7 +246753,7 @@ exports[`Storyshots Views / Site settings / Page form errors 1`] = `
class="MuiFormLabel-root-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-shrink-id MuiInputLabel-outlined-id MuiFormLabel-error-id MuiInputLabel-error-id MuiFormLabel-filled-id" class="MuiFormLabel-root-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-shrink-id MuiInputLabel-outlined-id MuiFormLabel-error-id MuiInputLabel-error-id MuiFormLabel-filled-id"
data-shrink="true" data-shrink="true"
> >
URL of your online store Store domain
</label> </label>
<div <div
class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-error-id MuiOutlinedInput-error-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id" class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-error-id MuiOutlinedInput-error-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id"
@ -246777,7 +246774,7 @@ exports[`Storyshots Views / Site settings / Page form errors 1`] = `
class="PrivateNotchedOutline-legendLabelled-id PrivateNotchedOutline-legendNotched-id" class="PrivateNotchedOutline-legendLabelled-id PrivateNotchedOutline-legendNotched-id"
> >
<span> <span>
URL of your online store Store domain
</span> </span>
</legend> </legend>
</fieldset> </fieldset>
@ -246798,7 +246795,7 @@ exports[`Storyshots Views / Site settings / Page form errors 1`] = `
class="MuiFormLabel-root-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-shrink-id MuiInputLabel-outlined-id MuiFormLabel-error-id MuiInputLabel-error-id MuiFormLabel-filled-id" class="MuiFormLabel-root-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-shrink-id MuiInputLabel-outlined-id MuiFormLabel-error-id MuiInputLabel-error-id MuiFormLabel-filled-id"
data-shrink="true" data-shrink="true"
> >
Store Description Store description
</label> </label>
<div <div
class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-error-id MuiOutlinedInput-error-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id" class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-error-id MuiOutlinedInput-error-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id"
@ -246819,7 +246816,7 @@ exports[`Storyshots Views / Site settings / Page form errors 1`] = `
class="PrivateNotchedOutline-legendLabelled-id PrivateNotchedOutline-legendNotched-id" class="PrivateNotchedOutline-legendLabelled-id PrivateNotchedOutline-legendNotched-id"
> >
<span> <span>
Store Description Store description
</span> </span>
</legend> </legend>
</fieldset> </fieldset>
@ -246966,6 +246963,7 @@ exports[`Storyshots Views / Site settings / Page form errors 1`] = `
class="MuiInputBase-input-id MuiOutlinedInput-input-id" class="MuiInputBase-input-id MuiOutlinedInput-input-id"
name="streetAddress2" name="streetAddress2"
type="text" type="text"
value=""
/> />
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -247137,6 +247135,7 @@ exports[`Storyshots Views / Site settings / Page form errors 1`] = `
class="MuiInputBase-input-id MuiOutlinedInput-input-id" class="MuiInputBase-input-id MuiOutlinedInput-input-id"
name="countryArea" name="countryArea"
type="text" type="text"
value=""
/> />
<fieldset <fieldset
aria-hidden="true" aria-hidden="true"
@ -247313,7 +247312,7 @@ exports[`Storyshots Views / Site settings / Page loading 1`] = `
class="MuiFormLabel-root-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-outlined-id MuiFormLabel-disabled-id MuiInputLabel-disabled-id" class="MuiFormLabel-root-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-outlined-id MuiFormLabel-disabled-id MuiInputLabel-disabled-id"
data-shrink="false" data-shrink="false"
> >
URL of your online store Store domain
</label> </label>
<div <div
class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-disabled-id MuiOutlinedInput-disabled-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id" class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-disabled-id MuiOutlinedInput-disabled-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id"
@ -247335,7 +247334,7 @@ exports[`Storyshots Views / Site settings / Page loading 1`] = `
class="PrivateNotchedOutline-legendLabelled-id" class="PrivateNotchedOutline-legendLabelled-id"
> >
<span> <span>
URL of your online store Store domain
</span> </span>
</legend> </legend>
</fieldset> </fieldset>
@ -247351,7 +247350,7 @@ exports[`Storyshots Views / Site settings / Page loading 1`] = `
class="MuiFormLabel-root-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-outlined-id MuiFormLabel-disabled-id MuiInputLabel-disabled-id" class="MuiFormLabel-root-id MuiInputLabel-root-id MuiInputLabel-formControl-id MuiInputLabel-animated-id MuiInputLabel-outlined-id MuiFormLabel-disabled-id MuiInputLabel-disabled-id"
data-shrink="false" data-shrink="false"
> >
Store Description Store description
</label> </label>
<div <div
class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-disabled-id MuiOutlinedInput-disabled-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id" class="MuiInputBase-root-id MuiOutlinedInput-root-id MuiInputBase-disabled-id MuiOutlinedInput-disabled-id MuiInputBase-fullWidth-id MuiInputBase-formControl-id"
@ -247373,7 +247372,7 @@ exports[`Storyshots Views / Site settings / Page loading 1`] = `
class="PrivateNotchedOutline-legendLabelled-id" class="PrivateNotchedOutline-legendLabelled-id"
> >
<span> <span>
Store Description Store description
</span> </span>
</legend> </legend>
</fieldset> </fieldset>

View file

@ -43,7 +43,8 @@ const environmentPlugin = new webpack.EnvironmentPlugin({
ENVIRONMENT: "", ENVIRONMENT: "",
GTM_ID: "", GTM_ID: "",
SENTRY_DSN: "", SENTRY_DSN: "",
SW_INTERVAL: "300" // Fetch SW every 300 seconds SW_INTERVAL: "300", // Fetch SW every 300 seconds
IS_CLOUD_INSTANCE: false
}); });
const dashboardBuildPath = "build/dashboard/"; const dashboardBuildPath = "build/dashboard/";