fix: CustomerGroups missing features in the clients (#1159)

* feat: support for query params in customer groups retrieve method

* feat: add `useAdminDeleteCustomerGroup`hook

* fix: formatting

* fix: pass `query` object in `useAdminCustomerGroup` hook

Co-authored-by: fPolic <frane@medusajs.com>
This commit is contained in:
Frane Polić
2022-03-10 13:10:18 +01:00
committed by GitHub
parent dacc9c6c4b
commit 218b20b26d
3 changed files with 50 additions and 7 deletions

View File

@@ -7,6 +7,7 @@ import {
AdminCustomerGroupsDeleteRes,
AdminPostCustomerGroupsGroupCustomersBatchReq,
AdminDeleteCustomerGroupsGroupCustomerBatchReq,
AdminGetCustomerGroupsGroupParams,
} from "@medusajs/medusa"
import qs from "qs"
@@ -32,13 +33,21 @@ class AdminCustomerGroupsResource extends BaseResource {
* Retrieves a customer group.
*
* @param id - customer group id
* @param query - pass query options such as "expand", "fields" etc.
* @param customHeaders
*/
retrieve(
id: string,
query?: AdminGetCustomerGroupsGroupParams,
customHeaders: Record<string, any> = {}
): ResponsePromise<AdminCustomerGroupsRes> {
const path = `/admin/customer-groups/${id}`
let path = `/admin/customer-groups/${id}`
if (query) {
const queryString = qs.stringify(query)
path += `?${queryString}`
}
return this.client.request("GET", path, {}, {}, customHeaders)
}
/**
@@ -58,9 +67,9 @@ class AdminCustomerGroupsResource extends BaseResource {
}
/**
* Deletes a cusotmer group.
* Deletes a customer group.
*
* @param id - id of the customer gorup
* @param id - id of the customer group
* @param customHeaders
*/
delete(

View File

@@ -1,4 +1,5 @@
import {
AdminCustomerGroupsDeleteRes,
AdminCustomerGroupsRes,
AdminDeleteCustomerGroupsGroupCustomerBatchReq,
AdminPostCustomerGroupsGroupCustomersBatchReq,
@@ -8,7 +9,7 @@ import {
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { Response } from "@medusajs/medusa-js"
import { useMedusa } from "../../../contexts/medusa"
import { useMedusa } from "../../../contexts"
import { buildOptions } from "../../utils/buildOptions"
import { adminCustomerGroupKeys } from "./queries"
@@ -50,6 +51,7 @@ export const useAdminUpdateCustomerGroup = (
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostCustomerGroupsGroupReq) =>
client.admin.customerGroups.update(id, payload),
@@ -61,6 +63,33 @@ export const useAdminUpdateCustomerGroup = (
)
}
/**
* Hook return functions for deleting a customer group.
*
* @param id - id of the customer group that is being deleted
* @param options
*/
export const useAdminDeleteCustomerGroup = (
id: string,
options?: UseMutationOptions<
Response<AdminCustomerGroupsDeleteRes>,
Error,
void
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.customerGroups.delete(id),
buildOptions(
queryClient,
[adminCustomerGroupKeys.lists(), adminCustomerGroupKeys.detail(id)],
options
)
)
}
/**
* Hook returns functions for addition of multiple customers to a customer group.
*
@@ -77,6 +106,7 @@ export const useAdminAddCustomersToCustomerGroup = (
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostCustomerGroupsGroupCustomersBatchReq) =>
client.admin.customerGroups.addCustomers(id, payload),
@@ -104,6 +134,7 @@ export const useAdminRemoveCustomersFromCustomerGroup = (
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminDeleteCustomerGroupsGroupCustomerBatchReq) =>
client.admin.customerGroups.removeCustomers(id, payload),

View File

@@ -1,6 +1,7 @@
import {
AdminCustomerGroupsListRes,
AdminCustomerGroupsRes,
AdminGetCustomerGroupsGroupParams,
AdminGetCustomerGroupsParams,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
@@ -8,7 +9,7 @@ import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
import { queryKeysFactory } from "../../utils"
const ADMIN_CUSTOMER_GROUPS_QUERY_KEY = `admin_customer_groups` as const
@@ -22,10 +23,12 @@ type CustomerGroupQueryKeys = typeof adminCustomerGroupKeys
* Hook retrieves a customer group by id.
*
* @param id - customer group id
* @param query - query params
* @param options
*/
export const useAdminCustomerGroup = (
id: string,
query?: AdminGetCustomerGroupsGroupParams,
options?: UseQueryOptionsWrapper<
Response<AdminCustomerGroupsRes>,
Error,
@@ -35,14 +38,14 @@ export const useAdminCustomerGroup = (
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminCustomerGroupKeys.detail(id),
() => client.admin.customerGroups.retrieve(id),
() => client.admin.customerGroups.retrieve(id, query),
options
)
return { ...data, ...rest } as const
}
/**
* Hook retrieves a list of customer gorups.
* Hook retrieves a list of customer groups.
*
* @param query - pagination/filtering params
* @param options