1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-05-31 01:16:01 +02:00

remove feature flag: tokens last seen (#2673)

https://linear.app/unleash/issue/2-470/clean-up-flag
This commit is contained in:
Nuno Góis 2022-12-12 14:32:35 +00:00 committed by GitHub
parent e8d0fdba1f
commit 5086ec7921
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 9 additions and 61 deletions

View File

@ -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 (
<PageContent

View File

@ -26,7 +26,6 @@ import {
INewPersonalAPIToken,
IPersonalAPIToken,
} from 'interfaces/personalAPIToken';
import { IUser } from 'interfaces/user';
import { useEffect, useMemo, useState } from 'react';
import { useSearchParams } from 'react-router-dom';
import { useTable, SortingRule, useSortBy, useFlexLayout } from 'react-table';
@ -36,7 +35,6 @@ import { CreatePersonalAPIToken } from './CreatePersonalAPIToken/CreatePersonalA
import { DeletePersonalAPIToken } from './DeletePersonalAPIToken/DeletePersonalAPIToken';
import { PersonalAPITokenDialog } from './PersonalAPITokenDialog/PersonalAPITokenDialog';
import { TimeAgoCell } from 'component/common/Table/cells/TimeAgoCell/TimeAgoCell';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
const StyledAlert = styled(Alert)(({ theme }) => ({
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 = {};

View File

@ -53,7 +53,7 @@ export const Profile = () => {
/>
<ConditionallyRender
condition={tab === 'pat'}
show={<PersonalAPITokensTab user={user!} />}
show={<PersonalAPITokensTab />}
/>
</VerticalTabs>
);

View File

@ -42,7 +42,6 @@ export interface IFlags {
embedProxyFrontend?: boolean;
changeRequests?: boolean;
variantsPerEnvironment?: boolean;
tokensLastSeen?: boolean;
favorites?: boolean;
networkView?: boolean;
}

View File

@ -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": {

View File

@ -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<string> = new Set<string>();
private flagResolver: IFlagResolver;
constructor(
{
apiTokenStore,
@ -72,12 +69,8 @@ export class ApiTokenService {
IUnleashStores,
'apiTokenStore' | 'environmentStore' | 'eventStore'
>,
config: Pick<
IUnleashConfig,
'getLogger' | 'authentication' | 'flagResolver'
>,
config: Pick<IUnleashConfig, 'getLogger' | 'authentication'>,
) {
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,

View File

@ -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<string> = new Set<string>();
private flagResolver: IFlagResolver;
constructor(
stores: Pick<IUnleashStores, 'userStore' | 'eventStore'>,
{
getLogger,
authentication,
flagResolver,
}: Pick<
IUnleashConfig,
'getLogger' | 'authentication' | 'flagResolver'
>,
}: Pick<IUnleashConfig, 'getLogger' | 'authentication'>,
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 {

View File

@ -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;
};