From 74c19308a0c5cae468fcd124549e5c24d5e0bc4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frane=20Poli=C4=87?= <16856471+fPolic@users.noreply.github.com> Date: Wed, 10 Jul 2024 20:06:36 +0200 Subject: [PATCH] fix(dashboard): stock location hook cache invalidation (#8049) --- .../src/hooks/api/fulfillment-sets.tsx | 1 + .../src/hooks/api/stock-locations.tsx | 6 ++-- .../location-service-zone-create/index.ts | 1 - .../location-service-zone-create/loader.ts | 27 ------------------ .../location-service-zone-create.tsx | 11 ++------ .../index.ts | 1 - .../loader.ts | 28 ------------------- ...on-service-zone-shipping-option-create.tsx | 15 ++-------- 8 files changed, 7 insertions(+), 83 deletions(-) delete mode 100644 packages/admin-next/dashboard/src/routes/locations/location-service-zone-create/loader.ts delete mode 100644 packages/admin-next/dashboard/src/routes/locations/location-service-zone-shipping-option-create/loader.ts diff --git a/packages/admin-next/dashboard/src/hooks/api/fulfillment-sets.tsx b/packages/admin-next/dashboard/src/hooks/api/fulfillment-sets.tsx index bc32eac659..b20b7fe5dd 100644 --- a/packages/admin-next/dashboard/src/hooks/api/fulfillment-sets.tsx +++ b/packages/admin-next/dashboard/src/hooks/api/fulfillment-sets.tsx @@ -42,6 +42,7 @@ export const useDeleteFulfillmentSet = ( // We need to invalidate all related entities. We invalidate using `all` keys to ensure that all relevant entities are invalidated. await queryClient.invalidateQueries({ queryKey: stockLocationsQueryKeys.all, + refetchType: "all", }) await queryClient.invalidateQueries({ queryKey: shippingOptionsQueryKeys.all, diff --git a/packages/admin-next/dashboard/src/hooks/api/stock-locations.tsx b/packages/admin-next/dashboard/src/hooks/api/stock-locations.tsx index 21aad9dda3..ba0a37bb58 100644 --- a/packages/admin-next/dashboard/src/hooks/api/stock-locations.tsx +++ b/packages/admin-next/dashboard/src/hooks/api/stock-locations.tsx @@ -166,10 +166,8 @@ export const useCreateStockLocationFulfillmentSet = ( sdk.admin.stockLocation.createFulfillmentSet(locationId, payload), onSuccess: async (data, variables, context) => { await queryClient.invalidateQueries({ - queryKey: stockLocationsQueryKeys.lists(), - }) - await queryClient.invalidateQueries({ - queryKey: stockLocationsQueryKeys.details(), + queryKey: stockLocationsQueryKeys.all, + refetchType: "all", }) options?.onSuccess?.(data, variables, context) diff --git a/packages/admin-next/dashboard/src/routes/locations/location-service-zone-create/index.ts b/packages/admin-next/dashboard/src/routes/locations/location-service-zone-create/index.ts index 22d9a0b340..37087cf915 100644 --- a/packages/admin-next/dashboard/src/routes/locations/location-service-zone-create/index.ts +++ b/packages/admin-next/dashboard/src/routes/locations/location-service-zone-create/index.ts @@ -1,2 +1 @@ -export { stockLocationLoader as loader } from "./loader" export { LocationCreateServiceZone as Component } from "./location-service-zone-create" diff --git a/packages/admin-next/dashboard/src/routes/locations/location-service-zone-create/loader.ts b/packages/admin-next/dashboard/src/routes/locations/location-service-zone-create/loader.ts deleted file mode 100644 index a506793271..0000000000 --- a/packages/admin-next/dashboard/src/routes/locations/location-service-zone-create/loader.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { HttpTypes } from "@medusajs/types" -import { LoaderFunctionArgs } from "react-router-dom" - -import { stockLocationsQueryKeys } from "../../../hooks/api/stock-locations" -import { sdk } from "../../../lib/client" -import { queryClient } from "../../../lib/query-client" - -const fulfillmentSetCreateQuery = (id: string) => ({ - queryKey: stockLocationsQueryKeys.detail(id, { - fields: "*fulfillment_sets", - }), - queryFn: async () => - sdk.admin.stockLocation.retrieve(id, { - fields: "*fulfillment_sets", - }), -}) - -export const stockLocationLoader = async ({ params }: LoaderFunctionArgs) => { - const id = params.location_id - const query = fulfillmentSetCreateQuery(id!) - - return ( - queryClient.getQueryData( - query.queryKey - ) ?? (await queryClient.fetchQuery(query)) - ) -} diff --git a/packages/admin-next/dashboard/src/routes/locations/location-service-zone-create/location-service-zone-create.tsx b/packages/admin-next/dashboard/src/routes/locations/location-service-zone-create/location-service-zone-create.tsx index 3e11712f0e..59a9ba81f1 100644 --- a/packages/admin-next/dashboard/src/routes/locations/location-service-zone-create/location-service-zone-create.tsx +++ b/packages/admin-next/dashboard/src/routes/locations/location-service-zone-create/location-service-zone-create.tsx @@ -1,24 +1,17 @@ -import { json, useLoaderData, useParams } from "react-router-dom" +import { json, useParams } from "react-router-dom" import { RouteFocusModal } from "../../../components/modals" import { useStockLocation } from "../../../hooks/api/stock-locations" -import { FulfillmentSetType } from "../common/constants" import { CreateServiceZoneForm } from "./components/create-service-zone-form" -import { stockLocationLoader } from "./loader" +import { FulfillmentSetType } from "../common/constants" export function LocationCreateServiceZone() { const { fset_id, location_id } = useParams() - const initialData = useLoaderData() as Awaited< - ReturnType - > const { stock_location, isLoading, isError, error } = useStockLocation( location_id!, { fields: "*fulfillment_sets", - }, - { - initialData, } ) diff --git a/packages/admin-next/dashboard/src/routes/locations/location-service-zone-shipping-option-create/index.ts b/packages/admin-next/dashboard/src/routes/locations/location-service-zone-shipping-option-create/index.ts index 70721d78d0..c6313fb979 100644 --- a/packages/admin-next/dashboard/src/routes/locations/location-service-zone-shipping-option-create/index.ts +++ b/packages/admin-next/dashboard/src/routes/locations/location-service-zone-shipping-option-create/index.ts @@ -1,2 +1 @@ -export { stockLocationLoader as loader } from "./loader" export { LocationServiceZoneShippingOptionCreate as Component } from "./location-service-zone-shipping-option-create" diff --git a/packages/admin-next/dashboard/src/routes/locations/location-service-zone-shipping-option-create/loader.ts b/packages/admin-next/dashboard/src/routes/locations/location-service-zone-shipping-option-create/loader.ts deleted file mode 100644 index eb128e9c1b..0000000000 --- a/packages/admin-next/dashboard/src/routes/locations/location-service-zone-shipping-option-create/loader.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { LoaderFunctionArgs } from "react-router-dom" - -import { HttpTypes } from "@medusajs/types" -import { stockLocationsQueryKeys } from "../../../hooks/api/stock-locations" -import { sdk } from "../../../lib/client" -import { queryClient } from "../../../lib/query-client" -import { LOC_CREATE_SHIPPING_OPTION_FIELDS } from "./constants" - -const fulfillmentSetCreateQuery = (id: string) => ({ - queryKey: stockLocationsQueryKeys.detail(id, { - fields: LOC_CREATE_SHIPPING_OPTION_FIELDS, - }), - queryFn: async () => - sdk.admin.stockLocation.retrieve(id, { - fields: LOC_CREATE_SHIPPING_OPTION_FIELDS, - }), -}) - -export const stockLocationLoader = async ({ params }: LoaderFunctionArgs) => { - const id = params.location_id - const query = fulfillmentSetCreateQuery(id!) - - return ( - queryClient.getQueryData( - query.queryKey - ) ?? (await queryClient.fetchQuery(query)) - ) -} diff --git a/packages/admin-next/dashboard/src/routes/locations/location-service-zone-shipping-option-create/location-service-zone-shipping-option-create.tsx b/packages/admin-next/dashboard/src/routes/locations/location-service-zone-shipping-option-create/location-service-zone-shipping-option-create.tsx index 7381b181d2..a9a42b4d4b 100644 --- a/packages/admin-next/dashboard/src/routes/locations/location-service-zone-shipping-option-create/location-service-zone-shipping-option-create.tsx +++ b/packages/admin-next/dashboard/src/routes/locations/location-service-zone-shipping-option-create/location-service-zone-shipping-option-create.tsx @@ -1,31 +1,20 @@ -import { - json, - useLoaderData, - useParams, - useSearchParams, -} from "react-router-dom" +import { json, useParams, useSearchParams } from "react-router-dom" import { RouteFocusModal } from "../../../components/modals" import { useStockLocation } from "../../../hooks/api/stock-locations" import { CreateShippingOptionsForm } from "./components/create-shipping-options-form" import { LOC_CREATE_SHIPPING_OPTION_FIELDS } from "./constants" -import { stockLocationLoader } from "./loader" export function LocationServiceZoneShippingOptionCreate() { const { location_id, fset_id, zone_id } = useParams() const [searchParams] = useSearchParams() const isReturn = searchParams.has("is_return") - const initialData = useLoaderData() as Awaited< - ReturnType - > - const { stock_location, isPending, isError, error } = useStockLocation( location_id!, { fields: LOC_CREATE_SHIPPING_OPTION_FIELDS, - }, - { initialData } + } ) const zone = stock_location?.fulfillment_sets