From 5086ec79219490012bd257a475b44082ec924e14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nuno=20G=C3=B3is?= Date: Mon, 12 Dec 2022 14:32:35 +0000 Subject: [PATCH] remove feature flag: tokens last seen (#2673) https://linear.app/unleash/issue/2-470/clean-up-flag --- .../apiToken/ApiTokenTable/ApiTokenTable.tsx | 6 ------ .../PersonalAPITokensTab.tsx | 19 ++----------------- .../src/component/user/Profile/Profile.tsx | 2 +- frontend/src/interfaces/uiConfig.ts | 1 - .../__snapshots__/create-config.test.ts.snap | 2 -- src/lib/services/api-token-service.ts | 17 +++-------------- src/lib/services/user-service.ts | 18 +++--------------- src/lib/types/experimental.ts | 5 ----- 8 files changed, 9 insertions(+), 61 deletions(-) diff --git a/frontend/src/component/admin/apiToken/ApiTokenTable/ApiTokenTable.tsx b/frontend/src/component/admin/apiToken/ApiTokenTable/ApiTokenTable.tsx index cfaabc6533..e42a139ed7 100644 --- a/frontend/src/component/admin/apiToken/ApiTokenTable/ApiTokenTable.tsx +++ b/frontend/src/component/admin/apiToken/ApiTokenTable/ApiTokenTable.tsx @@ -30,7 +30,6 @@ import { TimeAgoCell } from 'component/common/Table/cells/TimeAgoCell/TimeAgoCel const hiddenColumnsSmall = ['Icon', 'createdAt']; const hiddenColumnsFlagE = ['projects', 'environment']; -const hiddenColumnsFlagTokensLastSeen = ['seenAt']; export const ApiTokenTable = () => { const { tokens, loading } = useApiTokens(); @@ -61,11 +60,6 @@ export const ApiTokenTable = () => { useHiddenColumns(setHiddenColumns, hiddenColumnsSmall, isSmallScreen); useHiddenColumns(setHiddenColumns, hiddenColumnsFlagE, !uiConfig.flags.E); - useHiddenColumns( - setHiddenColumns, - hiddenColumnsFlagTokensLastSeen, - !uiConfig.flags.tokensLastSeen - ); return ( ({ marginBottom: theme.spacing(3), @@ -77,12 +75,7 @@ const { value: storedParams, setValue: setStoredParams } = createLocalStorage( defaultSort ); -interface IPersonalAPITokensTabProps { - user: IUser; -} - -export const PersonalAPITokensTab = ({ user }: IPersonalAPITokensTabProps) => { - const { uiConfig } = useUiConfig(); +export const PersonalAPITokensTab = () => { const theme = useTheme(); const isSmallScreen = useMediaQuery(theme.breakpoints.down('md')); const isExtraSmallScreen = useMediaQuery(theme.breakpoints.down('sm')); @@ -208,9 +201,6 @@ export const PersonalAPITokensTab = ({ user }: IPersonalAPITokensTabProps) => { useEffect(() => { const hiddenColumns = []; - if (!uiConfig.flags.tokensLastSeen) { - hiddenColumns.push('seenAt'); - } if (isSmallScreen) { hiddenColumns.push('createdAt'); } @@ -218,12 +208,7 @@ export const PersonalAPITokensTab = ({ user }: IPersonalAPITokensTabProps) => { hiddenColumns.push('expiresAt'); } setHiddenColumns(hiddenColumns); - }, [ - setHiddenColumns, - isSmallScreen, - isExtraSmallScreen, - uiConfig.flags.tokensLastSeen, - ]); + }, [setHiddenColumns, isSmallScreen, isExtraSmallScreen]); useEffect(() => { const tableState: PageQueryType = {}; diff --git a/frontend/src/component/user/Profile/Profile.tsx b/frontend/src/component/user/Profile/Profile.tsx index bb9f4e14a6..14675dec53 100644 --- a/frontend/src/component/user/Profile/Profile.tsx +++ b/frontend/src/component/user/Profile/Profile.tsx @@ -53,7 +53,7 @@ export const Profile = () => { /> } + show={} /> ); diff --git a/frontend/src/interfaces/uiConfig.ts b/frontend/src/interfaces/uiConfig.ts index 3d54d4b218..c088e22d66 100644 --- a/frontend/src/interfaces/uiConfig.ts +++ b/frontend/src/interfaces/uiConfig.ts @@ -42,7 +42,6 @@ export interface IFlags { embedProxyFrontend?: boolean; changeRequests?: boolean; variantsPerEnvironment?: boolean; - tokensLastSeen?: boolean; favorites?: boolean; networkView?: boolean; } diff --git a/src/lib/__snapshots__/create-config.test.ts.snap b/src/lib/__snapshots__/create-config.test.ts.snap index 5b2f85022f..e30a0f219d 100644 --- a/src/lib/__snapshots__/create-config.test.ts.snap +++ b/src/lib/__snapshots__/create-config.test.ts.snap @@ -77,7 +77,6 @@ exports[`should create default config 1`] = ` "networkView": false, "proxyReturnAllToggles": false, "responseTimeWithAppName": false, - "tokensLastSeen": false, "variantsPerEnvironment": false, }, }, @@ -93,7 +92,6 @@ exports[`should create default config 1`] = ` "networkView": false, "proxyReturnAllToggles": false, "responseTimeWithAppName": false, - "tokensLastSeen": false, "variantsPerEnvironment": false, }, "externalResolver": { diff --git a/src/lib/services/api-token-service.ts b/src/lib/services/api-token-service.ts index 64ed609768..bda5fca350 100644 --- a/src/lib/services/api-token-service.ts +++ b/src/lib/services/api-token-service.ts @@ -26,7 +26,6 @@ import { ApiTokenUpdatedEvent, } from '../types'; import { omitKeys } from '../util'; -import { IFlagResolver } from 'lib/types/experimental'; const resolveTokenPermissions = (tokenType: string) => { if (tokenType === ApiTokenType.ADMIN) { @@ -61,8 +60,6 @@ export class ApiTokenService { private lastSeenSecrets: Set = new Set(); - private flagResolver: IFlagResolver; - constructor( { apiTokenStore, @@ -72,12 +69,8 @@ export class ApiTokenService { IUnleashStores, 'apiTokenStore' | 'environmentStore' | 'eventStore' >, - config: Pick< - IUnleashConfig, - 'getLogger' | 'authentication' | 'flagResolver' - >, + config: Pick, ) { - this.flagResolver = config.flagResolver; this.store = apiTokenStore; this.eventStore = eventStore; this.environmentStore = environmentStore; @@ -87,9 +80,7 @@ export class ApiTokenService { () => this.fetchActiveTokens(), minutesToMilliseconds(1), ).unref(); - if (this.flagResolver.isEnabled('tokensLastSeen')) { - this.updateLastSeen(); - } + this.updateLastSeen(); if (config.authentication.initApiTokens.length > 0) { process.nextTick(async () => this.initApiTokens(config.authentication.initApiTokens), @@ -164,9 +155,7 @@ export class ApiTokenService { } if (token) { - if (this.flagResolver.isEnabled('tokensLastSeen')) { - this.lastSeenSecrets.add(token.secret); - } + this.lastSeenSecrets.add(token.secret); return new ApiUser({ username: token.username, diff --git a/src/lib/services/user-service.ts b/src/lib/services/user-service.ts index 319c3c6888..e9eee361c5 100644 --- a/src/lib/services/user-service.ts +++ b/src/lib/services/user-service.ts @@ -28,7 +28,6 @@ import PasswordMismatch from '../error/password-mismatch'; import BadDataError from '../error/bad-data-error'; import { isDefined } from '../util/isDefined'; import { TokenUserSchema } from '../openapi/spec/token-user-schema'; -import { IFlagResolver } from 'lib/types/experimental'; import { minutesToMilliseconds } from 'date-fns'; const systemUser = new User({ id: -1, username: 'system' }); @@ -84,18 +83,12 @@ class UserService { private lastSeenSecrets: Set = new Set(); - private flagResolver: IFlagResolver; - constructor( stores: Pick, { getLogger, authentication, - flagResolver, - }: Pick< - IUnleashConfig, - 'getLogger' | 'authentication' | 'flagResolver' - >, + }: Pick, services: { accessService: AccessService; resetTokenService: ResetTokenService; @@ -104,7 +97,6 @@ class UserService { settingService: SettingService; }, ) { - this.flagResolver = flagResolver; this.logger = getLogger('service/user-service.js'); this.store = stores.userStore; this.eventStore = stores.eventStore; @@ -116,9 +108,7 @@ class UserService { if (authentication && authentication.createAdminUser) { process.nextTick(() => this.initAdminUser()); } - if (this.flagResolver.isEnabled('tokensLastSeen')) { - this.updateLastSeen(); - } + this.updateLastSeen(); } validatePassword(password: string): boolean { @@ -457,9 +447,7 @@ class UserService { } addPATSeen(secret: string): void { - if (this.flagResolver.isEnabled('tokensLastSeen')) { - this.lastSeenSecrets.add(secret); - } + this.lastSeenSecrets.add(secret); } destroy(): void { diff --git a/src/lib/types/experimental.ts b/src/lib/types/experimental.ts index b8486b6948..d4d697a5a0 100644 --- a/src/lib/types/experimental.ts +++ b/src/lib/types/experimental.ts @@ -34,10 +34,6 @@ export const defaultExperimentalOptions = { process.env.UNLEASH_EXPERIMENTAL_VARIANTS_PER_ENVIRONMENT, false, ), - tokensLastSeen: parseEnvVarBoolean( - process.env.UNLEASH_EXPERIMENTAL_TOKENS_LAST_SEEN, - false, - ), favorites: parseEnvVarBoolean( process.env.UNLEASH_EXPERIMENTAL_FAVORITES, false, @@ -61,7 +57,6 @@ export interface IExperimentalOptions { changeRequests?: boolean; proxyReturnAllToggles?: boolean; variantsPerEnvironment?: boolean; - tokensLastSeen?: boolean; favorites?: boolean; networkView?: boolean; };