From b23b69d4c16c52bdafb16a61786b46f28d240db6 Mon Sep 17 00:00:00 2001 From: pmakode-akamai Date: Thu, 20 Mar 2025 17:02:51 +0530 Subject: [PATCH 1/3] Move `doesRegionSupporFeature` to `utilities` pkg --- .../src/features/Kubernetes/CreateCluster/NodePoolPanel.tsx | 2 +- .../manager/src/features/Linodes/LinodeCreate/VLAN/VLAN.tsx | 4 ++-- .../Linodes/LinodeCreate/VLAN/VLANAvailabilityNotice.tsx | 4 ++-- .../manager/src/features/Linodes/LinodeCreate/VPC/VPC.tsx | 4 ++-- .../Linodes/LinodesDetail/LinodeSettings/VPCPanel.tsx | 6 ++++-- .../Volumes/Drawers/VolumeDrawer/LinodeVolumeCreateForm.tsx | 2 +- packages/manager/src/features/Volumes/VolumeCreate.tsx | 2 +- .../src/helpers}/doesRegionSupportFeature.test.ts | 6 +++++- .../src/helpers}/doesRegionSupportFeature.ts | 0 packages/utilities/src/helpers/index.ts | 1 + 10 files changed, 19 insertions(+), 12 deletions(-) rename packages/{manager/src/utilities => utilities/src/helpers}/doesRegionSupportFeature.test.ts (67%) rename packages/{manager/src/utilities => utilities/src/helpers}/doesRegionSupportFeature.ts (100%) diff --git a/packages/manager/src/features/Kubernetes/CreateCluster/NodePoolPanel.tsx b/packages/manager/src/features/Kubernetes/CreateCluster/NodePoolPanel.tsx index 75a723cc67a..624815457dd 100644 --- a/packages/manager/src/features/Kubernetes/CreateCluster/NodePoolPanel.tsx +++ b/packages/manager/src/features/Kubernetes/CreateCluster/NodePoolPanel.tsx @@ -1,10 +1,10 @@ import { useRegionsQuery } from '@linode/queries'; import { CircleProgress, ErrorState } from '@linode/ui'; +import { doesRegionSupportFeature } from '@linode/utilities'; import Grid from '@mui/material/Grid2'; import * as React from 'react'; import { useIsAcceleratedPlansEnabled } from 'src/features/components/PlansPanel/utils'; -import { doesRegionSupportFeature } from 'src/utilities/doesRegionSupportFeature'; import { extendType } from 'src/utilities/extendType'; import { diff --git a/packages/manager/src/features/Linodes/LinodeCreate/VLAN/VLAN.tsx b/packages/manager/src/features/Linodes/LinodeCreate/VLAN/VLAN.tsx index 9a5d8646c46..fee1f68c5d9 100644 --- a/packages/manager/src/features/Linodes/LinodeCreate/VLAN/VLAN.tsx +++ b/packages/manager/src/features/Linodes/LinodeCreate/VLAN/VLAN.tsx @@ -1,3 +1,4 @@ +import { useRegionsQuery } from '@linode/queries'; import { Accordion, Stack, @@ -5,14 +6,13 @@ import { TooltipIcon, Typography, } from '@linode/ui'; +import { doesRegionSupportFeature } from '@linode/utilities'; import React from 'react'; import { Controller, useFormContext, useWatch } from 'react-hook-form'; import { Link } from 'src/components/Link'; import { VLANSelect } from 'src/components/VLANSelect'; import { useRestrictedGlobalGrantCheck } from 'src/hooks/useRestrictedGlobalGrantCheck'; -import { useRegionsQuery } from '@linode/queries'; -import { doesRegionSupportFeature } from 'src/utilities/doesRegionSupportFeature'; import { useLinodeCreateQueryParams } from '../utilities'; import { VLANAvailabilityNotice } from './VLANAvailabilityNotice'; diff --git a/packages/manager/src/features/Linodes/LinodeCreate/VLAN/VLANAvailabilityNotice.tsx b/packages/manager/src/features/Linodes/LinodeCreate/VLAN/VLANAvailabilityNotice.tsx index 1920778b928..cd67f72f2cd 100644 --- a/packages/manager/src/features/Linodes/LinodeCreate/VLAN/VLANAvailabilityNotice.tsx +++ b/packages/manager/src/features/Linodes/LinodeCreate/VLAN/VLANAvailabilityNotice.tsx @@ -1,10 +1,10 @@ +import { useRegionsQuery } from '@linode/queries'; import { List, ListItem, Notice, Typography } from '@linode/ui'; +import { regionsWithFeature } from '@linode/utilities'; import { styled } from '@mui/material/styles'; import * as React from 'react'; import { TextTooltip } from 'src/components/TextTooltip'; -import { useRegionsQuery } from '@linode/queries'; -import { regionsWithFeature } from 'src/utilities/doesRegionSupportFeature'; import type { Region } from '@linode/api-v4'; import type { Theme } from '@mui/material/styles'; diff --git a/packages/manager/src/features/Linodes/LinodeCreate/VPC/VPC.tsx b/packages/manager/src/features/Linodes/LinodeCreate/VPC/VPC.tsx index f01f31cbf2b..914e308bb7b 100644 --- a/packages/manager/src/features/Linodes/LinodeCreate/VPC/VPC.tsx +++ b/packages/manager/src/features/Linodes/LinodeCreate/VPC/VPC.tsx @@ -1,3 +1,4 @@ +import { useAllVPCsQuery, useRegionsQuery } from '@linode/queries'; import { Autocomplete, Box, @@ -11,6 +12,7 @@ import { TooltipIcon, Typography, } from '@linode/ui'; +import { doesRegionSupportFeature } from '@linode/utilities'; import React, { useState } from 'react'; import { Controller, useFormContext, useWatch } from 'react-hook-form'; @@ -21,9 +23,7 @@ import { VPC_AUTO_ASSIGN_IPV4_TOOLTIP, } from 'src/features/VPCs/constants'; import { VPCCreateDrawer } from 'src/features/VPCs/VPCCreateDrawer/VPCCreateDrawer'; -import { useRegionsQuery, useAllVPCsQuery } from '@linode/queries'; import { sendLinodeCreateFormInputEvent } from 'src/utilities/analytics/formEventAnalytics'; -import { doesRegionSupportFeature } from 'src/utilities/doesRegionSupportFeature'; import { useLinodeCreateQueryParams } from '../utilities'; import { VPCRanges } from './VPCRanges'; diff --git a/packages/manager/src/features/Linodes/LinodesDetail/LinodeSettings/VPCPanel.tsx b/packages/manager/src/features/Linodes/LinodesDetail/LinodeSettings/VPCPanel.tsx index 2f82fb923f1..524bae19482 100644 --- a/packages/manager/src/features/Linodes/LinodesDetail/LinodeSettings/VPCPanel.tsx +++ b/packages/manager/src/features/Linodes/LinodesDetail/LinodeSettings/VPCPanel.tsx @@ -10,7 +10,10 @@ import { TooltipIcon, Typography, } from '@linode/ui'; -import { scrollErrorIntoView } from '@linode/utilities'; +import { + doesRegionSupportFeature, + scrollErrorIntoView, +} from '@linode/utilities'; import { useTheme } from '@mui/material/styles'; import useMediaQuery from '@mui/material/useMediaQuery'; import * as React from 'react'; @@ -20,7 +23,6 @@ import { VPC_AUTO_ASSIGN_IPV4_TOOLTIP, } from 'src/features/VPCs/constants'; import { AssignIPRanges } from 'src/features/VPCs/VPCDetail/AssignIPRanges'; -import { doesRegionSupportFeature } from 'src/utilities/doesRegionSupportFeature'; import { getAPIErrorOrDefault } from 'src/utilities/errorUtils'; import type { ExtendedIP } from 'src/utilities/ipUtils'; diff --git a/packages/manager/src/features/Volumes/Drawers/VolumeDrawer/LinodeVolumeCreateForm.tsx b/packages/manager/src/features/Volumes/Drawers/VolumeDrawer/LinodeVolumeCreateForm.tsx index 8ac176cd43b..08b1cdbd056 100644 --- a/packages/manager/src/features/Volumes/Drawers/VolumeDrawer/LinodeVolumeCreateForm.tsx +++ b/packages/manager/src/features/Volumes/Drawers/VolumeDrawer/LinodeVolumeCreateForm.tsx @@ -4,6 +4,7 @@ import { useVolumeTypesQuery, } from '@linode/queries'; import { ActionsPanel, Box, Notice, TextField, Typography } from '@linode/ui'; +import { doesRegionSupportFeature } from '@linode/utilities'; import { CreateVolumeSchema } from '@linode/validation/lib/volumes.schema'; import { useFormik } from 'formik'; import { useSnackbar } from 'notistack'; @@ -22,7 +23,6 @@ import { MAX_VOLUME_SIZE } from 'src/constants'; import { useRestrictedGlobalGrantCheck } from 'src/hooks/useRestrictedGlobalGrantCheck'; import { useEventsPollingActions } from 'src/queries/events/events'; import { sendCreateVolumeEvent } from 'src/utilities/analytics/customEventAnalytics'; -import { doesRegionSupportFeature } from 'src/utilities/doesRegionSupportFeature'; import { getErrorStringOrDefault } from 'src/utilities/errorUtils'; import { handleFieldErrors, diff --git a/packages/manager/src/features/Volumes/VolumeCreate.tsx b/packages/manager/src/features/Volumes/VolumeCreate.tsx index eeb10198f8a..0a6ecbe5879 100644 --- a/packages/manager/src/features/Volumes/VolumeCreate.tsx +++ b/packages/manager/src/features/Volumes/VolumeCreate.tsx @@ -18,6 +18,7 @@ import { TooltipIcon, Typography, } from '@linode/ui'; +import { doesRegionSupportFeature } from '@linode/utilities'; import { CreateVolumeSchema } from '@linode/validation/lib/volumes.schema'; import { useTheme } from '@mui/material/styles'; import { useNavigate } from '@tanstack/react-router'; @@ -46,7 +47,6 @@ import { EUAgreementCheckbox } from 'src/features/Account/Agreements/EUAgreement import { getRestrictedResourceText } from 'src/features/Account/utils'; import { LinodeSelect } from 'src/features/Linodes/LinodeSelect/LinodeSelect'; import { sendCreateVolumeEvent } from 'src/utilities/analytics/customEventAnalytics'; -import { doesRegionSupportFeature } from 'src/utilities/doesRegionSupportFeature'; import { getErrorStringOrDefault } from 'src/utilities/errorUtils'; import { getGDPRDetails } from 'src/utilities/formatRegion'; import { diff --git a/packages/manager/src/utilities/doesRegionSupportFeature.test.ts b/packages/utilities/src/helpers/doesRegionSupportFeature.test.ts similarity index 67% rename from packages/manager/src/utilities/doesRegionSupportFeature.test.ts rename to packages/utilities/src/helpers/doesRegionSupportFeature.test.ts index b2fae919e5b..8926356f47b 100644 --- a/packages/manager/src/utilities/doesRegionSupportFeature.test.ts +++ b/packages/utilities/src/helpers/doesRegionSupportFeature.test.ts @@ -1,4 +1,8 @@ -import { regions } from 'src/__data__/regionsData'; +// @todo: modularization - Update this import (to import from `utilities` package) +// once the "Make RegionSelect pure" PR is merged. +import { regions } from '../../../manager/src/__data__/regionsData'; + +import { describe, expect, it } from 'vitest'; import { doesRegionSupportFeature } from './doesRegionSupportFeature'; diff --git a/packages/manager/src/utilities/doesRegionSupportFeature.ts b/packages/utilities/src/helpers/doesRegionSupportFeature.ts similarity index 100% rename from packages/manager/src/utilities/doesRegionSupportFeature.ts rename to packages/utilities/src/helpers/doesRegionSupportFeature.ts diff --git a/packages/utilities/src/helpers/index.ts b/packages/utilities/src/helpers/index.ts index adaf31c4581..77899fb61af 100644 --- a/packages/utilities/src/helpers/index.ts +++ b/packages/utilities/src/helpers/index.ts @@ -6,6 +6,7 @@ export * from './arrayToList'; export * from './breakpoints'; export * from './capitalize'; export * from './deepStringTransform'; +export * from './doesRegionSupportFeature'; export * from './downloadFile'; export * from './env'; export * from './escapeRegExp'; From 2f7c8ef815d30a07eab056e5db5ca58798d04510 Mon Sep 17 00:00:00 2001 From: pmakode-akamai Date: Thu, 20 Mar 2025 18:06:22 +0530 Subject: [PATCH 2/3] Added changeset: Move `doesRegionSupportFeature` from `manager` to `utilities` package --- .../manager/.changeset/pr-11891-removed-1742474181923.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/manager/.changeset/pr-11891-removed-1742474181923.md diff --git a/packages/manager/.changeset/pr-11891-removed-1742474181923.md b/packages/manager/.changeset/pr-11891-removed-1742474181923.md new file mode 100644 index 00000000000..992d02409d4 --- /dev/null +++ b/packages/manager/.changeset/pr-11891-removed-1742474181923.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Removed +--- + +Move `doesRegionSupportFeature` from `manager` to `utilities` package ([#11891](https://github.com/linode/manager/pull/11891)) From af105a6f34d7abefb29f69ccbcaf8f4cdc2aaaf0 Mon Sep 17 00:00:00 2001 From: pmakode-akamai Date: Thu, 20 Mar 2025 18:06:35 +0530 Subject: [PATCH 3/3] Added changeset: Move `doesRegionSupportFeature` from `manager` to `utilities` package --- .../utilities/.changeset/pr-11891-added-1742474194986.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/utilities/.changeset/pr-11891-added-1742474194986.md diff --git a/packages/utilities/.changeset/pr-11891-added-1742474194986.md b/packages/utilities/.changeset/pr-11891-added-1742474194986.md new file mode 100644 index 00000000000..d052427e514 --- /dev/null +++ b/packages/utilities/.changeset/pr-11891-added-1742474194986.md @@ -0,0 +1,5 @@ +--- +"@linode/utilities": Added +--- + +Move `doesRegionSupportFeature` from `manager` to `utilities` package ([#11891](https://github.com/linode/manager/pull/11891))