diff --git a/src/siteSettings/mutations.ts b/src/siteSettings/mutations.ts index 048217b7a..09f7ef0f0 100644 --- a/src/siteSettings/mutations.ts +++ b/src/siteSettings/mutations.ts @@ -63,7 +63,7 @@ const shopSettingsUpdate = gql` mutation ShopSettingsUpdate( $shopDomainInput: SiteDomainInput! $shopSettingsInput: ShopSettingsInput! - $addressInput: AddressInput! + $addressInput: AddressInput ) { shopSettingsUpdate(input: $shopSettingsInput) { errors { diff --git a/src/siteSettings/views/index.tsx b/src/siteSettings/views/index.tsx index ac57bf824..4ed3cfb05 100644 --- a/src/siteSettings/views/index.tsx +++ b/src/siteSettings/views/index.tsx @@ -13,6 +13,7 @@ import SiteSettingsKeyDialog, { SiteSettingsKeyDialogForm } from "../components/SiteSettingsKeyDialog"; import SiteSettingsPage, { + SiteSettingsPageAddressFormData, SiteSettingsPageFormData } from "../components/SiteSettingsPage"; import { @@ -124,10 +125,21 @@ export const SiteSettings: React.StatelessComponent = ({ }); const handleUpdateShopSettings = ( data: SiteSettingsPageFormData - ) => - updateShopSettings({ - variables: { - addressInput: { + ) => { + const areAddressInputFieldsModified = ([ + "city", + "companyName", + "country", + "countryArea", + "phone", + "postalCode", + "streetAddress1", + "streetAddress2" + ] as Array) + .map(key => data[key]) + .some(field => field !== ""); + const addressInput = areAddressInputFieldsModified + ? { city: data.city, companyName: data.companyName, country: data.country, @@ -136,7 +148,11 @@ export const SiteSettings: React.StatelessComponent = ({ postalCode: data.postalCode, streetAddress1: data.streetAddress1, streetAddress2: data.streetAddress2 - }, + } + : null; + updateShopSettings({ + variables: { + addressInput, shopDomainInput: { domain: data.domain, name: data.name @@ -150,6 +166,7 @@ export const SiteSettings: React.StatelessComponent = ({ } } }); + }; const formTransitionState = getMutationState( updateShopSettingsOpts.called,