Fetch shop data after user is authenticated (#1427)
This commit is contained in:
parent
ebe56da583
commit
6e102964a1
7 changed files with 39 additions and 26 deletions
|
@ -2,6 +2,7 @@ import appleTouchIcon from "@assets/favicons/apple-touch-icon.png";
|
||||||
import favicon16 from "@assets/favicons/favicon-16x16.png";
|
import favicon16 from "@assets/favicons/favicon-16x16.png";
|
||||||
import favicon32 from "@assets/favicons/favicon-32x32.png";
|
import favicon32 from "@assets/favicons/favicon-32x32.png";
|
||||||
import safariPinnedTab from "@assets/favicons/safari-pinned-tab.svg";
|
import safariPinnedTab from "@assets/favicons/safari-pinned-tab.svg";
|
||||||
|
import { useAuth } from "@saleor/auth/AuthProvider";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import Helmet from "react-helmet";
|
import Helmet from "react-helmet";
|
||||||
|
|
||||||
|
@ -12,22 +13,31 @@ type ShopContext = ShopInfo_shop;
|
||||||
|
|
||||||
export const ShopContext = React.createContext<ShopContext>(undefined);
|
export const ShopContext = React.createContext<ShopContext>(undefined);
|
||||||
|
|
||||||
export const ShopProvider: React.FC = ({ children }) => (
|
export const ShopProvider: React.FC = ({ children }) => {
|
||||||
<TypedShopInfoQuery>
|
const { isAuthenticated } = useAuth();
|
||||||
{({ data }) => (
|
|
||||||
<>
|
return (
|
||||||
<Helmet>
|
<TypedShopInfoQuery skip={!isAuthenticated}>
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href={appleTouchIcon} />
|
{({ data }) => (
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href={favicon32} />
|
<>
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href={favicon16} />
|
<Helmet>
|
||||||
<link rel="mask-icon" href={safariPinnedTab} />
|
<link
|
||||||
</Helmet>
|
rel="apple-touch-icon"
|
||||||
<ShopContext.Provider value={data ? data.shop : undefined}>
|
sizes="180x180"
|
||||||
{children}
|
href={appleTouchIcon}
|
||||||
</ShopContext.Provider>
|
/>
|
||||||
</>
|
<link rel="icon" type="image/png" sizes="32x32" href={favicon32} />
|
||||||
)}
|
<link rel="icon" type="image/png" sizes="16x16" href={favicon16} />
|
||||||
</TypedShopInfoQuery>
|
<link rel="mask-icon" href={safariPinnedTab} />
|
||||||
);
|
</Helmet>
|
||||||
|
<ShopContext.Provider value={data ? data.shop : undefined}>
|
||||||
|
{children}
|
||||||
|
</ShopContext.Provider>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</TypedShopInfoQuery>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export const Shop = ShopContext.Consumer;
|
export const Shop = ShopContext.Consumer;
|
||||||
export default Shop;
|
export default Shop;
|
||||||
|
|
|
@ -13,7 +13,6 @@ const shopInfo = gql`
|
||||||
country
|
country
|
||||||
code
|
code
|
||||||
}
|
}
|
||||||
channelCurrencies
|
|
||||||
defaultCountry {
|
defaultCountry {
|
||||||
code
|
code
|
||||||
country
|
country
|
||||||
|
@ -35,6 +34,7 @@ const shopInfo = gql`
|
||||||
code
|
code
|
||||||
name
|
name
|
||||||
}
|
}
|
||||||
|
version
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
|
@ -42,7 +42,6 @@ export interface ShopInfo_shop_permissions {
|
||||||
export interface ShopInfo_shop {
|
export interface ShopInfo_shop {
|
||||||
__typename: "Shop";
|
__typename: "Shop";
|
||||||
countries: ShopInfo_shop_countries[];
|
countries: ShopInfo_shop_countries[];
|
||||||
channelCurrencies: string[];
|
|
||||||
defaultCountry: ShopInfo_shop_defaultCountry | null;
|
defaultCountry: ShopInfo_shop_defaultCountry | null;
|
||||||
defaultWeightUnit: WeightUnitsEnum | null;
|
defaultWeightUnit: WeightUnitsEnum | null;
|
||||||
displayGrossPrices: boolean;
|
displayGrossPrices: boolean;
|
||||||
|
@ -52,6 +51,7 @@ export interface ShopInfo_shop {
|
||||||
name: string;
|
name: string;
|
||||||
trackInventoryByDefault: boolean | null;
|
trackInventoryByDefault: boolean | null;
|
||||||
permissions: (ShopInfo_shop_permissions | null)[];
|
permissions: (ShopInfo_shop_permissions | null)[];
|
||||||
|
version: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ShopInfo {
|
export interface ShopInfo {
|
||||||
|
|
|
@ -125,15 +125,15 @@ const App: React.FC = () => (
|
||||||
<ServiceWorker />
|
<ServiceWorker />
|
||||||
<BackgroundTasksProvider>
|
<BackgroundTasksProvider>
|
||||||
<AppStateProvider>
|
<AppStateProvider>
|
||||||
<ShopProvider>
|
<AuthProvider>
|
||||||
<AuthProvider>
|
<ShopProvider>
|
||||||
<AppChannelProvider>
|
<AppChannelProvider>
|
||||||
<ExternalAppProvider>
|
<ExternalAppProvider>
|
||||||
<Routes />
|
<Routes />
|
||||||
</ExternalAppProvider>
|
</ExternalAppProvider>
|
||||||
</AppChannelProvider>
|
</AppChannelProvider>
|
||||||
</AuthProvider>
|
</ShopProvider>
|
||||||
</ShopProvider>
|
</AuthProvider>
|
||||||
</AppStateProvider>
|
</AppStateProvider>
|
||||||
</BackgroundTasksProvider>
|
</BackgroundTasksProvider>
|
||||||
</MessageManagerProvider>
|
</MessageManagerProvider>
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
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";
|
||||||
|
@ -18,6 +17,7 @@ const shopSettingsUpdate = gql`
|
||||||
$shopDomainInput: SiteDomainInput!
|
$shopDomainInput: SiteDomainInput!
|
||||||
$shopSettingsInput: ShopSettingsInput!
|
$shopSettingsInput: ShopSettingsInput!
|
||||||
$addressInput: AddressInput
|
$addressInput: AddressInput
|
||||||
|
$isCloudInstance: Boolean!
|
||||||
) {
|
) {
|
||||||
shopSettingsUpdate(input: $shopSettingsInput) {
|
shopSettingsUpdate(input: $shopSettingsInput) {
|
||||||
errors {
|
errors {
|
||||||
|
@ -27,7 +27,7 @@ const shopSettingsUpdate = gql`
|
||||||
...ShopFragment
|
...ShopFragment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
shopDomainUpdate(input: $shopDomainInput) @skip(if: ${IS_CLOUD_INSTANCE}) {
|
shopDomainUpdate(input: $shopDomainInput) @skip(if: $isCloudInstance) {
|
||||||
errors {
|
errors {
|
||||||
...ShopErrorFragment
|
...ShopErrorFragment
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,4 +138,5 @@ export interface ShopSettingsUpdateVariables {
|
||||||
shopDomainInput: SiteDomainInput;
|
shopDomainInput: SiteDomainInput;
|
||||||
shopSettingsInput: ShopSettingsInput;
|
shopSettingsInput: ShopSettingsInput;
|
||||||
addressInput?: AddressInput | null;
|
addressInput?: AddressInput | null;
|
||||||
|
isCloudInstance: boolean;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { WindowTitle } from "@saleor/components/WindowTitle";
|
import { WindowTitle } from "@saleor/components/WindowTitle";
|
||||||
|
import { IS_CLOUD_INSTANCE } from "@saleor/config";
|
||||||
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 { commonMessages, sectionNames } from "@saleor/intl";
|
import { commonMessages, sectionNames } from "@saleor/intl";
|
||||||
|
@ -80,7 +81,8 @@ export const SiteSettings: React.FC<SiteSettingsProps> = () => {
|
||||||
},
|
},
|
||||||
shopSettingsInput: {
|
shopSettingsInput: {
|
||||||
description: data.description
|
description: data.description
|
||||||
}
|
},
|
||||||
|
isCloudInstance: IS_CLOUD_INSTANCE
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue