diff --git a/schema.graphql b/schema.graphql index 928c5a8c6..59ae4e10f 100644 --- a/schema.graphql +++ b/schema.graphql @@ -5146,6 +5146,7 @@ type ShippingZoneDelete { input ShippingZoneFilterInput { search: String + channel: ID } type ShippingZoneUpdate { diff --git a/src/channels/pages/ChannelDetailsPage/ChannelDetailsPage.tsx b/src/channels/pages/ChannelDetailsPage/ChannelDetailsPage.tsx index d1f1dcc24..e1957891f 100644 --- a/src/channels/pages/ChannelDetailsPage/ChannelDetailsPage.tsx +++ b/src/channels/pages/ChannelDetailsPage/ChannelDetailsPage.tsx @@ -20,10 +20,8 @@ import React, { useState } from "react"; import { ChannelForm, FormData } from "../../components/ChannelForm"; import { ChannelStatus } from "../../components/ChannelStatus/ChannelStatus"; -import { - Channel_channel, - Channel_channel_shippingZones -} from "../../types/Channel"; +import { Channel_channel } from "../../types/Channel"; +import { ChannelShippingZones } from "./types"; import { getUpdatedIdsWithNewId, getUpdatedIdsWithoutNewId } from "./utils"; export interface ChannelDetailsPageProps { @@ -40,6 +38,7 @@ export interface ChannelDetailsPageProps { searchShippingZones: (query: string) => void; searchShippingZonesData?: SearchData; fetchMoreShippingZones: FetchMoreProps; + channelShippingZones: ChannelShippingZones; } export const ChannelDetailsPage: React.FC = ({ @@ -55,13 +54,14 @@ export const ChannelDetailsPage: React.FC = ({ updateChannelStatus, searchShippingZones, searchShippingZonesData, - fetchMoreShippingZones + fetchMoreShippingZones, + channelShippingZones }) => { const [selectedCurrencyCode, setSelectedCurrencyCode] = useState(""); const [shippingZonesToDisplay, setShippingZonesToDisplay] = useStateFromProps< - Channel_channel_shippingZones[] - >(channel?.shippingZones || []); + ChannelShippingZones + >(channelShippingZones || []); const initialData: FormData = { currencyCode: "", diff --git a/src/channels/pages/ChannelDetailsPage/types.ts b/src/channels/pages/ChannelDetailsPage/types.ts new file mode 100644 index 000000000..857d4d74a --- /dev/null +++ b/src/channels/pages/ChannelDetailsPage/types.ts @@ -0,0 +1,3 @@ +import { ShippingZoneChannels_shippingZones_edges_node } from "@saleor/shipping/types/ShippingZoneChannels"; + +export type ChannelShippingZones = ShippingZoneChannels_shippingZones_edges_node[]; diff --git a/src/channels/types/Channel.ts b/src/channels/types/Channel.ts index 687cd95dd..eaebfe162 100644 --- a/src/channels/types/Channel.ts +++ b/src/channels/types/Channel.ts @@ -7,34 +7,6 @@ // GraphQL query operation: Channel // ==================================================== -export interface Channel_channel_shippingZones_metadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface Channel_channel_shippingZones_privateMetadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface Channel_channel_shippingZones_countries { - __typename: "CountryDisplay"; - code: string; - country: string; -} - -export interface Channel_channel_shippingZones { - __typename: "ShippingZone"; - metadata: (Channel_channel_shippingZones_metadata | null)[]; - privateMetadata: (Channel_channel_shippingZones_privateMetadata | null)[]; - id: string; - countries: (Channel_channel_shippingZones_countries | null)[] | null; - name: string; - description: string | null; -} - export interface Channel_channel { __typename: "Channel"; id: string; @@ -43,7 +15,6 @@ export interface Channel_channel { slug: string; currencyCode: string; hasOrders: boolean; - shippingZones: Channel_channel_shippingZones[]; } export interface Channel { diff --git a/src/channels/types/ChannelActivate.ts b/src/channels/types/ChannelActivate.ts index 6ca7f2ede..ec2c451fb 100644 --- a/src/channels/types/ChannelActivate.ts +++ b/src/channels/types/ChannelActivate.ts @@ -9,34 +9,6 @@ import { ChannelErrorCode } from "./../../types/globalTypes"; // GraphQL mutation operation: ChannelActivate // ==================================================== -export interface ChannelActivate_channelActivate_channel_shippingZones_metadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface ChannelActivate_channelActivate_channel_shippingZones_privateMetadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface ChannelActivate_channelActivate_channel_shippingZones_countries { - __typename: "CountryDisplay"; - code: string; - country: string; -} - -export interface ChannelActivate_channelActivate_channel_shippingZones { - __typename: "ShippingZone"; - metadata: (ChannelActivate_channelActivate_channel_shippingZones_metadata | null)[]; - privateMetadata: (ChannelActivate_channelActivate_channel_shippingZones_privateMetadata | null)[]; - id: string; - countries: (ChannelActivate_channelActivate_channel_shippingZones_countries | null)[] | null; - name: string; - description: string | null; -} - export interface ChannelActivate_channelActivate_channel { __typename: "Channel"; id: string; @@ -45,7 +17,6 @@ export interface ChannelActivate_channelActivate_channel { slug: string; currencyCode: string; hasOrders: boolean; - shippingZones: ChannelActivate_channelActivate_channel_shippingZones[]; } export interface ChannelActivate_channelActivate_errors { diff --git a/src/channels/types/ChannelCreate.ts b/src/channels/types/ChannelCreate.ts index 586027f78..bb6b70d1a 100644 --- a/src/channels/types/ChannelCreate.ts +++ b/src/channels/types/ChannelCreate.ts @@ -9,34 +9,6 @@ import { ChannelCreateInput, ChannelErrorCode } from "./../../types/globalTypes" // GraphQL mutation operation: ChannelCreate // ==================================================== -export interface ChannelCreate_channelCreate_channel_shippingZones_metadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface ChannelCreate_channelCreate_channel_shippingZones_privateMetadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface ChannelCreate_channelCreate_channel_shippingZones_countries { - __typename: "CountryDisplay"; - code: string; - country: string; -} - -export interface ChannelCreate_channelCreate_channel_shippingZones { - __typename: "ShippingZone"; - metadata: (ChannelCreate_channelCreate_channel_shippingZones_metadata | null)[]; - privateMetadata: (ChannelCreate_channelCreate_channel_shippingZones_privateMetadata | null)[]; - id: string; - countries: (ChannelCreate_channelCreate_channel_shippingZones_countries | null)[] | null; - name: string; - description: string | null; -} - export interface ChannelCreate_channelCreate_channel { __typename: "Channel"; id: string; @@ -45,7 +17,6 @@ export interface ChannelCreate_channelCreate_channel { slug: string; currencyCode: string; hasOrders: boolean; - shippingZones: ChannelCreate_channelCreate_channel_shippingZones[]; } export interface ChannelCreate_channelCreate_errors { diff --git a/src/channels/types/ChannelDeactivate.ts b/src/channels/types/ChannelDeactivate.ts index e88185d06..e99f790d7 100644 --- a/src/channels/types/ChannelDeactivate.ts +++ b/src/channels/types/ChannelDeactivate.ts @@ -9,34 +9,6 @@ import { ChannelErrorCode } from "./../../types/globalTypes"; // GraphQL mutation operation: ChannelDeactivate // ==================================================== -export interface ChannelDeactivate_channelDeactivate_channel_shippingZones_metadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface ChannelDeactivate_channelDeactivate_channel_shippingZones_privateMetadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface ChannelDeactivate_channelDeactivate_channel_shippingZones_countries { - __typename: "CountryDisplay"; - code: string; - country: string; -} - -export interface ChannelDeactivate_channelDeactivate_channel_shippingZones { - __typename: "ShippingZone"; - metadata: (ChannelDeactivate_channelDeactivate_channel_shippingZones_metadata | null)[]; - privateMetadata: (ChannelDeactivate_channelDeactivate_channel_shippingZones_privateMetadata | null)[]; - id: string; - countries: (ChannelDeactivate_channelDeactivate_channel_shippingZones_countries | null)[] | null; - name: string; - description: string | null; -} - export interface ChannelDeactivate_channelDeactivate_channel { __typename: "Channel"; id: string; @@ -45,7 +17,6 @@ export interface ChannelDeactivate_channelDeactivate_channel { slug: string; currencyCode: string; hasOrders: boolean; - shippingZones: ChannelDeactivate_channelDeactivate_channel_shippingZones[]; } export interface ChannelDeactivate_channelDeactivate_errors { diff --git a/src/channels/types/ChannelUpdate.ts b/src/channels/types/ChannelUpdate.ts index febe5af80..2380a32e9 100644 --- a/src/channels/types/ChannelUpdate.ts +++ b/src/channels/types/ChannelUpdate.ts @@ -9,34 +9,6 @@ import { ChannelUpdateInput, ChannelErrorCode } from "./../../types/globalTypes" // GraphQL mutation operation: ChannelUpdate // ==================================================== -export interface ChannelUpdate_channelUpdate_channel_shippingZones_metadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface ChannelUpdate_channelUpdate_channel_shippingZones_privateMetadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface ChannelUpdate_channelUpdate_channel_shippingZones_countries { - __typename: "CountryDisplay"; - code: string; - country: string; -} - -export interface ChannelUpdate_channelUpdate_channel_shippingZones { - __typename: "ShippingZone"; - metadata: (ChannelUpdate_channelUpdate_channel_shippingZones_metadata | null)[]; - privateMetadata: (ChannelUpdate_channelUpdate_channel_shippingZones_privateMetadata | null)[]; - id: string; - countries: (ChannelUpdate_channelUpdate_channel_shippingZones_countries | null)[] | null; - name: string; - description: string | null; -} - export interface ChannelUpdate_channelUpdate_channel { __typename: "Channel"; id: string; @@ -45,7 +17,6 @@ export interface ChannelUpdate_channelUpdate_channel { slug: string; currencyCode: string; hasOrders: boolean; - shippingZones: ChannelUpdate_channelUpdate_channel_shippingZones[]; } export interface ChannelUpdate_channelUpdate_errors { diff --git a/src/channels/types/Channels.ts b/src/channels/types/Channels.ts index c4283a016..4a6c2418c 100644 --- a/src/channels/types/Channels.ts +++ b/src/channels/types/Channels.ts @@ -7,34 +7,6 @@ // GraphQL query operation: Channels // ==================================================== -export interface Channels_channels_shippingZones_metadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface Channels_channels_shippingZones_privateMetadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface Channels_channels_shippingZones_countries { - __typename: "CountryDisplay"; - code: string; - country: string; -} - -export interface Channels_channels_shippingZones { - __typename: "ShippingZone"; - metadata: (Channels_channels_shippingZones_metadata | null)[]; - privateMetadata: (Channels_channels_shippingZones_privateMetadata | null)[]; - id: string; - countries: (Channels_channels_shippingZones_countries | null)[] | null; - name: string; - description: string | null; -} - export interface Channels_channels { __typename: "Channel"; id: string; @@ -43,7 +15,6 @@ export interface Channels_channels { slug: string; currencyCode: string; hasOrders: boolean; - shippingZones: Channels_channels_shippingZones[]; } export interface Channels { diff --git a/src/channels/views/ChannelDetails/ChannelDetails.tsx b/src/channels/views/ChannelDetails/ChannelDetails.tsx index c0104dd24..d0bb80cae 100644 --- a/src/channels/views/ChannelDetails/ChannelDetails.tsx +++ b/src/channels/views/ChannelDetails/ChannelDetails.tsx @@ -14,6 +14,7 @@ import useNotifier from "@saleor/hooks/useNotifier"; import { getDefaultNotifierSuccessErrorData } from "@saleor/hooks/useNotifier/utils"; import { sectionNames } from "@saleor/intl"; import useShippingZonesSearch from "@saleor/searches/useShippingZonesSearch"; +import { useChannelShippingZones } from "@saleor/shipping/queries"; import getChannelsErrorMessage from "@saleor/utils/errors/channels"; import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers"; import React from "react"; @@ -151,6 +152,17 @@ export const ChannelDetails: React.FC = ({ deleteChannel({ variables: data }); }; + const { + data: channelShippingZonesData, + loading: channelsShippingZonesLoading + } = useChannelShippingZones({ + variables: { + filter: { + channel: id + } + } + }); + const { loadMore: fetchMoreShippingZones, search: searchShippingZones, @@ -173,6 +185,7 @@ export const ChannelDetails: React.FC = ({ = ({ fetchMoreShippingZones )} channel={data?.channel} - disabled={updateChannelOpts.loading || loading} + disabled={ + updateChannelOpts.loading || loading || channelsShippingZonesLoading + } disabledStatus={ activateChannelOpts.loading || deactivateChannelOpts.loading } diff --git a/src/fragments/channels.ts b/src/fragments/channels.ts index a2512ff9d..e3044bfcf 100644 --- a/src/fragments/channels.ts +++ b/src/fragments/channels.ts @@ -1,7 +1,5 @@ import gql from "graphql-tag"; -import { shippingZoneFragment } from "./shipping"; - export const channelErrorFragment = gql` fragment ChannelErrorFragment on ChannelError { code @@ -22,12 +20,8 @@ export const channelFragment = gql` export const channelDetailsFragment = gql` ${channelFragment} - ${shippingZoneFragment} fragment ChannelDetailsFragment on Channel { ...ChannelFragment hasOrders - shippingZones { - ...ShippingZoneFragment - } } `; diff --git a/src/fragments/types/ChannelDetailsFragment.ts b/src/fragments/types/ChannelDetailsFragment.ts index 305cac159..c29a147e2 100644 --- a/src/fragments/types/ChannelDetailsFragment.ts +++ b/src/fragments/types/ChannelDetailsFragment.ts @@ -7,34 +7,6 @@ // GraphQL fragment: ChannelDetailsFragment // ==================================================== -export interface ChannelDetailsFragment_shippingZones_metadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface ChannelDetailsFragment_shippingZones_privateMetadata { - __typename: "MetadataItem"; - key: string; - value: string; -} - -export interface ChannelDetailsFragment_shippingZones_countries { - __typename: "CountryDisplay"; - code: string; - country: string; -} - -export interface ChannelDetailsFragment_shippingZones { - __typename: "ShippingZone"; - metadata: (ChannelDetailsFragment_shippingZones_metadata | null)[]; - privateMetadata: (ChannelDetailsFragment_shippingZones_privateMetadata | null)[]; - id: string; - countries: (ChannelDetailsFragment_shippingZones_countries | null)[] | null; - name: string; - description: string | null; -} - export interface ChannelDetailsFragment { __typename: "Channel"; id: string; @@ -43,5 +15,4 @@ export interface ChannelDetailsFragment { slug: string; currencyCode: string; hasOrders: boolean; - shippingZones: ChannelDetailsFragment_shippingZones[]; } diff --git a/src/shipping/queries.ts b/src/shipping/queries.ts index aa11c5b06..402d00106 100644 --- a/src/shipping/queries.ts +++ b/src/shipping/queries.ts @@ -6,11 +6,11 @@ import { import makeQuery from "@saleor/hooks/makeQuery"; import gql from "graphql-tag"; -import { ShippingZone, ShippingZoneVariables } from "./types/ShippingZone"; import { - ShippingZoneChannels, - ShippingZoneChannelsVariables -} from "./types/ShippingZoneChannels"; + ChannelShippingZones, + ChannelShippingZonesVariables +} from "./types/ChannelShippingZones"; +import { ShippingZone, ShippingZoneVariables } from "./types/ShippingZone"; import { ShippingZones, ShippingZonesVariables } from "./types/ShippingZones"; const shippingZones = gql` @@ -71,20 +71,20 @@ export const useShippingZone = makeQuery( shippingZone ); -const shippingZoneChannels = gql` - query ShippingZoneChannels($id: ID!) { - shippingZone(id: $id) { - id - channels { - id - name - currencyCode +const channelShippingZones = gql` + query ChannelShippingZones($filter: ShippingZoneFilterInput) { + shippingZones(filter: $filter) { + edges { + node { + id + name + } } } } `; -export const useShippingZoneChannels = makeQuery< - ShippingZoneChannels, - ShippingZoneChannelsVariables ->(shippingZoneChannels); +export const useChannelShippingZones = makeQuery< + ChannelShippingZones, + ChannelShippingZonesVariables +>(channelShippingZones); diff --git a/src/shipping/types/ChannelShippingZones.ts b/src/shipping/types/ChannelShippingZones.ts new file mode 100644 index 000000000..a73329241 --- /dev/null +++ b/src/shipping/types/ChannelShippingZones.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ +/* eslint-disable */ +// @generated +// This file was automatically generated and should not be edited. + +import { ShippingZoneFilterInput } from "./../../types/globalTypes"; + +// ==================================================== +// GraphQL query operation: ChannelShippingZones +// ==================================================== + +export interface ChannelShippingZones_shippingZones_edges_node { + __typename: "ShippingZone"; + id: string; + name: string; +} + +export interface ChannelShippingZones_shippingZones_edges { + __typename: "ShippingZoneCountableEdge"; + node: ChannelShippingZones_shippingZones_edges_node; +} + +export interface ChannelShippingZones_shippingZones { + __typename: "ShippingZoneCountableConnection"; + edges: ChannelShippingZones_shippingZones_edges[]; +} + +export interface ChannelShippingZones { + shippingZones: ChannelShippingZones_shippingZones | null; +} + +export interface ChannelShippingZonesVariables { + filter?: ShippingZoneFilterInput | null; +} diff --git a/src/shipping/types/ShippingZoneChannels.ts b/src/shipping/types/ShippingZoneChannels.ts index 5a5dbed33..1840bedb1 100644 --- a/src/shipping/types/ShippingZoneChannels.ts +++ b/src/shipping/types/ShippingZoneChannels.ts @@ -3,27 +3,32 @@ // @generated // This file was automatically generated and should not be edited. +import { ShippingZoneFilterInput } from "./../../types/globalTypes"; + // ==================================================== // GraphQL query operation: ShippingZoneChannels // ==================================================== -export interface ShippingZoneChannels_shippingZone_channels { - __typename: "Channel"; - id: string; - name: string; - currencyCode: string; -} - -export interface ShippingZoneChannels_shippingZone { +export interface ShippingZoneChannels_shippingZones_edges_node { __typename: "ShippingZone"; id: string; - channels: ShippingZoneChannels_shippingZone_channels[]; + name: string; +} + +export interface ShippingZoneChannels_shippingZones_edges { + __typename: "ShippingZoneCountableEdge"; + node: ShippingZoneChannels_shippingZones_edges_node; +} + +export interface ShippingZoneChannels_shippingZones { + __typename: "ShippingZoneCountableConnection"; + edges: ShippingZoneChannels_shippingZones_edges[]; } export interface ShippingZoneChannels { - shippingZone: ShippingZoneChannels_shippingZone | null; + shippingZones: ShippingZoneChannels_shippingZones | null; } export interface ShippingZoneChannelsVariables { - id: string; + filter?: ShippingZoneFilterInput | null; } diff --git a/src/types/globalTypes.ts b/src/types/globalTypes.ts index 325ec55a2..36508f2cb 100644 --- a/src/types/globalTypes.ts +++ b/src/types/globalTypes.ts @@ -1849,6 +1849,11 @@ export interface ShippingZoneCreateInput { addChannels?: string[] | null; } +export interface ShippingZoneFilterInput { + search?: string | null; + channel?: string | null; +} + export interface ShippingZoneUpdateInput { name?: string | null; description?: string | null;