From a1cbcfd57ce044a213c440c92bfcb15b301422e8 Mon Sep 17 00:00:00 2001 From: Hana Xu Date: Thu, 5 Sep 2024 13:00:51 -0400 Subject: [PATCH 1/3] hide beta pricing notice if la/ga is enabled --- .../src/features/components/PlansPanel/PlansPanel.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/manager/src/features/components/PlansPanel/PlansPanel.tsx b/packages/manager/src/features/components/PlansPanel/PlansPanel.tsx index f1e8f4742bc..1e4f652b7b4 100644 --- a/packages/manager/src/features/components/PlansPanel/PlansPanel.tsx +++ b/packages/manager/src/features/components/PlansPanel/PlansPanel.tsx @@ -2,8 +2,9 @@ import * as React from 'react'; import { useLocation } from 'react-router-dom'; import { Notice } from 'src/components/Notice/Notice'; -import { isDistributedRegionSupported } from 'src/components/RegionSelect/RegionSelect.utils'; +import { useIsGeckoEnabled } from 'src/components/RegionSelect/RegionSelect.utils'; import { getIsDistributedRegion } from 'src/components/RegionSelect/RegionSelect.utils'; +import { isDistributedRegionSupported } from 'src/components/RegionSelect/RegionSelect.utils'; import { TabbedPanel } from 'src/components/TabbedPanel/TabbedPanel'; import { useFlags } from 'src/hooks/useFlags'; import { useRegionAvailabilityQuery } from 'src/queries/regions/regions'; @@ -78,6 +79,7 @@ export const PlansPanel = (props: PlansPanelProps) => { } = props; const flags = useFlags(); + const { isGeckoGAEnabled } = useIsGeckoEnabled(); const location = useLocation(); const params = getQueryParamsFromQueryString( location.search @@ -167,7 +169,7 @@ export const PlansPanel = (props: PlansPanelProps) => { planType={plan} regionsData={regionsData || []} /> - {showDistributedRegionPlanTable && ( + {showDistributedRegionPlanTable && !isGeckoGAEnabled && ( Date: Thu, 5 Sep 2024 13:31:01 -0400 Subject: [PATCH 2/3] rename ga to la --- .../src/components/RegionSelect/RegionOption.tsx | 6 +++--- .../src/components/RegionSelect/RegionSelect.tsx | 13 ++++++------- .../RegionSelect/RegionSelect.utils.tsx | 8 ++++---- .../SelectRegionPanel/SelectRegionPanel.tsx | 6 +++--- .../TransferDisplay/TransferDisplayDialog.tsx | 4 ++-- packages/manager/src/featureFlags.ts | 6 +++--- .../features/Linodes/LinodeCreatev2/Region.tsx | 15 +++++++-------- .../NetworkingSummaryPanel.tsx | 4 ++-- .../features/components/PlansPanel/PlansPanel.tsx | 4 ++-- 9 files changed, 32 insertions(+), 34 deletions(-) diff --git a/packages/manager/src/components/RegionSelect/RegionOption.tsx b/packages/manager/src/components/RegionSelect/RegionOption.tsx index 90a132f2d1c..407ce7f9306 100644 --- a/packages/manager/src/components/RegionSelect/RegionOption.tsx +++ b/packages/manager/src/components/RegionSelect/RegionOption.tsx @@ -35,7 +35,7 @@ export const RegionOption = ({ const { className, onClick } = props; const isRegionDisabled = Boolean(disabledOptions); const isRegionDisabledReason = disabledOptions?.reason; - const { isGeckoBetaEnabled, isGeckoGAEnabled } = useIsGeckoEnabled(); + const { isGeckoBetaEnabled, isGeckoLAEnabled } = useIsGeckoEnabled(); const displayDistributedRegionIcon = isGeckoBetaEnabled && region.site_type === 'distributed'; @@ -78,7 +78,7 @@ export const RegionOption = ({ - {isGeckoGAEnabled ? region.label : `${region.label} (${region.id})`} + {isGeckoLAEnabled ? region.label : `${region.label} (${region.id})`} {displayDistributedRegionIcon && (  (This region is a distributed region.) @@ -88,7 +88,7 @@ export const RegionOption = ({ {isRegionDisabledReason} )} - {isGeckoGAEnabled && `(${region.id})`} + {isGeckoLAEnabled && `(${region.id})`} {selected && } {displayDistributedRegionIcon && ( { - // @TODO Gecko: Remove adornment after GA + // @TODO Gecko: Remove adornment after LA if (isGeckoBetaEnabled && selectedRegion?.site_type === 'distributed') { return ( ); } - if (isGeckoGAEnabled && selectedRegion) { + if (isGeckoLAEnabled && selectedRegion) { return `(${selectedRegion?.id})`; } return null; - }, [isGeckoBetaEnabled, isGeckoGAEnabled, selectedRegion]); + }, [isGeckoBetaEnabled, isGeckoLAEnabled, selectedRegion]); /* * When Gecko is enabled, allow regions to be searched by ID by passing a * custom stringify function. */ - const filterOptions = isGeckoGAEnabled + const filterOptions = isGeckoLAEnabled ? createFilterOptions({ stringify: (region: Region) => `${region.label} (${region.id})`, }) @@ -133,7 +132,7 @@ export const RegionSelect = < getOptionLabel={(region) => - isGeckoGAEnabled ? region.label : `${region.label} (${region.id})` + isGeckoLAEnabled ? region.label : `${region.label} (${region.id})` } renderOption={(props, region) => ( { export const useIsGeckoEnabled = () => { const flags = useFlags(); - const isGeckoGA = flags?.gecko2?.enabled && flags.gecko2.ga; - const isGeckoBeta = flags.gecko2?.enabled && !flags.gecko2?.ga; + const isGeckoLA = flags?.gecko2?.enabled && flags.gecko2.la; + const isGeckoBeta = flags.gecko2?.enabled && !flags.gecko2?.la; const { data: regions } = useRegionsQuery(); const hasDistributedRegionCapability = regions?.some((region: Region) => region.capabilities.includes('Distributed Plans') ); - const isGeckoGAEnabled = hasDistributedRegionCapability && isGeckoGA; + const isGeckoLAEnabled = hasDistributedRegionCapability && isGeckoLA; const isGeckoBetaEnabled = hasDistributedRegionCapability && isGeckoBeta; - return { isGeckoBetaEnabled, isGeckoGAEnabled }; + return { isGeckoBetaEnabled, isGeckoLAEnabled }; }; diff --git a/packages/manager/src/components/SelectRegionPanel/SelectRegionPanel.tsx b/packages/manager/src/components/SelectRegionPanel/SelectRegionPanel.tsx index 96e0d48310a..45ccf832f73 100644 --- a/packages/manager/src/components/SelectRegionPanel/SelectRegionPanel.tsx +++ b/packages/manager/src/components/SelectRegionPanel/SelectRegionPanel.tsx @@ -71,7 +71,7 @@ export const SelectRegionPanel = (props: SelectRegionPanelProps) => { location.search ); - const { isGeckoGAEnabled } = useIsGeckoEnabled(); + const { isGeckoLAEnabled } = useIsGeckoEnabled(); const { data: regions } = useRegionsQuery(); @@ -164,7 +164,7 @@ export const SelectRegionPanel = (props: SelectRegionPanelProps) => { label={DOCS_LINK_LABEL_DC_PRICING} /> - {!isGeckoGAEnabled && ( + {!isGeckoLAEnabled && ( sendLinodeCreateDocsEvent('Speedtest')} /> @@ -181,7 +181,7 @@ export const SelectRegionPanel = (props: SelectRegionPanelProps) => { ) : null} - {isGeckoGAEnabled && isDistributedRegionSupported(params.type) ? ( + {isGeckoLAEnabled && isDistributedRegionSupported(params.type) ? ( 0 ? ` except for ${otherRegionPools}.` diff --git a/packages/manager/src/featureFlags.ts b/packages/manager/src/featureFlags.ts index cf6ecc709e4..19190b91041 100644 --- a/packages/manager/src/featureFlags.ts +++ b/packages/manager/src/featureFlags.ts @@ -54,8 +54,9 @@ interface BetaFeatureFlag extends BaseFeatureFlag { beta: boolean; } -interface GaFeatureFlag extends BaseFeatureFlag { +interface GeckoFeatureFlag extends BaseFeatureFlag { ga: boolean; + la: boolean; } interface AclpFlag { @@ -92,8 +93,7 @@ export interface Flags { databases: boolean; dbaasV2: BetaFeatureFlag; disableLargestGbPlans: boolean; - gecko: boolean; // @TODO gecko: delete this after next release - gecko2: GaFeatureFlag; + gecko2: GeckoFeatureFlag; gpuv2: gpuV2; imageServiceGen2: boolean; ipv6Sharing: boolean; diff --git a/packages/manager/src/features/Linodes/LinodeCreatev2/Region.tsx b/packages/manager/src/features/Linodes/LinodeCreatev2/Region.tsx index a52a7caf06b..fb9d1002e3a 100644 --- a/packages/manager/src/features/Linodes/LinodeCreatev2/Region.tsx +++ b/packages/manager/src/features/Linodes/LinodeCreatev2/Region.tsx @@ -86,9 +86,9 @@ export const Region = () => { const { data: regions } = useRegionsQuery(); - const { isGeckoGAEnabled } = useIsGeckoEnabled(); + const { isGeckoBetaEnabled, isGeckoLAEnabled } = useIsGeckoEnabled(); const showTwoStepRegion = - isGeckoGAEnabled && isDistributedRegionSupported(params.type ?? 'OS'); + isGeckoLAEnabled && isDistributedRegionSupported(params.type ?? 'OS'); const onChange = async (region: RegionType) => { const values = getValues(); @@ -176,15 +176,14 @@ export const Region = () => { const hideDistributedRegions = !flags.gecko2?.enabled || - flags.gecko2?.ga || !isDistributedRegionSupported(params.type ?? 'OS'); const showDistributedRegionIconHelperText = - !hideDistributedRegions && - regions?.some( - (region) => - region.site_type === 'distributed' || region.site_type === 'edge' - ); + isGeckoBetaEnabled && !hideDistributedRegions; + regions?.some( + (region) => + region.site_type === 'distributed' || region.site_type === 'edge' + ); const disabledRegions = getDisabledRegions({ regions: regions ?? [], diff --git a/packages/manager/src/features/Linodes/LinodesDetail/LinodeNetworking/NetworkingSummaryPanel/NetworkingSummaryPanel.tsx b/packages/manager/src/features/Linodes/LinodesDetail/LinodeNetworking/NetworkingSummaryPanel/NetworkingSummaryPanel.tsx index 9ec025ef01b..accb632dbe4 100644 --- a/packages/manager/src/features/Linodes/LinodesDetail/LinodeNetworking/NetworkingSummaryPanel/NetworkingSummaryPanel.tsx +++ b/packages/manager/src/features/Linodes/LinodesDetail/LinodeNetworking/NetworkingSummaryPanel/NetworkingSummaryPanel.tsx @@ -17,7 +17,7 @@ interface Props { export const LinodeNetworkingSummaryPanel = React.memo((props: Props) => { // @todo maybe move this query closer to the consuming component const { data: linode } = useLinodeQuery(props.linodeId); - const { isGeckoGAEnabled } = useIsGeckoEnabled(); + const { isGeckoLAEnabled } = useIsGeckoEnabled(); const theme = useTheme(); if (!linode) { @@ -25,7 +25,7 @@ export const LinodeNetworkingSummaryPanel = React.memo((props: Props) => { } const hideNetworkTransfer = - isGeckoGAEnabled && linode.site_type === 'distributed'; + isGeckoLAEnabled && linode.site_type === 'distributed'; return ( diff --git a/packages/manager/src/features/components/PlansPanel/PlansPanel.tsx b/packages/manager/src/features/components/PlansPanel/PlansPanel.tsx index 1e4f652b7b4..bed4a1d88fb 100644 --- a/packages/manager/src/features/components/PlansPanel/PlansPanel.tsx +++ b/packages/manager/src/features/components/PlansPanel/PlansPanel.tsx @@ -79,7 +79,7 @@ export const PlansPanel = (props: PlansPanelProps) => { } = props; const flags = useFlags(); - const { isGeckoGAEnabled } = useIsGeckoEnabled(); + const { isGeckoLAEnabled } = useIsGeckoEnabled(); const location = useLocation(); const params = getQueryParamsFromQueryString( location.search @@ -169,7 +169,7 @@ export const PlansPanel = (props: PlansPanelProps) => { planType={plan} regionsData={regionsData || []} /> - {showDistributedRegionPlanTable && !isGeckoGAEnabled && ( + {showDistributedRegionPlanTable && !isGeckoLAEnabled && ( Date: Thu, 5 Sep 2024 13:44:06 -0400 Subject: [PATCH 3/3] Added changeset: Hide Beta price notice for Gecko LA and rename Ga code references to LA --- .../manager/.changeset/pr-10896-changed-1725558246039.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/manager/.changeset/pr-10896-changed-1725558246039.md diff --git a/packages/manager/.changeset/pr-10896-changed-1725558246039.md b/packages/manager/.changeset/pr-10896-changed-1725558246039.md new file mode 100644 index 00000000000..81f660b4d34 --- /dev/null +++ b/packages/manager/.changeset/pr-10896-changed-1725558246039.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Changed +--- + +Hide Beta price notice for Gecko LA and rename Ga code references to LA ([#10896](https://github.com/linode/manager/pull/10896))