Просмотр исходного кода

chore(metrics): remove rollout flag (#72086)

Ogi 9 месяцев назад
Родитель
Сommit
2ba0aa53a4

+ 3 - 5
static/app/components/sidebar/index.tsx

@@ -48,7 +48,7 @@ import type {Organization} from 'sentry/types/organization';
 import {isDemoWalkthrough} from 'sentry/utils/demoMode';
 import {getDiscoverLandingUrl} from 'sentry/utils/discover/urls';
 import {isActiveSuperuser} from 'sentry/utils/isActiveSuperuser';
-import {canSeeMetricsPage, hasRolledOutMetrics} from 'sentry/utils/metrics/features';
+import {hasCustomMetrics} from 'sentry/utils/metrics/features';
 import theme from 'sentry/utils/theme';
 import {useLocation} from 'sentry/utils/useLocation';
 import useMedia from 'sentry/utils/useMedia';
@@ -539,9 +539,8 @@ function Sidebar() {
   );
 
   const metricsPath = `/organizations/${organization?.slug}/metrics/`;
-  const isNewFeatureBadge = organization && hasRolledOutMetrics(organization);
 
-  const metrics = hasOrganization && canSeeMetricsPage(organization) && (
+  const metrics = hasOrganization && hasCustomMetrics(organization) && (
     <SidebarItem
       {...sidebarItemProps}
       icon={hasNewSidebarHierarchy ? <SubitemDot collapsed /> : <IconGraph />}
@@ -549,8 +548,7 @@ function Sidebar() {
       to={metricsPath}
       search={location.pathname === normalizeUrl(metricsPath) ? location.search : ''}
       id="metrics"
-      isBeta={!isNewFeatureBadge}
-      isNew={!!isNewFeatureBadge}
+      isBeta
     />
   );
 

+ 0 - 8
static/app/utils/metrics/features.tsx

@@ -16,14 +16,6 @@ export function hasCustomMetrics(organization: Organization) {
   );
 }
 
-export function hasRolledOutMetrics(organization: Organization) {
-  return organization.features.includes('metrics-launch-rollout');
-}
-
-export function canSeeMetricsPage(organization: Organization) {
-  return hasCustomMetrics(organization) || hasRolledOutMetrics(organization);
-}
-
 export function hasMetricAlertFeature(organization: Organization) {
   return organization.features.includes('organizations:incidents');
 }

+ 2 - 2
static/app/views/dashboards/addWidget.tsx

@@ -3,6 +3,7 @@ import {useSortable} from '@dnd-kit/sortable';
 import styled from '@emotion/styled';
 
 import Feature from 'sentry/components/acl/feature';
+import FeatureBadge from 'sentry/components/badge/featureBadge';
 import type {ButtonProps} from 'sentry/components/button';
 import {Button} from 'sentry/components/button';
 import DropdownButton from 'sentry/components/dropdownButton';
@@ -16,7 +17,6 @@ import {trackAnalytics} from 'sentry/utils/analytics';
 import {hasCustomMetrics} from 'sentry/utils/metrics/features';
 import useOrganization from 'sentry/utils/useOrganization';
 import {DataSet} from 'sentry/views/dashboards/widgetBuilder/utils';
-import {MetricsFeatureBadge} from 'sentry/views/metrics/metricFeatureBadge';
 
 import {DisplayType} from './types';
 import WidgetWrapper from './widgetWrapper';
@@ -142,7 +142,7 @@ export function AddWidgetButton({onAddWidget, ...buttonProps}: Props & ButtonPro
         key: DataSet.METRICS,
         label: t('Custom Metrics'),
         onAction: () => handleAction(DataSet.METRICS),
-        trailingItems: <MetricsFeatureBadge />,
+        trailingItems: <FeatureBadge type="beta" />,
       });
     }
 

+ 0 - 11
static/app/views/metrics/billing.tsx

@@ -1,11 +0,0 @@
-import HookOrDefault from 'sentry/components/hookOrDefault';
-
-export const MetricsSubscriptionAlert = HookOrDefault({
-  hookName: 'component:metrics-subscription-alert',
-  defaultComponent: () => null,
-});
-
-export const MetricsOnboardingPanelPrimaryAction = HookOrDefault({
-  hookName: 'component:metrics-onboarding-panel-primary-action',
-  defaultComponent: ({children}) => children,
-});

+ 27 - 31
static/app/views/metrics/layout.tsx

@@ -7,6 +7,7 @@ import emptyStateImg from 'sentry-images/spot/custom-metrics-empty-state.svg';
 
 import Alert from 'sentry/components/alert';
 import GuideAnchor from 'sentry/components/assistant/guideAnchor';
