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:
parent
e8d0fdba1f
commit
5086ec7921
@ -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
|
||||
|
@ -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 = {};
|
||||
|
@ -53,7 +53,7 @@ export const Profile = () => {
|
||||
/>
|
||||
<ConditionallyRender
|
||||
condition={tab === 'pat'}
|
||||
show={<PersonalAPITokensTab user={user!} />}
|
||||
show={<PersonalAPITokensTab />}
|
||||
/>
|
||||
</VerticalTabs>
|
||||
);
|
||||
|
@ -42,7 +42,6 @@ export interface IFlags {
|
||||
embedProxyFrontend?: boolean;
|
||||
changeRequests?: boolean;
|
||||
variantsPerEnvironment?: boolean;
|
||||
tokensLastSeen?: boolean;
|
||||
favorites?: boolean;
|
||||
networkView?: boolean;
|
||||
}
|
||||
|
@ -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": {
|
||||
|
@ -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,
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user