diff --git a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md index 7c288821375..193edc72016 100644 --- a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md +++ b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @@ -28,7 +28,6 @@ For more information about feature release stages, refer to [Release life cycle | `featureHighlights` | Highlight Grafana Enterprise features | | | `correlations` | Correlations page | Yes | | `exploreContentOutline` | Content outline sidebar | Yes | -| `returnToPrevious` | Enables the return to previous context functionality | Yes | | `cloudWatchCrossAccountQuerying` | Enables cross-account querying in CloudWatch datasources | Yes | | `nestedFolders` | Enable folder nesting | Yes | | `nestedFolderPicker` | Enables the new folder picker to work with nested folders. Requires the nestedFolders feature toggle | Yes | diff --git a/e2e/various-suite/return-to-previous.spec.ts b/e2e/various-suite/return-to-previous.spec.ts index bc47efc5c57..395c233d76a 100644 --- a/e2e/various-suite/return-to-previous.spec.ts +++ b/e2e/various-suite/return-to-previous.spec.ts @@ -3,9 +3,6 @@ import { e2e } from '../utils'; describe('ReturnToPrevious button', () => { beforeEach(() => { e2e.flows.login(Cypress.env('USERNAME'), Cypress.env('PASSWORD')); - cy.window().then((win) => { - win.localStorage.setItem('grafana.featureToggles', 'returnToPrevious=1'); - }); cy.visit('/alerting/list'); e2e.components.AlertRules.groupToggle().first().click(); diff --git a/packages/grafana-data/src/types/featureToggles.gen.ts b/packages/grafana-data/src/types/featureToggles.gen.ts index 1074b64cd1b..2f78d31a40e 100644 --- a/packages/grafana-data/src/types/featureToggles.gen.ts +++ b/packages/grafana-data/src/types/featureToggles.gen.ts @@ -44,7 +44,6 @@ export interface FeatureToggles { disableSecretsCompatibility?: boolean; logRequestsInstrumentedAsUnknown?: boolean; topnav?: boolean; - returnToPrevious?: boolean; grpcServer?: boolean; unifiedStorage?: boolean; dualWritePlaylistsMode2?: boolean; diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index 19f25677309..3779a22cf4b 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -206,14 +206,6 @@ var ( Expression: "true", // enabled by default Owner: grafanaFrontendPlatformSquad, }, - { - Name: "returnToPrevious", - Description: "Enables the return to previous context functionality", - Stage: FeatureStageGeneralAvailability, - FrontendOnly: true, - Expression: "true", // enabled by default - Owner: grafanaFrontendPlatformSquad, - }, { Name: "grpcServer", Description: "Run the GRPC server", diff --git a/pkg/services/featuremgmt/toggles_gen.csv b/pkg/services/featuremgmt/toggles_gen.csv index 6a71506c26b..4b830d9866b 100644 --- a/pkg/services/featuremgmt/toggles_gen.csv +++ b/pkg/services/featuremgmt/toggles_gen.csv @@ -25,7 +25,6 @@ scenes,experimental,@grafana/dashboards-squad,false,false,true disableSecretsCompatibility,experimental,@grafana/hosted-grafana-team,false,true,false logRequestsInstrumentedAsUnknown,experimental,@grafana/hosted-grafana-team,false,false,false topnav,deprecated,@grafana/grafana-frontend-platform,false,false,false -returnToPrevious,GA,@grafana/grafana-frontend-platform,false,false,true grpcServer,preview,@grafana/grafana-app-platform-squad,false,false,false unifiedStorage,experimental,@grafana/grafana-app-platform-squad,false,true,false dualWritePlaylistsMode2,experimental,@grafana/search-and-storage,false,false,false diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index 174f0332b7e..8860ce21bde 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -111,10 +111,6 @@ const ( // Enables topnav support in external plugins. The new Grafana navigation cannot be disabled. FlagTopnav = "topnav" - // FlagReturnToPrevious - // Enables the return to previous context functionality - FlagReturnToPrevious = "returnToPrevious" - // FlagGrpcServer // Run the GRPC server FlagGrpcServer = "grpcServer" diff --git a/pkg/services/featuremgmt/toggles_gen.json b/pkg/services/featuremgmt/toggles_gen.json index 02a2f7175c8..4665163f218 100644 --- a/pkg/services/featuremgmt/toggles_gen.json +++ b/pkg/services/featuremgmt/toggles_gen.json @@ -60,7 +60,8 @@ "metadata": { "name": "returnToPrevious", "resourceVersion": "1716448665531", - "creationTimestamp": "2024-05-23T07:17:45Z" + "creationTimestamp": "2024-05-23T07:17:45Z", + "deletionTimestamp": "2024-05-27T09:59:33Z" }, "spec": { "description": "Enables the return to previous context functionality", diff --git a/public/app/core/components/AppChrome/AppChrome.tsx b/public/app/core/components/AppChrome/AppChrome.tsx index dc7492db630..6dcfe645b03 100644 --- a/public/app/core/components/AppChrome/AppChrome.tsx +++ b/public/app/core/components/AppChrome/AppChrome.tsx @@ -5,7 +5,6 @@ import React, { PropsWithChildren, useEffect } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { locationSearchToObject, locationService } from '@grafana/runtime'; import { useStyles2, LinkButton, useTheme2 } from '@grafana/ui'; -import config from 'app/core/config'; import { useGrafana } from 'app/core/context/GrafanaContext'; import { useMediaQueryChange } from 'app/core/hooks/useMediaQueryChange'; import store from 'app/core/store'; @@ -55,8 +54,7 @@ export function AppChrome({ children }: Props) { const { pathname, search } = locationService.getLocation(); const url = pathname + search; - const shouldShowReturnToPrevious = - config.featureToggles.returnToPrevious && state.returnToPrevious && url !== state.returnToPrevious.href; + const shouldShowReturnToPrevious = state.returnToPrevious && url !== state.returnToPrevious.href; // Clear returnToPrevious when the page is manually navigated to useEffect(() => { diff --git a/public/app/core/components/AppChrome/AppChromeService.tsx b/public/app/core/components/AppChrome/AppChromeService.tsx index 647e21bb638..7a062e1152f 100644 --- a/public/app/core/components/AppChrome/AppChromeService.tsx +++ b/public/app/core/components/AppChrome/AppChromeService.tsx @@ -90,10 +90,6 @@ export class AppChromeService { } public setReturnToPrevious = (returnToPrevious: ReturnToPreviousProps) => { - const isReturnToPreviousEnabled = config.featureToggles.returnToPrevious; - if (!isReturnToPreviousEnabled) { - return; - } const previousPage = this.state.getValue().returnToPrevious; reportInteraction('grafana_return_to_previous_button_created', { page: returnToPrevious.href, @@ -105,10 +101,6 @@ export class AppChromeService { }; public clearReturnToPrevious = (interactionAction: 'clicked' | 'dismissed' | 'auto_dismissed') => { - const isReturnToPreviousEnabled = config.featureToggles.returnToPrevious; - if (!isReturnToPreviousEnabled) { - return; - } const existingRtp = this.state.getValue().returnToPrevious; if (existingRtp) { reportInteraction('grafana_return_to_previous_button_dismissed', { diff --git a/public/app/core/components/AppChrome/ReturnToPrevious/ReturnToPrevious.test.tsx b/public/app/core/components/AppChrome/ReturnToPrevious/ReturnToPrevious.test.tsx index 0f9b5d62c94..b016e4ba626 100644 --- a/public/app/core/components/AppChrome/ReturnToPrevious/ReturnToPrevious.test.tsx +++ b/public/app/core/components/AppChrome/ReturnToPrevious/ReturnToPrevious.test.tsx @@ -4,7 +4,7 @@ import React from 'react'; import { TestProvider } from 'test/helpers/TestProvider'; import { getGrafanaContextMock } from 'test/mocks/getGrafanaContextMock'; -import { config, reportInteraction } from '@grafana/runtime'; +import { reportInteraction } from '@grafana/runtime'; import { ReturnToPrevious, ReturnToPreviousProps } from './ReturnToPrevious'; @@ -36,14 +36,9 @@ const setup = () => { }; describe('ReturnToPrevious', () => { - beforeEach(() => { - /* We enabled the feature toggle */ - config.featureToggles.returnToPrevious = true; - }); afterEach(() => { window.sessionStorage.clear(); jest.resetAllMocks(); - config.featureToggles.returnToPrevious = false; }); it('should render component', async () => { setup(); diff --git a/public/app/features/alerting/unified/components/rules/RuleDetailsButtons.tsx b/public/app/features/alerting/unified/components/rules/RuleDetailsButtons.tsx index 2008d401a77..71184ae8b0f 100644 --- a/public/app/features/alerting/unified/components/rules/RuleDetailsButtons.tsx +++ b/public/app/features/alerting/unified/components/rules/RuleDetailsButtons.tsx @@ -1,7 +1,7 @@ import React, { Fragment } from 'react'; import { textUtil } from '@grafana/data'; -import { config, useReturnToPrevious } from '@grafana/runtime'; +import { useReturnToPrevious } from '@grafana/runtime'; import { Button, LinkButton, Stack } from '@grafana/ui'; import { CombinedRule, RulesSource } from 'app/types/unified-alerting'; @@ -68,7 +68,6 @@ const RuleDetailsButtons = ({ rule, rulesSource }: Props) => { } if (rule.annotations[Annotation.dashboardUID]) { const dashboardUID = rule.annotations[Annotation.dashboardUID]; - const isReturnToPreviousEnabled = config.featureToggles.returnToPrevious; if (dashboardUID) { buttons.push( { key="dashboard" variant="primary" icon="apps" - target={isReturnToPreviousEnabled ? undefined : '_blank'} href={`d/${encodeURIComponent(dashboardUID)}`} onClick={() => { setReturnToPrevious(rule.name); @@ -93,7 +91,6 @@ const RuleDetailsButtons = ({ rule, rulesSource }: Props) => { key="panel" variant="primary" icon="apps" - target={isReturnToPreviousEnabled ? undefined : '_blank'} href={`d/${encodeURIComponent(dashboardUID)}?viewPanel=${encodeURIComponent(panelId)}`} onClick={() => { setReturnToPrevious(rule.name);