Files
medusa-store/packages/admin-next/dashboard/src/hooks/api/store.tsx
T
Kasper Fabricius Kristensen c1740218e9 feat(dashboard,types,js-sdk,ui): Add missing Price List features (#7856)
**What**
- Adds missing features to Price List domain
- Adds `StackedFocusModal` and `StackedDrawer` components that should replace SplitView across the project.
- Add Footer to FocusModal
- Adds missing js-sdk functions and types

**Note**
The DatePickers in the PriceLists forms do not work as intended atm. The component is broken, and needs to be fixed. I am working on a fix, but choose to move that work into a separate branch, to prevent this PR from getting bigger then it already is. Will update once the fixes have been merged.
2024-06-28 14:08:23 +00:00

76 lines
1.7 KiB
TypeScript

import {
MutationOptions,
QueryKey,
UseQueryOptions,
useMutation,
useQuery,
} from "@tanstack/react-query"
import { FetchError } from "@medusajs/js-sdk"
import { HttpTypes } from "@medusajs/types"
import { sdk } from "../../lib/client"
import { queryClient } from "../../lib/query-client"
import { queryKeysFactory } from "../../lib/query-key-factory"
const STORE_QUERY_KEY = "store" as const
export const storeQueryKeys = queryKeysFactory(STORE_QUERY_KEY)
/**
* Workaround to keep the V1 version of retrieving the store.
*/
async function retrieveActiveStore(
query?: HttpTypes.AdminStoreParams
): Promise<HttpTypes.AdminStoreResponse> {
const response = await sdk.admin.store.list(query)
const activeStore = response.stores?.[0]
if (!activeStore) {
throw new FetchError("No active store found", "Not Found", 404)
}
return { store: activeStore }
}
export const useStore = (
query?: Record<string, any>,
options?: Omit<
UseQueryOptions<
HttpTypes.AdminStoreResponse,
FetchError,
HttpTypes.AdminStoreResponse,
QueryKey
>,
"queryFn" | "queryKey"
>
) => {
const { data, ...rest } = useQuery({
queryFn: () => retrieveActiveStore(query),
queryKey: storeQueryKeys.details(),
...options,
})
return {
...data,
...rest,
}
}
export const useUpdateStore = (
id: string,
options?: MutationOptions<
HttpTypes.AdminStoreResponse,
FetchError,
HttpTypes.AdminUpdateStore
>
) => {
return useMutation({
mutationFn: (payload) => sdk.admin.store.update(id, payload),
onSuccess: (data, variables, context) => {
queryClient.invalidateQueries({ queryKey: storeQueryKeys.details() })
options?.onSuccess?.(data, variables, context)
},
...options,
})
}