InviteUser: Remove experimental feature toggle (#113914)

This commit is contained in:
Ezequiel Victorero
2025-11-14 12:33:26 -03:00
committed by GitHub
parent 3e9662d910
commit a2c5d6e686
8 changed files with 3 additions and 35 deletions
-4
View File
@@ -903,10 +903,6 @@ export interface FeatureToggles {
*/
infinityRunQueriesInParallel?: boolean;
/**
* Renders invite user button along the app
*/
inviteUserExperimental?: boolean;
/**
* Enables the alerting migration UI, to migrate data source-managed rules to Grafana-managed rules
* @default true
*/
-9
View File
@@ -1564,15 +1564,6 @@ var (
FrontendOnly: false,
Owner: grafanaOSSBigTent,
},
{
Name: "inviteUserExperimental",
Description: "Renders invite user button along the app",
Stage: FeatureStageExperimental,
Owner: grafanaSharingSquad,
HideFromAdminPage: true,
HideFromDocs: true,
FrontendOnly: true,
},
{
Name: "alertingMigrationUI",
Description: "Enables the alerting migration UI, to migrate data source-managed rules to Grafana-managed rules",
-1
View File
@@ -203,7 +203,6 @@ rendererDisableAppPluginsPreload,experimental,@grafana/grafana-operator-experien
assetSriChecks,experimental,@grafana/frontend-ops,false,false,true
alertRuleRestore,preview,@grafana/alerting-squad,false,false,false
infinityRunQueriesInParallel,privatePreview,@grafana/oss-big-tent,false,false,false
inviteUserExperimental,experimental,@grafana/sharing-squad,false,false,true
alertingMigrationUI,GA,@grafana/alerting-squad,false,false,true
alertingImportYAMLUI,GA,@grafana/alerting-squad,false,false,true
unifiedStorageHistoryPruner,GA,@grafana/search-and-storage,false,false,false
1 Name Stage Owner requiresDevMode RequiresRestart FrontendOnly
203 assetSriChecks experimental @grafana/frontend-ops false false true
204 alertRuleRestore preview @grafana/alerting-squad false false false
205 infinityRunQueriesInParallel privatePreview @grafana/oss-big-tent false false false
inviteUserExperimental experimental @grafana/sharing-squad false false true
206 alertingMigrationUI GA @grafana/alerting-squad false false true
207 alertingImportYAMLUI GA @grafana/alerting-squad false false true
208 unifiedStorageHistoryPruner GA @grafana/search-and-storage false false false
-4
View File
@@ -822,10 +822,6 @@ const (
// Enables running Infinity queries in parallel
FlagInfinityRunQueriesInParallel = "infinityRunQueriesInParallel"
// FlagInviteUserExperimental
// Renders invite user button along the app
FlagInviteUserExperimental = "inviteUserExperimental"
// FlagAlertingMigrationUI
// Enables the alerting migration UI, to migrate data source-managed rules to Grafana-managed rules
FlagAlertingMigrationUI = "alertingMigrationUI"
+2 -1
View File
@@ -2108,7 +2108,8 @@
"metadata": {
"name": "inviteUserExperimental",
"resourceVersion": "1753448760331",
"creationTimestamp": "2025-03-07T19:09:59Z"
"creationTimestamp": "2025-03-07T19:09:59Z",
"deletionTimestamp": "2025-11-14T10:29:28Z"
},
"spec": {
"description": "Renders invite user button along the app",
@@ -11,9 +11,6 @@ import { InviteUserButton } from './InviteUserButton';
jest.mock('@grafana/runtime', () => ({
...jest.requireActual('@grafana/runtime'),
config: {
featureToggles: {
inviteUserExperimental: true,
},
externalUserMngLinkUrl: 'https://example.com/invite',
},
reportInteraction: jest.fn(),
@@ -31,9 +31,6 @@ const mockConfig = jest.mocked(config);
const mockContextSrv = jest.mocked(contextSrv);
const mockGetExternalUserMngLinkUrl = jest.mocked(getExternalUserMngLinkUrl);
// Type assertion to make mockConfig.featureToggles assignable
const mockFeatureToggles = mockConfig.featureToggles as Partial<FeatureToggles>;
// Mock window.open
const mockWindowOpen = jest.fn();
Object.defineProperty(window, 'open', {
@@ -46,7 +43,6 @@ describe('InviteUserButtonUtils', () => {
jest.clearAllMocks();
// Set up default mocks
mockFeatureToggles.inviteUserExperimental = true;
mockConfig.externalUserMngLinkUrl = 'https://example.com/invite';
mockContextSrv.hasPermission.mockReturnValue(true);
@@ -60,12 +56,6 @@ describe('InviteUserButtonUtils', () => {
expect(mockContextSrv.hasPermission).toHaveBeenCalledWith(AccessControlAction.OrgUsersAdd);
});
it('should return false when feature toggle is disabled', () => {
mockFeatureToggles.inviteUserExperimental = false;
expect(shouldRenderInviteUserButton()).toBe(false);
});
it('should return false when URL is not configured', () => {
mockConfig.externalUserMngLinkUrl = '';
@@ -4,9 +4,7 @@ import { getExternalUserMngLinkUrl } from 'app/features/users/utils';
import { AccessControlAction } from 'app/types/accessControl';
export const shouldRenderInviteUserButton = () =>
config.featureToggles.inviteUserExperimental &&
config.externalUserMngLinkUrl &&
contextSrv.hasPermission(AccessControlAction.OrgUsersAdd);
config.externalUserMngLinkUrl && contextSrv.hasPermission(AccessControlAction.OrgUsersAdd);
export const performInviteUserClick = (placement: string, cnt: string) => {
reportInteraction('invite_user_button_clicked', {