diff --git a/src/components/Office/RequestedShipments/ApprovedRequestedShipments.jsx b/src/components/Office/RequestedShipments/ApprovedRequestedShipments.jsx index 4f271725818..236f4821ea1 100644 --- a/src/components/Office/RequestedShipments/ApprovedRequestedShipments.jsx +++ b/src/components/Office/RequestedShipments/ApprovedRequestedShipments.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import * as PropTypes from 'prop-types'; import { generatePath, useParams, useNavigate } from 'react-router-dom'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; @@ -86,16 +86,30 @@ const ApprovedRequestedShipments = ({ const dutyLocationPostal = { postalCode: ordersInfo.newDutyLocation?.address?.postalCode }; - const [enableBoat, setEnableBoat] = React.useState(false); - const [enableMobileHome, setEnableMobileHome] = React.useState(false); - React.useEffect(() => { + const [enableBoat, setEnableBoat] = useState(false); + const [enableMobileHome, setEnableMobileHome] = useState(false); + const [enableUB, setEnableUB] = useState(false); + const [isOconusMove, setIsOconusMove] = useState(false); + + useEffect(() => { const fetchData = async () => { setEnableBoat(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.BOAT)); setEnableMobileHome(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.MOBILE_HOME)); + setEnableUB(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.UNACCOMPANIED_BAGGAGE)); }; fetchData(); }, []); + const { newDutyLocation, currentDutyLocation } = ordersInfo; + useEffect(() => { + // Check if duty locations on the orders qualify as OCONUS to conditionally render the UB shipment option + if (currentDutyLocation?.address?.isOconus || newDutyLocation?.address?.isOconus) { + setIsOconusMove(true); + } else { + setIsOconusMove(false); + } + }, [currentDutyLocation, newDutyLocation, isOconusMove, enableUB]); + const allowedShipmentOptions = () => { return ( <> @@ -107,6 +121,7 @@ const ApprovedRequestedShipments = ({ {enableBoat && } {enableMobileHome && } + {enableUB && isOconusMove && } > ); }; diff --git a/src/components/Office/RequestedShipments/RequestedShipments.test.jsx b/src/components/Office/RequestedShipments/RequestedShipments.test.jsx index d231e042a58..55b512970d0 100644 --- a/src/components/Office/RequestedShipments/RequestedShipments.test.jsx +++ b/src/components/Office/RequestedShipments/RequestedShipments.test.jsx @@ -502,6 +502,7 @@ describe('RequestedShipments', () => { SHIPMENT_OPTIONS_URL.NTSrelease, SHIPMENT_OPTIONS_URL.MOBILE_HOME, SHIPMENT_OPTIONS_URL.BOAT, + SHIPMENT_OPTIONS_URL.UNACCOMPANIED_BAGGAGE, ], ])('selects the %s option and navigates to the matching form for that shipment type', async (shipmentType) => { render( diff --git a/src/components/Office/RequestedShipments/SubmittedRequestedShipments.jsx b/src/components/Office/RequestedShipments/SubmittedRequestedShipments.jsx index c83d4eddc81..93c119cf16e 100644 --- a/src/components/Office/RequestedShipments/SubmittedRequestedShipments.jsx +++ b/src/components/Office/RequestedShipments/SubmittedRequestedShipments.jsx @@ -65,15 +65,28 @@ const SubmittedRequestedShipments = ({ const [filteredShipments, setFilteredShipments] = useState([]); const [enableBoat, setEnableBoat] = useState(false); const [enableMobileHome, setEnableMobileHome] = useState(false); + const [enableUB, setEnableUB] = useState(false); + const [isOconusMove, setIsOconusMove] = useState(false); useEffect(() => { const fetchData = async () => { setEnableBoat(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.BOAT)); setEnableMobileHome(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.MOBILE_HOME)); + setEnableUB(await isBooleanFlagEnabled(FEATURE_FLAG_KEYS.UNACCOMPANIED_BAGGAGE)); }; fetchData(); }, []); + const { newDutyLocation, currentDutyLocation } = ordersInfo; + useEffect(() => { + // Check if duty locations on the orders qualify as OCONUS to conditionally render the UB shipment option + if (currentDutyLocation?.address?.isOconus || newDutyLocation?.address?.isOconus) { + setIsOconusMove(true); + } else { + setIsOconusMove(false); + } + }, [currentDutyLocation, newDutyLocation, isOconusMove, enableUB]); + const filterPrimeShipments = mtoShipments.filter((shipment) => !shipment.usesExternalVendor); const filterShipments = (formikShipmentIds) => { @@ -126,6 +139,7 @@ const SubmittedRequestedShipments = ({ {enableBoat && } {enableMobileHome && } + {enableUB && isOconusMove && } > ); }; diff --git a/src/components/Office/ShipmentForm/ShipmentForm.jsx b/src/components/Office/ShipmentForm/ShipmentForm.jsx index 62c73213119..22d079956d6 100644 --- a/src/components/Office/ShipmentForm/ShipmentForm.jsx +++ b/src/components/Office/ShipmentForm/ShipmentForm.jsx @@ -890,7 +890,7 @@ const ShipmentForm = (props) => {