feat: Bring back API key sales channel management (#6976)

- Add API key sales channel management
- Add HTTP responses for API keys and sales channels
- Use HTTP responses in `dashboard` and remove now redundant types
This commit is contained in:
Oli Juhl
2024-04-06 18:30:27 +02:00
committed by GitHub
parent 58c68f6715
commit 5724d80286
22 changed files with 533 additions and 607 deletions

View File

@@ -10,11 +10,9 @@ import { client } from "../../lib/client"
import { queryClient } from "../../lib/medusa"
import { queryKeysFactory } from "../../lib/query-key-factory"
import { CreateApiKeyReq, UpdateApiKeyReq } from "../../types/api-payloads"
import {
ApiKeyDeleteRes,
ApiKeyListRes,
ApiKeyRes,
} from "../../types/api-responses"
import { ApiKeyDeleteRes } from "../../types/api-responses"
import { AdminApiKeyResponse, AdminApiKeyListResponse } from "@medusajs/types"
import { salesChannelsQueryKeys } from "./sales-channels"
const API_KEYS_QUERY_KEY = "api_keys" as const
export const apiKeysQueryKeys = queryKeysFactory(API_KEYS_QUERY_KEY)
@@ -23,7 +21,7 @@ export const useApiKey = (
id: string,
query?: Record<string, any>,
options?: Omit<
UseQueryOptions<ApiKeyRes, Error, ApiKeyRes, QueryKey>,
UseQueryOptions<AdminApiKeyResponse, Error, AdminApiKeyResponse, QueryKey>,
"queryKey" | "queryFn"
>
) => {
@@ -39,7 +37,12 @@ export const useApiKey = (
export const useApiKeys = (
query?: Record<string, any>,
options?: Omit<
UseQueryOptions<ApiKeyListRes, Error, ApiKeyListRes, QueryKey>,
UseQueryOptions<
AdminApiKeyListResponse,
Error,
AdminApiKeyListResponse,
QueryKey
>,
"queryKey" | "queryFn"
>
) => {
@@ -53,7 +56,7 @@ export const useApiKeys = (
}
export const useCreateApiKey = (
options?: UseMutationOptions<ApiKeyRes, Error, CreateApiKeyReq>
options?: UseMutationOptions<AdminApiKeyResponse, Error, CreateApiKeyReq>
) => {
return useMutation({
mutationFn: (payload) => client.apiKeys.create(payload),
@@ -68,7 +71,7 @@ export const useCreateApiKey = (
export const useUpdateApiKey = (
id: string,
options?: UseMutationOptions<ApiKeyRes, Error, UpdateApiKeyReq>
options?: UseMutationOptions<AdminApiKeyResponse, Error, UpdateApiKeyReq>
) => {
return useMutation({
mutationFn: (payload) => client.apiKeys.update(id, payload),
@@ -84,7 +87,7 @@ export const useUpdateApiKey = (
export const useRevokeApiKey = (
id: string,
options?: UseMutationOptions<ApiKeyRes, Error, void>
options?: UseMutationOptions<AdminApiKeyResponse, Error, void>
) => {
return useMutation({
mutationFn: () => client.apiKeys.revoke(id),
@@ -111,3 +114,50 @@ export const useDeleteApiKey = (
},
})
}
export const useBatchRemoveSalesChannelsFromApiKey = (
id: string,
options?: UseMutationOptions<
AdminApiKeyResponse,
Error,
{ sales_channel_ids: string[] }
>
) => {
return useMutation({
mutationFn: (payload) =>
client.apiKeys.batchRemoveSalesChannels(id, payload),
onSuccess: (data, variables, context) => {
queryClient.invalidateQueries({ queryKey: apiKeysQueryKeys.lists() })
queryClient.invalidateQueries({ queryKey: apiKeysQueryKeys.detail(id) })
queryClient.invalidateQueries({
queryKey: salesChannelsQueryKeys.lists(),
})
options?.onSuccess?.(data, variables, context)
},
...options,
})
}
export const useBatchAddSalesChannelsToApiKey = (
id: string,
options?: UseMutationOptions<
AdminApiKeyResponse,
Error,
{ sales_channel_ids: string[] }
>
) => {
return useMutation({
mutationFn: (payload) => client.apiKeys.batchAddSalesChannels(id, payload),
onSuccess: (data, variables, context) => {
queryClient.invalidateQueries({ queryKey: apiKeysQueryKeys.lists() })
queryClient.invalidateQueries({ queryKey: apiKeysQueryKeys.detail(id) })
queryClient.invalidateQueries({
queryKey: salesChannelsQueryKeys.lists(),
})
options?.onSuccess?.(data, variables, context)
},
...options,
})
}

View File

@@ -15,20 +15,25 @@ import {
RemoveProductsSalesChannelReq,
UpdateSalesChannelReq,
} from "../../types/api-payloads"
import {
SalesChannelDeleteRes,
SalesChannelListRes,
SalesChannelRes,
} from "../../types/api-responses"
import { SalesChannelDeleteRes } from "../../types/api-responses"
import { productsQueryKeys } from "./products"
import {
AdminSalesChannelListResponse,
AdminSalesChannelResponse,
} from "@medusajs/types"
const SALES_CHANNELS_QUERY_KEY = "sales-channels" as const
const salesChannelsQueryKeys = queryKeysFactory(SALES_CHANNELS_QUERY_KEY)
export const salesChannelsQueryKeys = queryKeysFactory(SALES_CHANNELS_QUERY_KEY)
export const useSalesChannel = (
id: string,
options?: Omit<
UseQueryOptions<SalesChannelRes, Error, SalesChannelRes, QueryKey>,
UseQueryOptions<
AdminSalesChannelResponse,
Error,
AdminSalesChannelResponse,
QueryKey
>,
"queryFn" | "queryKey"
>
) => {
@@ -44,7 +49,12 @@ export const useSalesChannel = (
export const useSalesChannels = (
query?: Record<string, any>,
options?: Omit<
UseQueryOptions<SalesChannelListRes, Error, SalesChannelListRes, QueryKey>,
UseQueryOptions<
AdminSalesChannelListResponse,
Error,
AdminSalesChannelListResponse,
QueryKey
>,
"queryFn" | "queryKey"
>
) => {
@@ -58,7 +68,11 @@ export const useSalesChannels = (
}
export const useCreateSalesChannel = (
options?: UseMutationOptions<SalesChannelRes, Error, CreateSalesChannelReq>
options?: UseMutationOptions<
AdminSalesChannelResponse,
Error,
CreateSalesChannelReq
>
) => {
return useMutation({
mutationFn: (payload) => client.salesChannels.create(payload),
@@ -74,7 +88,11 @@ export const useCreateSalesChannel = (
export const useUpdateSalesChannel = (
id: string,
options?: UseMutationOptions<SalesChannelRes, Error, UpdateSalesChannelReq>
options?: UseMutationOptions<
AdminSalesChannelResponse,
Error,
UpdateSalesChannelReq
>
) => {
return useMutation({
mutationFn: (payload) => client.salesChannels.update(id, payload),
@@ -120,7 +138,7 @@ export const useDeleteSalesChannel = (
export const useSalesChannelRemoveProducts = (
id: string,
options?: UseMutationOptions<
SalesChannelRes,
AdminSalesChannelResponse,
Error,
RemoveProductsSalesChannelReq
>
@@ -156,7 +174,7 @@ export const useSalesChannelRemoveProducts = (
export const useSalesChannelAddProducts = (
id: string,
options?: UseMutationOptions<
SalesChannelRes,
AdminSalesChannelResponse,
Error,
AddProductsSalesChannelReq
>