diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c343feab..6b89669cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable, unreleased changes to this project will be documented in this file. - Fix minor bugs - #244 by @dominik-zeglen - Fix tax settings updating - #243 by @dominik-zeglen +- Fix subcategories pagination - #249 by @dominik-zeglen ## 2.0.0 diff --git a/src/categories/fixtures.ts b/src/categories/fixtures.ts index d50979b9f..89ab0441f 100644 --- a/src/categories/fixtures.ts +++ b/src/categories/fixtures.ts @@ -93,7 +93,14 @@ export const category: ( }, children: { __typename: "CategoryCountableConnection", - edges: [] + edges: [], + pageInfo: { + __typename: "PageInfo", + endCursor: "YXJyYXljb25uZWN0aW9uOjk=", + hasNextPage: false, + hasPreviousPage: false, + startCursor: "YXJyYXljb25uZWN0aW9uOjA=" + } }, descriptionJson: JSON.stringify(content), id: "Q2F0ZWdvcnk6NA==", diff --git a/src/categories/queries.ts b/src/categories/queries.ts index b566af177..4bad812fe 100644 --- a/src/categories/queries.ts +++ b/src/categories/queries.ts @@ -1,6 +1,6 @@ import gql from "graphql-tag"; -import { TypedQuery } from "../queries"; +import { pageInfoFragment, TypedQuery } from "../queries"; import { CategoryDetails, CategoryDetailsVariables @@ -38,6 +38,7 @@ export const categoryDetailsFragment = gql` export const rootCategories = gql` ${categoryFragment} + ${pageInfoFragment} query RootCategories( $first: Int $after: String @@ -59,10 +60,7 @@ export const rootCategories = gql` } } pageInfo { - endCursor - hasNextPage - hasPreviousPage - startCursor + ...PageInfoFragment } } } @@ -74,6 +72,7 @@ export const TypedRootCategoriesQuery = TypedQuery( export const categoryDetails = gql` ${categoryFragment} ${categoryDetailsFragment} + ${pageInfoFragment} query CategoryDetails( $id: ID! $first: Int @@ -83,19 +82,19 @@ export const categoryDetails = gql` ) { category(id: $id) { ...CategoryDetailsFragment - children(first: 20) { + children(first: $first, after: $after, last: $last, before: $before) { edges { node { ...CategoryFragment } } + pageInfo { + ...PageInfoFragment + } } products(first: $first, after: $after, last: $last, before: $before) { pageInfo { - endCursor - hasNextPage - hasPreviousPage - startCursor + ...PageInfoFragment } edges { cursor diff --git a/src/categories/types/CategoryDetails.ts b/src/categories/types/CategoryDetails.ts index 5168b4606..bcdf4f7ce 100644 --- a/src/categories/types/CategoryDetails.ts +++ b/src/categories/types/CategoryDetails.ts @@ -40,9 +40,18 @@ export interface CategoryDetails_category_children_edges { node: CategoryDetails_category_children_edges_node; } +export interface CategoryDetails_category_children_pageInfo { + __typename: "PageInfo"; + endCursor: string | null; + hasNextPage: boolean; + hasPreviousPage: boolean; + startCursor: string | null; +} + export interface CategoryDetails_category_children { __typename: "CategoryCountableConnection"; edges: CategoryDetails_category_children_edges[]; + pageInfo: CategoryDetails_category_children_pageInfo; } export interface CategoryDetails_category_products_pageInfo { diff --git a/src/categories/views/CategoryDetails.tsx b/src/categories/views/CategoryDetails.tsx index f5216d3f3..8a4cf6002 100644 --- a/src/categories/views/CategoryDetails.tsx +++ b/src/categories/views/CategoryDetails.tsx @@ -162,7 +162,9 @@ export const CategoryDetails: React.FC = ({ }; const { loadNextPage, loadPreviousPage, pageInfo } = paginate( - maybe(() => data.category.products.pageInfo), + params.activeTab === CategoryPageTab.categories + ? maybe(() => data.category.children.pageInfo) + : maybe(() => data.category.products.pageInfo), paginationState, params ); diff --git a/src/siteSettings/types/ShopSettingsUpdate.ts b/src/siteSettings/types/ShopSettingsUpdate.ts index f583dc589..0a9b046a4 100644 --- a/src/siteSettings/types/ShopSettingsUpdate.ts +++ b/src/siteSettings/types/ShopSettingsUpdate.ts @@ -2,7 +2,12 @@ /* eslint-disable */ // This file was automatically generated and should not be edited. -import { SiteDomainInput, ShopSettingsInput, AddressInput, AuthorizationKeyType } from "./../../types/globalTypes"; +import { + SiteDomainInput, + ShopSettingsInput, + AddressInput, + AuthorizationKeyType +} from "./../../types/globalTypes"; // ==================================================== // GraphQL mutation operation: ShopSettingsUpdate @@ -143,5 +148,5 @@ export interface ShopSettingsUpdate { export interface ShopSettingsUpdateVariables { shopDomainInput: SiteDomainInput; shopSettingsInput: ShopSettingsInput; - addressInput: AddressInput; + addressInput?: AddressInput | null; }