feat: Categories retrieve + list API (#7009)

This commit is contained in:
Oli Juhl
2024-04-08 19:26:34 +02:00
committed by GitHub
parent db2f0ef53f
commit 6cc9a5e469
41 changed files with 1176 additions and 35 deletions
@@ -1,21 +1,30 @@
import {
AdminProductCategoryListResponse,
AdminProductCategoryResponse,
} from "@medusajs/types"
import { QueryKey, UseQueryOptions, useQuery } from "@tanstack/react-query"
import { client } from "../../lib/client"
import { queryKeysFactory } from "../../lib/query-key-factory"
import { CategoriesListRes, CategoryRes } from "../../types/api-responses"
const CATEGORIES_QUERY_KEY = "categories" as const
export const categoriesQueryKeys = queryKeysFactory(CATEGORIES_QUERY_KEY)
export const useCategory = (
id: string,
query?: Record<string, any>,
options?: Omit<
UseQueryOptions<CategoryRes, Error, CategoryRes, QueryKey>,
UseQueryOptions<
AdminProductCategoryResponse,
Error,
AdminProductCategoryResponse,
QueryKey
>,
"queryFn" | "queryKey"
>
) => {
const { data, ...rest } = useQuery({
queryKey: categoriesQueryKeys.detail(id),
queryFn: async () => client.categories.retrieve(id),
queryKey: categoriesQueryKeys.detail(id, query),
queryFn: async () => client.categories.retrieve(id, query),
...options,
})
@@ -25,7 +34,12 @@ export const useCategory = (
export const useCategories = (
query?: Record<string, any>,
options?: Omit<
UseQueryOptions<CategoriesListRes, Error, CategoriesListRes, QueryKey>,
UseQueryOptions<
AdminProductCategoryListResponse,
Error,
AdminProductCategoryListResponse,
QueryKey
>,
"queryFn" | "queryKey"
>
) => {
@@ -3,7 +3,11 @@ import { Filter } from "../../../components/table/data-table"
import { useProductTypes } from "../../api/product-types"
import { useSalesChannels } from "../../api/sales-channels"
const excludeableFields = ["sales_channel_id", "collections"] as const
const excludeableFields = [
"sales_channel_id",
"collections",
"categories",
] as const
export const useProductTableFilters = (
exclude?: (typeof excludeableFields)[number][]
@@ -33,11 +37,15 @@ export const useProductTableFilters = (
}
)
const isCategoryExcluded = exclude?.includes("categories")
// const { product_categories } = useAdminProductCategories({
// limit: 1000,
// offset: 0,
// fields: "id,name",
// expand: "",
// }, {
// enabled: !isCategoryExcluded,
// })
const isCollectionExcluded = exclude?.includes("collections")
@@ -5,6 +5,7 @@ import {
Row,
RowSelectionState,
getCoreRowModel,
getExpandedRowModel,
getPaginationRowModel,
useReactTable,
} from "@tanstack/react-table"
@@ -22,7 +23,9 @@ type UseDataTableProps<TData> = {
updater: OnChangeFn<RowSelectionState>
}
enablePagination?: boolean
enableExpandableRows?: boolean
getRowId?: (original: TData, index: number) => string
getSubRows?: (original: TData) => TData[]
meta?: Record<string, unknown>
prefix?: string
}
@@ -34,7 +37,9 @@ export const useDataTable = <TData,>({
pageSize: _pageSize = 20,
enablePagination = true,
enableRowSelection = false,
enableExpandableRows = false,
rowSelection: _rowSelection,
getSubRows,
getRowId,
meta,
prefix,
@@ -107,6 +112,7 @@ export const useDataTable = <TData,>({
pageCount: Math.ceil((count ?? 0) / pageSize),
enableRowSelection,
getRowId,
getSubRows,
onRowSelectionChange: enableRowSelection ? setRowSelection : undefined,
onPaginationChange: enablePagination
? (onPaginationChange as OnChangeFn<PaginationState>)
@@ -115,6 +121,9 @@ export const useDataTable = <TData,>({
getPaginationRowModel: enablePagination
? getPaginationRowModel()
: undefined,
getExpandedRowModel: enableExpandableRows
? getExpandedRowModel()
: undefined,
manualPagination: enablePagination ? true : undefined,
meta,
})