From 0f87d3d642b56bf19de8136e1f5bfedf364c5193 Mon Sep 17 00:00:00 2001 From: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com> Date: Mon, 29 May 2023 22:02:01 +0200 Subject: [PATCH] chore(medusa,admin-ui): Add reservations FF (#4184) * chore(medusa,admin-ui): Add reservations FF * Create five-ways-care.md * Tweak description --- .changeset/five-ways-care.md | 7 +++++++ .../admin-ui/ui/src/domain/inventory/header.tsx | 17 ++++++++++++++++- .../admin-ui/ui/src/domain/inventory/index.tsx | 13 ++++++++++++- .../ui/src/providers/feature-flag-provider.tsx | 2 ++ .../src/loaders/feature-flags/reservations.ts | 10 ++++++++++ 5 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 .changeset/five-ways-care.md create mode 100644 packages/medusa/src/loaders/feature-flags/reservations.ts diff --git a/.changeset/five-ways-care.md b/.changeset/five-ways-care.md new file mode 100644 index 0000000000..e2b831034c --- /dev/null +++ b/.changeset/five-ways-care.md @@ -0,0 +1,7 @@ +--- +"@medusajs/admin-ui": patch +"@medusajs/admin": patch +"@medusajs/medusa": patch +--- + +chore(medusa,admin-ui): Add reservations FF diff --git a/packages/admin-ui/ui/src/domain/inventory/header.tsx b/packages/admin-ui/ui/src/domain/inventory/header.tsx index 213dd7577c..20d452031e 100644 --- a/packages/admin-ui/ui/src/domain/inventory/header.tsx +++ b/packages/admin-ui/ui/src/domain/inventory/header.tsx @@ -1,5 +1,9 @@ import TableViewHeader from "../../components/organisms/custom-table-header" import { useNavigate } from "react-router-dom" +import { + FeatureFlag, + useFeatureFlag, +} from "../../providers/feature-flag-provider" type P = { activeView: "inventory" | "locations" | "reservations" @@ -11,6 +15,17 @@ type P = { function InventoryPageTableHeader(props: P) { const navigate = useNavigate() + const { isFeatureEnabled } = useFeatureFlag() + const isReservationsEnabled = + isFeatureEnabled(FeatureFlag.RESERVATIONS) && + isFeatureEnabled(FeatureFlag.INVENTORY) + + const views = ["inventory", "locations"] + + if (isReservationsEnabled) { + views.push("reservations") + } + return ( { @@ -20,7 +35,7 @@ function InventoryPageTableHeader(props: P) { navigate(`/a/inventory/${v}`) } }} - views={["inventory", "locations", "reservations"]} + views={views} activeView={props.activeView} /> ) diff --git a/packages/admin-ui/ui/src/domain/inventory/index.tsx b/packages/admin-ui/ui/src/domain/inventory/index.tsx index 01ae3d98b8..14d96fbc54 100644 --- a/packages/admin-ui/ui/src/domain/inventory/index.tsx +++ b/packages/admin-ui/ui/src/domain/inventory/index.tsx @@ -2,13 +2,24 @@ import { Route, Routes } from "react-router-dom" import InventoryView from "./inventory" import Locations from "./locations" import Reservations from "./reservations" +import { + FeatureFlag, + useFeatureFlag, +} from "../../providers/feature-flag-provider" const Inventory = () => { + const { isFeatureEnabled } = useFeatureFlag() + const isReservationsEnabled = + isFeatureEnabled(FeatureFlag.RESERVATIONS) && + isFeatureEnabled(FeatureFlag.INVENTORY) + return ( } /> } /> - } /> + {isReservationsEnabled && ( + } /> + )} ) } diff --git a/packages/admin-ui/ui/src/providers/feature-flag-provider.tsx b/packages/admin-ui/ui/src/providers/feature-flag-provider.tsx index 28a2d025d9..a0d14e7f79 100644 --- a/packages/admin-ui/ui/src/providers/feature-flag-provider.tsx +++ b/packages/admin-ui/ui/src/providers/feature-flag-provider.tsx @@ -8,6 +8,8 @@ import { useAdminGetSession, useAdminStore } from "medusa-react" export enum FeatureFlag { PRODUCT_CATEGORIES = "product_categories", + RESERVATIONS = "reservations", + INVENTORY = "inventoryService", } const defaultFeatureFlagContext: { diff --git a/packages/medusa/src/loaders/feature-flags/reservations.ts b/packages/medusa/src/loaders/feature-flags/reservations.ts new file mode 100644 index 0000000000..f1bad2f6a9 --- /dev/null +++ b/packages/medusa/src/loaders/feature-flags/reservations.ts @@ -0,0 +1,10 @@ +import { FlagSettings } from "../../types/feature-flags" + +const ReservationsFeatureFlag: FlagSettings = { + key: "reservations", + default_val: false, + env_key: "MEDUSA_FF_RESERVATIONS", + description: "[WIP] Enable the reservations feature from the Inventory Module", +} + +export default ReservationsFeatureFlag