diff --git a/packages/medusa-js/src/resources/admin/customer-groups.ts b/packages/medusa-js/src/resources/admin/customer-groups.ts index 3b70668f59..8ff33a6aa4 100644 --- a/packages/medusa-js/src/resources/admin/customer-groups.ts +++ b/packages/medusa-js/src/resources/admin/customer-groups.ts @@ -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 = {} ): ResponsePromise { - 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( diff --git a/packages/medusa-react/src/hooks/admin/customer-groups/mutations.ts b/packages/medusa-react/src/hooks/admin/customer-groups/mutations.ts index a330ddcbfd..d9584a463d 100644 --- a/packages/medusa-react/src/hooks/admin/customer-groups/mutations.ts +++ b/packages/medusa-react/src/hooks/admin/customer-groups/mutations.ts @@ -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, + 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), diff --git a/packages/medusa-react/src/hooks/admin/customer-groups/queries.ts b/packages/medusa-react/src/hooks/admin/customer-groups/queries.ts index e37e3b3aec..519820645f 100644 --- a/packages/medusa-react/src/hooks/admin/customer-groups/queries.ts +++ b/packages/medusa-react/src/hooks/admin/customer-groups/queries.ts @@ -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, 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