+import FeatureBadge from 'sentry/components/badge/featureBadge';
 import Banner from 'sentry/components/banner';
 import {Button} from 'sentry/components/button';
 import ButtonBar from 'sentry/components/buttonBar';
@@ -23,21 +24,16 @@ import {t} from 'sentry/locale';
 import {space} from 'sentry/styles/space';
 import {trackAnalytics} from 'sentry/utils/analytics';
 import {METRICS_DOCS_URL} from 'sentry/utils/metrics/constants';
-import {canSeeMetricsPage} from 'sentry/utils/metrics/features';
+import {hasCustomMetrics} from 'sentry/utils/metrics/features';
 import useDismissAlert from 'sentry/utils/useDismissAlert';
 import {useLocalStorageState} from 'sentry/utils/useLocalStorageState';
 import useMedia from 'sentry/utils/useMedia';
 import useOrganization from 'sentry/utils/useOrganization';
 import usePageFilters from 'sentry/utils/usePageFilters';
 import BackgroundSpace from 'sentry/views/discover/backgroundSpace';
-import {
-  MetricsOnboardingPanelPrimaryAction,
-  MetricsSubscriptionAlert,
-} from 'sentry/views/metrics/billing';
 import {useMetricsContext} from 'sentry/views/metrics/context';
 import {useMetricsOnboardingSidebar} from 'sentry/views/metrics/ddmOnboarding/useMetricsOnboardingSidebar';
 import {IntervalSelect} from 'sentry/views/metrics/intervalSelect';
-import {MetricsFeatureBadge} from 'sentry/views/metrics/metricFeatureBadge';
 import {PageHeaderActions} from 'sentry/views/metrics/pageHeaderActions';
 import {Queries} from 'sentry/views/metrics/queries';
 import {MetricScratchpad} from 'sentry/views/metrics/scratchpad';
