From ab7e71a055e8942df2e59aa9757a9e5a2c1cd0a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frane=20Poli=C4=87?= <16856471+fPolic@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:48:40 +0200 Subject: [PATCH] fix(dashboard, fulfilment): fulfilment providers enabled check (#9415) **What** - hide disabled fulfilment providers on the admin - check if the fulfilment provider has an identifier when loading providers --- FIXES CC-549 --- .../location-fulfillment-providers-section.tsx | 1 + .../edit-fulfillment-providers-form.tsx | 2 +- .../location-fulfillment-providers.tsx | 8 +++----- .../src/routes/regions/region-create/region-create.tsx | 4 +++- .../src/routes/regions/region-edit/region-edit.tsx | 1 + .../fulfillment/src/services/fulfillment-provider.ts | 6 ++++++ packages/modules/payment/src/loaders/providers.ts | 8 ++++++++ 7 files changed, 23 insertions(+), 7 deletions(-) diff --git a/packages/admin/dashboard/src/routes/locations/location-detail/components/location-fulfillment-providers-section/location-fulfillment-providers-section.tsx b/packages/admin/dashboard/src/routes/locations/location-detail/components/location-fulfillment-providers-section/location-fulfillment-providers-section.tsx index 727a2eab0a..cc68879a0d 100644 --- a/packages/admin/dashboard/src/routes/locations/location-detail/components/location-fulfillment-providers-section/location-fulfillment-providers-section.tsx +++ b/packages/admin/dashboard/src/routes/locations/location-detail/components/location-fulfillment-providers-section/location-fulfillment-providers-section.tsx @@ -20,6 +20,7 @@ function LocationsFulfillmentProvidersSection({ const { fulfillment_providers } = useFulfillmentProviders({ stock_location_id: location.id, fields: "id", + is_enabled: true, }) return ( diff --git a/packages/admin/dashboard/src/routes/locations/location-fulfillment-providers/components/edit-fulfillment-providers-form/edit-fulfillment-providers-form.tsx b/packages/admin/dashboard/src/routes/locations/location-fulfillment-providers/components/edit-fulfillment-providers-form/edit-fulfillment-providers-form.tsx index a81a0567e5..232e82c25b 100644 --- a/packages/admin/dashboard/src/routes/locations/location-fulfillment-providers/components/edit-fulfillment-providers-form/edit-fulfillment-providers-form.tsx +++ b/packages/admin/dashboard/src/routes/locations/location-fulfillment-providers/components/edit-fulfillment-providers-form/edit-fulfillment-providers-form.tsx @@ -69,7 +69,7 @@ export const LocationEditFulfillmentProvidersForm = ({ const { fulfillment_providers, count, isLoading, isError, error } = useFulfillmentProviders( - { ...searchParams }, + { ...searchParams, is_enabled: true }, { placeholderData: keepPreviousData } ) diff --git a/packages/admin/dashboard/src/routes/locations/location-fulfillment-providers/location-fulfillment-providers.tsx b/packages/admin/dashboard/src/routes/locations/location-fulfillment-providers/location-fulfillment-providers.tsx index 74026901b5..ce897e85e0 100644 --- a/packages/admin/dashboard/src/routes/locations/location-fulfillment-providers/location-fulfillment-providers.tsx +++ b/packages/admin/dashboard/src/routes/locations/location-fulfillment-providers/location-fulfillment-providers.tsx @@ -6,12 +6,10 @@ import { LocationEditFulfillmentProvidersForm } from "./components/edit-fulfillm export const LocationFulfillmentProviders = () => { const { location_id } = useParams() - const { stock_location, isPending, isError, error } = useStockLocation( - location_id!, - { fields: "id,*fulfillment_providers" } - ) + const { stock_location, isPending, isFetching, isError, error } = + useStockLocation(location_id!, { fields: "id,*fulfillment_providers" }) - const ready = !isPending && !!stock_location + const ready = !isPending && !isFetching && !!stock_location if (isError) { throw error diff --git a/packages/admin/dashboard/src/routes/regions/region-create/region-create.tsx b/packages/admin/dashboard/src/routes/regions/region-create/region-create.tsx index 04616a2ebb..4583a3f7eb 100644 --- a/packages/admin/dashboard/src/routes/regions/region-create/region-create.tsx +++ b/packages/admin/dashboard/src/routes/regions/region-create/region-create.tsx @@ -10,7 +10,9 @@ export const RegionCreate = () => { const storeCurrencies = (store?.supported_currencies ?? []).map( (c) => currencies[c.currency_code.toUpperCase()] ) - const { payment_providers: paymentProviders = [] } = usePaymentProviders() + const { payment_providers: paymentProviders = [] } = usePaymentProviders({ + is_enabled: true, + }) if (isError) { throw error diff --git a/packages/admin/dashboard/src/routes/regions/region-edit/region-edit.tsx b/packages/admin/dashboard/src/routes/regions/region-edit/region-edit.tsx index 1152049b0d..0068f80e7a 100644 --- a/packages/admin/dashboard/src/routes/regions/region-edit/region-edit.tsx +++ b/packages/admin/dashboard/src/routes/regions/region-edit/region-edit.tsx @@ -50,6 +50,7 @@ export const RegionEdit = () => { ) const { payment_providers: paymentProviders = [] } = usePaymentProviders({ limit: 999, + is_enabled: true, }) if (isRegionError) { diff --git a/packages/modules/fulfillment/src/services/fulfillment-provider.ts b/packages/modules/fulfillment/src/services/fulfillment-provider.ts index 6a1934949f..75b4c522fb 100644 --- a/packages/modules/fulfillment/src/services/fulfillment-provider.ts +++ b/packages/modules/fulfillment/src/services/fulfillment-provider.ts @@ -33,6 +33,12 @@ export default class FulfillmentProviderService extends ModulesSdkUtils.MedusaIn providerClass: Constructor, optionName?: string ) { + if (!(providerClass as any).identifier) { + throw new MedusaError( + MedusaError.Types.INVALID_ARGUMENT, + `Trying to register a fulfillment provider without an identifier.` + ) + } return `${(providerClass as any).identifier}_${optionName}` } diff --git a/packages/modules/payment/src/loaders/providers.ts b/packages/modules/payment/src/loaders/providers.ts index 41d9a9f32d..dc56d0d177 100644 --- a/packages/modules/payment/src/loaders/providers.ts +++ b/packages/modules/payment/src/loaders/providers.ts @@ -6,6 +6,7 @@ import { ModulesSdkTypes, } from "@medusajs/framework/types" import { Lifetime, asFunction, asValue } from "awilix" +import { MedusaError } from "@medusajs/utils" import { PaymentProviderService } from "@services" import * as providers from "../providers" @@ -13,6 +14,13 @@ import * as providers from "../providers" const PROVIDER_REGISTRATION_KEY = "payment_providers" const registrationFn = async (klass, container, pluginOptions) => { + if (!klass?.PROVIDER) { + throw new MedusaError( + MedusaError.Types.INVALID_ARGUMENT, + `Trying to register a payment provider without a provider identifier.` + ) + } + const key = `pp_${klass.PROVIDER}_${pluginOptions.id}` container.register({