mirror of
https://github.com/Unleash/unleash.git
synced 2025-06-27 01:19:00 +02:00
chore(1-3832): clean up flag overview redesign (#10140)
Addresses and removes all leftover comments related to the flag overview redesign flag. There's four changes here: 1. Remove release plan milestone strategy and environment footer. Dangling files, no references. 2. Delete old code without references in theme.ts 3. Delete legacy playground result chip. Replace all references to it with references to the new chip. The API is the exact same and the legacy chip was just passing through everything to the new chip anyway, so nothing should change. 4. Remove a now-redundant way to supply a default
This commit is contained in:
parent
b66cff9af5
commit
366915bf71
@ -1,40 +0,0 @@
|
|||||||
import type { IFeatureEnvironmentMetrics } from 'interfaces/featureToggle';
|
|
||||||
import { FeatureMetricsStats } from 'component/feature/FeatureView/FeatureMetrics/FeatureMetricsStats/FeatureMetricsStats';
|
|
||||||
import { SectionSeparator } from '../SectionSeparator/SectionSeparator.tsx';
|
|
||||||
import { styled } from '@mui/material';
|
|
||||||
|
|
||||||
const StyledLabel = styled('span')(({ theme }) => ({
|
|
||||||
background: theme.palette.envAccordion.expanded,
|
|
||||||
padding: theme.spacing(0, 2),
|
|
||||||
}));
|
|
||||||
|
|
||||||
interface IEnvironmentFooterProps {
|
|
||||||
environmentMetric?: IFeatureEnvironmentMetrics;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated remove with `featureOverviewRedesign` flag
|
|
||||||
*/
|
|
||||||
export const EnvironmentFooter = ({
|
|
||||||
environmentMetric,
|
|
||||||
}: IEnvironmentFooterProps) => {
|
|
||||||
if (!environmentMetric) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<SectionSeparator>
|
|
||||||
<StyledLabel>Feature flag exposure</StyledLabel>
|
|
||||||
</SectionSeparator>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<FeatureMetricsStats
|
|
||||||
totalYes={environmentMetric.yes}
|
|
||||||
totalNo={environmentMetric.no}
|
|
||||||
hoursBack={1}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
};
|
|
@ -16,7 +16,7 @@ import FeatureOverviewEnvironmentMetrics from './EnvironmentHeader/FeatureOvervi
|
|||||||
import { FeatureOverviewEnvironmentToggle } from './EnvironmentHeader/FeatureOverviewEnvironmentToggle/FeatureOverviewEnvironmentToggle.tsx';
|
import { FeatureOverviewEnvironmentToggle } from './EnvironmentHeader/FeatureOverviewEnvironmentToggle/FeatureOverviewEnvironmentToggle.tsx';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import type { IReleasePlan } from 'interfaces/releasePlans';
|
import type { IReleasePlan } from 'interfaces/releasePlans';
|
||||||
import { EnvironmentAccordionBody as NewEnvironmentAccordionBody } from './EnvironmentAccordionBody/EnvironmentAccordionBody.tsx';
|
import { EnvironmentAccordionBody } from './EnvironmentAccordionBody/EnvironmentAccordionBody.tsx';
|
||||||
import { Box } from '@mui/material';
|
import { Box } from '@mui/material';
|
||||||
import { ReleaseTemplatesFeedback } from 'component/feature/FeatureStrategy/FeatureStrategyMenu/ReleaseTemplatesFeedback/ReleaseTemplatesFeedback';
|
import { ReleaseTemplatesFeedback } from 'component/feature/FeatureStrategy/FeatureStrategyMenu/ReleaseTemplatesFeedback/ReleaseTemplatesFeedback';
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ export const FeatureOverviewEnvironment = ({
|
|||||||
</EnvironmentHeader>
|
</EnvironmentHeader>
|
||||||
<NewStyledAccordionDetails>
|
<NewStyledAccordionDetails>
|
||||||
<StyledEnvironmentAccordionContainer>
|
<StyledEnvironmentAccordionContainer>
|
||||||
<NewEnvironmentAccordionBody
|
<EnvironmentAccordionBody
|
||||||
featureEnvironment={environment}
|
featureEnvironment={environment}
|
||||||
isDisabled={!environment.enabled}
|
isDisabled={!environment.enabled}
|
||||||
otherEnvironments={otherEnvironments}
|
otherEnvironments={otherEnvironments}
|
||||||
|
@ -1,16 +1,10 @@
|
|||||||
import { useLocalStorageState } from 'hooks/useLocalStorageState';
|
import { useLocalStorageState } from 'hooks/useLocalStorageState';
|
||||||
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
|
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
|
||||||
import { createLocalStorage } from 'utils/createLocalStorage';
|
|
||||||
|
|
||||||
// Reading legacy value will be safely refactored out in a next version - related to `flagOverviewRedesign` flag
|
|
||||||
const { value: legacyStoreValue } = createLocalStorage<{
|
|
||||||
hiddenEnvironments?: Array<string>;
|
|
||||||
}>('global:v1', {});
|
|
||||||
|
|
||||||
export const useEnvironmentVisibility = () => {
|
export const useEnvironmentVisibility = () => {
|
||||||
const [value, setValue] = useLocalStorageState<Array<string>>(
|
const [value, setValue] = useLocalStorageState<Array<string>>(
|
||||||
'environment-visibiilty',
|
'environment-visibiilty',
|
||||||
legacyStoreValue?.hiddenEnvironments || [],
|
[],
|
||||||
);
|
);
|
||||||
const { trackEvent } = usePlausibleTracker();
|
const { trackEvent } = usePlausibleTracker();
|
||||||
|
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
// deprecated; remove with `flagOverviewRedesign` flag
|
|
||||||
import { Box, styled } from '@mui/material';
|
|
||||||
import { StrategyExecution } from '../../FeatureOverviewEnvironments/FeatureOverviewEnvironment/EnvironmentAccordionBody/StrategyDraggableItem/StrategyItem/StrategyExecution/StrategyExecution.tsx';
|
|
||||||
import { VariantsSplitPreview } from 'component/common/VariantsSplitPreview/VariantsSplitPreview';
|
|
||||||
import {
|
|
||||||
formatStrategyName,
|
|
||||||
getFeatureStrategyIcon,
|
|
||||||
} from 'utils/strategyNames';
|
|
||||||
import type { IFeatureStrategy } from 'interfaces/strategy';
|
|
||||||
|
|
||||||
const StyledStrategy = styled('div')(({ theme }) => ({
|
|
||||||
background: theme.palette.background.paper,
|
|
||||||
border: `1px solid ${theme.palette.divider}`,
|
|
||||||
borderRadius: theme.shape.borderRadiusMedium,
|
|
||||||
padding: theme.spacing(2),
|
|
||||||
}));
|
|
||||||
|
|
||||||
const StyledHeader = styled('div')(({ theme }) => ({
|
|
||||||
display: 'flex',
|
|
||||||
gap: theme.spacing(1),
|
|
||||||
alignItems: 'center',
|
|
||||||
color: theme.palette.text.primary,
|
|
||||||
'& > svg': {
|
|
||||||
fill: theme.palette.action.disabled,
|
|
||||||
},
|
|
||||||
marginBottom: theme.spacing(1),
|
|
||||||
}));
|
|
||||||
|
|
||||||
interface IReleasePlanMilestoneStrategyProps {
|
|
||||||
strategy: IFeatureStrategy;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const ReleasePlanMilestoneStrategy = ({
|
|
||||||
strategy,
|
|
||||||
}: IReleasePlanMilestoneStrategyProps) => {
|
|
||||||
const Icon = getFeatureStrategyIcon(strategy.strategyName);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<StyledStrategy>
|
|
||||||
<StyledHeader>
|
|
||||||
<Icon />
|
|
||||||
{`${formatStrategyName(String(strategy.strategyName))}${strategy.title ? `: ${strategy.title}` : ''}`}
|
|
||||||
</StyledHeader>
|
|
||||||
<StrategyExecution strategy={strategy} displayGroupId />
|
|
||||||
{strategy.variants &&
|
|
||||||
strategy.variants.length > 0 &&
|
|
||||||
(strategy.disabled ? (
|
|
||||||
<Box sx={{ opacity: '0.5' }}>
|
|
||||||
<VariantsSplitPreview variants={strategy.variants} />
|
|
||||||
</Box>
|
|
||||||
) : (
|
|
||||||
<VariantsSplitPreview variants={strategy.variants} />
|
|
||||||
))}
|
|
||||||
</StyledStrategy>
|
|
||||||
);
|
|
||||||
};
|
|
@ -8,12 +8,12 @@ import {
|
|||||||
useTheme,
|
useTheme,
|
||||||
} from '@mui/material';
|
} from '@mui/material';
|
||||||
import { flexRow } from '../../../../../themes/themeStyles.ts';
|
import { flexRow } from '../../../../../themes/themeStyles.ts';
|
||||||
import { PlaygroundResultChip } from '../../PlaygroundResultsTable/PlaygroundResultChip/LegacyPlaygroundResultChip.tsx';
|
|
||||||
import InfoOutlined from '@mui/icons-material/InfoOutlined';
|
import InfoOutlined from '@mui/icons-material/InfoOutlined';
|
||||||
import type React from 'react';
|
import type React from 'react';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import type { AdvancedPlaygroundEnvironmentFeatureSchema } from 'openapi';
|
import type { AdvancedPlaygroundEnvironmentFeatureSchema } from 'openapi';
|
||||||
import { PlaygroundEnvironmentTable } from '../../PlaygroundEnvironmentTable/PlaygroundEnvironmentTable.tsx';
|
import { PlaygroundEnvironmentTable } from '../../PlaygroundEnvironmentTable/PlaygroundEnvironmentTable.tsx';
|
||||||
|
import { PlaygroundResultChip } from '../../PlaygroundResultsTable/PlaygroundResultChip/PlaygroundResultChip.tsx';
|
||||||
|
|
||||||
const StyledContainer = styled(
|
const StyledContainer = styled(
|
||||||
'div',
|
'div',
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import type { PlaygroundFeatureSchema, PlaygroundRequestSchema } from 'openapi';
|
import type { PlaygroundFeatureSchema, PlaygroundRequestSchema } from 'openapi';
|
||||||
import { Alert, Typography, useTheme, styled, IconButton } from '@mui/material';
|
import { Alert, Typography, useTheme, styled, IconButton } from '@mui/material';
|
||||||
import { PlaygroundResultChip } from '../../PlaygroundResultChip/LegacyPlaygroundResultChip.tsx';
|
|
||||||
import CloseOutlined from '@mui/icons-material/CloseOutlined';
|
import CloseOutlined from '@mui/icons-material/CloseOutlined';
|
||||||
import type React from 'react';
|
import type React from 'react';
|
||||||
import {
|
import {
|
||||||
@ -8,6 +7,7 @@ import {
|
|||||||
hasCustomStrategies,
|
hasCustomStrategies,
|
||||||
hasOnlyCustomStrategies,
|
hasOnlyCustomStrategies,
|
||||||
} from './helpers.ts';
|
} from './helpers.ts';
|
||||||
|
import { PlaygroundResultChip } from '../../PlaygroundResultChip/PlaygroundResultChip.tsx';
|
||||||
|
|
||||||
const HeaderRow = styled('div')({
|
const HeaderRow = styled('div')({
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import type { PlaygroundFeatureSchema, PlaygroundRequestSchema } from 'openapi';
|
import type { PlaygroundFeatureSchema, PlaygroundRequestSchema } from 'openapi';
|
||||||
import { Alert, IconButton, Typography, useTheme, styled } from '@mui/material';
|
import { Alert, IconButton, Typography, useTheme, styled } from '@mui/material';
|
||||||
import { PlaygroundResultChip } from '../../PlaygroundResultChip/LegacyPlaygroundResultChip.tsx';
|
|
||||||
import CloseOutlined from '@mui/icons-material/CloseOutlined';
|
import CloseOutlined from '@mui/icons-material/CloseOutlined';
|
||||||
import type React from 'react';
|
import type React from 'react';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
@ -9,6 +8,7 @@ import {
|
|||||||
hasCustomStrategies,
|
hasCustomStrategies,
|
||||||
hasOnlyCustomStrategies,
|
hasOnlyCustomStrategies,
|
||||||
} from './helpers.ts';
|
} from './helpers.ts';
|
||||||
|
import { PlaygroundResultChip } from '../../PlaygroundResultChip/PlaygroundResultChip.tsx';
|
||||||
|
|
||||||
const StyledDivWrapper = styled('div')({
|
const StyledDivWrapper = styled('div')({
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Box, styled } from '@mui/material';
|
import { Box, styled } from '@mui/material';
|
||||||
import { PlaygroundResultChip } from '../PlaygroundResultChip/LegacyPlaygroundResultChip.tsx';
|
|
||||||
import type { PlaygroundFeatureSchema } from 'openapi';
|
import type { PlaygroundFeatureSchema } from 'openapi';
|
||||||
|
import { PlaygroundResultChip } from '../PlaygroundResultChip/PlaygroundResultChip.tsx';
|
||||||
|
|
||||||
interface IFeatureStatusCellProps {
|
interface IFeatureStatusCellProps {
|
||||||
feature: PlaygroundFeatureSchema;
|
feature: PlaygroundFeatureSchema;
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
import type { VFC } from 'react';
|
|
||||||
import { PlaygroundResultChip as NewPlaygroundResultChip } from './PlaygroundResultChip.tsx';
|
|
||||||
|
|
||||||
interface IResultChipProps {
|
|
||||||
enabled: boolean | 'unevaluated' | 'unknown';
|
|
||||||
label: string;
|
|
||||||
// Result icon - defaults to true
|
|
||||||
showIcon?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated remove with 'flagOverviewRedesign' flag. This pollutes a lot of places in the codebase 😞
|
|
||||||
*/
|
|
||||||
export const PlaygroundResultChip: VFC<IResultChipProps> = ({
|
|
||||||
enabled,
|
|
||||||
label,
|
|
||||||
showIcon = true,
|
|
||||||
}) => (
|
|
||||||
<NewPlaygroundResultChip
|
|
||||||
enabled={enabled}
|
|
||||||
label={label}
|
|
||||||
showIcon={showIcon}
|
|
||||||
/>
|
|
||||||
);
|
|
@ -194,14 +194,6 @@ const theme = {
|
|||||||
primary: '#302E42',
|
primary: '#302E42',
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* For Environment Accordion
|
|
||||||
*/
|
|
||||||
envAccordion: {
|
|
||||||
disabled: '#2B2A3C',
|
|
||||||
expanded: '#1A1924',
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MUI grey colors
|
* MUI grey colors
|
||||||
*/
|
*/
|
||||||
|
@ -250,16 +250,6 @@ const theme = {
|
|||||||
primary: colors.purple[100],
|
primary: colors.purple[100],
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* For Environment Accordion.
|
|
||||||
* @deprecated Use `elevation1` for `disabled` and `elevation2` for `expanded` instead.
|
|
||||||
* remove with the flagOverviewRedesign flag
|
|
||||||
*/
|
|
||||||
envAccordion: {
|
|
||||||
disabled: colors.grey[100],
|
|
||||||
expanded: colors.grey[200],
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MUI grey colors
|
* MUI grey colors
|
||||||
*/
|
*/
|
||||||
|
@ -129,14 +129,6 @@ declare module '@mui/material/styles' {
|
|||||||
*/
|
*/
|
||||||
links: string;
|
links: string;
|
||||||
|
|
||||||
/**
|
|
||||||
* For Environment Accordion
|
|
||||||
*/
|
|
||||||
envAccordion: {
|
|
||||||
disabled: string;
|
|
||||||
expanded: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Variants, percentage split in strategies
|
* Variants, percentage split in strategies
|
||||||
**/
|
**/
|
||||||
|
Loading…
Reference in New Issue
Block a user