@@ -47,8 +43,11 @@ export const MetricsLayout = memo(() => {
   const organization = useOrganization();
   const pageFilters = usePageFilters();
   const selectedProjects = pageFilters.selection.projects.join();
-  const {hasCustomMetrics, hasPerformanceMetrics, isHasMetricsLoading} =
-    useMetricsContext();
+  const {
+    hasCustomMetrics: hasSentCustomMetrics,
+    hasPerformanceMetrics,
+    isHasMetricsLoading,
+  } = useMetricsContext();
   const {activateSidebar} = useMetricsOnboardingSidebar();
   const {dismiss: emptyStateDismiss, isDismissed: isEmptyStateDismissed} =
     useDismissAlert({
@@ -58,7 +57,7 @@ export const MetricsLayout = memo(() => {
   const isSmallBanner = useMedia(`(max-width: ${theme.breakpoints.medium})`);
   const [isBannerDismissed] = useLocalStorageState('metrics-banner-dismissed', false);
 
-  const showOnboardingPanel = !isEmptyStateDismissed && !hasCustomMetrics;
+  const showOnboardingPanel = !isEmptyStateDismissed && !hasSentCustomMetrics;
 
   const addCustomMetric = useCallback(
     (referrer: 'header' | 'onboarding_panel' | 'banner') => {
@@ -84,7 +83,7 @@ export const MetricsLayout = memo(() => {
     emptyStateDismiss();
   }, [emptyStateDismiss, organization]);
 
-  if (!canSeeMetricsPage(organization)) {
+  if (!hasCustomMetrics(organization)) {
     return (
       <Layout.Page withPadding>
         <Alert type="warning">{t("You don't have access to this feature")}</Alert>
@@ -94,7 +93,6 @@ export const MetricsLayout = memo(() => {
 
   return (
     <Fragment>
-      <MetricsSubscriptionAlert organization={organization} />
       <Layout.Header>
         <Layout.HeaderContent>
           <Layout.Title>
@@ -105,14 +103,14 @@ export const MetricsLayout = memo(() => {
                 'Metrics help you track and visualize the data points you care about, making it easier to monitor your application health and identify issues.'
               )}
             />
-            <MetricsFeatureBadge />
+            <FeatureBadge type="beta" />
           </Layout.Title>
         </Layout.HeaderContent>
         <Layout.HeaderActions>
           {!showOnboardingPanel ? (
             <PageHeaderActions
               showCustomMetricButton={
-                hasCustomMetrics || (isEmptyStateDismissed && isBannerDismissed)
+                hasSentCustomMetrics || (isEmptyStateDismissed && isBannerDismissed)
               }
               addCustomMetric={() => addCustomMetric('header')}
             />
@@ -122,7 +120,7 @@ export const MetricsLayout = memo(() => {
       <Layout.Body>
         <FloatingFeedbackWidget />
         <Layout.Main fullWidth>
-          {isEmptyStateDismissed && !hasCustomMetrics && (
+          {isEmptyStateDismissed && !hasSentCustomMetrics && (
             <Banner
               title={t('Custom Metrics')}
               subtitle={t(
@@ -166,24 +164,22 @@ export const MetricsLayout = memo(() => {
                   'Create custom metrics to track and visualize the data points you care about over time, like processing time, checkout conversion rate, or user signups. See correlated trace exemplars and metrics if used together with Performance Monitoring.'
                 )}
               </p>
-              <MetricsOnboardingPanelPrimaryAction organization={organization}>
-                <ButtonList gap={1}>
-                  <Button
-                    priority="primary"
-                    onClick={() => addCustomMetric('onboarding_panel')}
-                  >
-                    {t('Set Up Custom Metric')}
+              <ButtonList gap={1}>
+                <Button
+                  priority="primary"
+                  onClick={() => addCustomMetric('onboarding_panel')}
+                >
+                  {t('Set Up Custom Metric')}
+                </Button>
+                <Button href={METRICS_DOCS_URL} external>
+                  {t('Read Docs')}
+                </Button>
+                {hasPerformanceMetrics && (
+                  <Button onClick={viewPerformanceMetrics}>
+                    {t('View Performance Metrics')}
                   </Button>
-                  <Button href={METRICS_DOCS_URL} external>
-                    {t('Read Docs')}
-                  </Button>
-                  {hasPerformanceMetrics && (
-                    <Button onClick={viewPerformanceMetrics}>
-                      {t('View Performance Metrics')}
-                    </Button>
-                  )}
-                </ButtonList>
-              </MetricsOnboardingPanelPrimaryAction>
+                )}
+              </ButtonList>
             </OnboardingPanel>
           )}
         </Layout.Main>

+ 0 - 14
static/app/views/metrics/metricFeatureBadge.tsx

@@ -1,14 +0,0 @@
-import FeatureBadge from 'sentry/components/badge/featureBadge';
-import useOrganization from 'sentry/utils/useOrganization';
-
-import {hasRolledOutMetrics} from '../../utils/metrics/features';
-
-export function MetricsFeatureBadge() {
-  const organization = useOrganization();
-
-  if (hasRolledOutMetrics(organization)) {
-    return <FeatureBadge type="new" />;
-  }
-
-  return <FeatureBadge type="beta" />;
-}

+ 2 - 5
static/app/views/metrics/optInModal.tsx

@@ -11,7 +11,6 @@ import {t} from 'sentry/locale';
 import {space} from 'sentry/styles/space';
 import type {Organization} from 'sentry/types/organization';
 import {trackAnalytics} from 'sentry/utils/analytics';
-import {hasRolledOutMetrics} from 'sentry/utils/metrics/features';
 import {useLocalStorageState} from 'sentry/utils/useLocalStorageState';
 import useOrganization from 'sentry/utils/useOrganization';
 import {OrganizationContext} from 'sentry/views/organizationContext';
@@ -23,11 +22,9 @@ export function useOptInModal() {
     false
   );
 
-  if (dismissedModal || hasRolledOutMetrics(organization)) {
-    return;
+  if (!dismissedModal) {
+    openMetricsOptInModal(organization, setDismissedModal);
   }
-
-  openMetricsOptInModal(organization, setDismissedModal);
 }
 
 function openMetricsOptInModal(

+ 2 - 2
static/app/views/settings/project/navigationConfiguration.tsx

@@ -1,7 +1,7 @@
 import {t} from 'sentry/locale';
 import type {Organization} from 'sentry/types/organization';
 import type {Project} from 'sentry/types/project';
-import {canSeeMetricsPage} from 'sentry/utils/metrics/features';
+import {hasCustomMetrics} from 'sentry/utils/metrics/features';
 import type {NavigationSection} from 'sentry/views/settings/types';
 
 type ConfigParams = {
@@ -118,7 +118,7 @@ export default function getConfiguration({
         {
           path: `${pathPrefix}/metrics/`,
           title: t('Metrics'),
-          show: () => !!(organization && canSeeMetricsPage(organization)),
+          show: () => !!(organization && hasCustomMetrics(organization)),
         },
         {
           path: `${pathPrefix}/replays/`,