From 18ca9444caef187cfd4c9a0590c225504e10bdc2 Mon Sep 17 00:00:00 2001 From: Anton Shepilov Date: Mon, 22 Jan 2024 17:01:50 +0300 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8Toggle=20display=20of=20the=20user=20e?= =?UTF-8?q?mail=20in=20the=20header=20(#336)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../node/config/custom-environment-variables.json | 3 ++- tdrive/backend/node/config/default.json | 3 ++- tdrive/backend/node/src/services/user/utils.ts | 3 +++ .../backend/node/src/services/user/web/schemas.ts | 1 + tdrive/backend/node/src/services/user/web/types.ts | 2 ++ .../global/services/feature-toggles-service.ts | 11 +++++++++-- .../src/app/views/client/common/account.tsx | 13 +++++++++---- 7 files changed, 28 insertions(+), 8 deletions(-) diff --git a/tdrive/backend/node/config/custom-environment-variables.json b/tdrive/backend/node/config/custom-environment-variables.json index 557cf139..7e0a1f6d 100644 --- a/tdrive/backend/node/config/custom-environment-variables.json +++ b/tdrive/backend/node/config/custom-environment-variables.json @@ -136,6 +136,7 @@ "featureSharedDrive": "ENABLE_FEATURE_SHARED_DRIVE", "rootAdmins": "DRIVE_ROOT_ADMINS", "defaultLanguage": "DRIVE_DEFAULT_LANGUAGE", - "featureSearchUsers": "ENABLE_FEATURE_SEARCH_USERS" + "featureSearchUsers": "ENABLE_FEATURE_SEARCH_USERS", + "featureDisplayEmail": "ENABLE_FEATURE_DISPLAY_EMAIL" } } diff --git a/tdrive/backend/node/config/default.json b/tdrive/backend/node/config/default.json index 2cb674a5..10b24f3c 100644 --- a/tdrive/backend/node/config/default.json +++ b/tdrive/backend/node/config/default.json @@ -136,7 +136,8 @@ }, "drive": { "featureSharedDrive": true, - "featureSearchUsers": true + "featureSearchUsers": true, + "featureDisplayEmail": true }, "applications": { "grid": [ diff --git a/tdrive/backend/node/src/services/user/utils.ts b/tdrive/backend/node/src/services/user/utils.ts index 47db1b7d..424bf44e 100644 --- a/tdrive/backend/node/src/services/user/utils.ts +++ b/tdrive/backend/node/src/services/user/utils.ts @@ -61,6 +61,9 @@ export function formatCompany( [CompanyFeaturesEnum.COMPANY_SHARED_DRIVE]: JSON.parse( config.get("drive.featureSharedDrive") || "true", ), + [CompanyFeaturesEnum.COMPANY_DISPLAY_EMAIL]: JSON.parse( + config.get("drive.featureDisplayEmail") || "true", + ), }, { ...(res.plan?.features || {}), diff --git a/tdrive/backend/node/src/services/user/web/schemas.ts b/tdrive/backend/node/src/services/user/web/schemas.ts index b728257f..2d61c9c9 100644 --- a/tdrive/backend/node/src/services/user/web/schemas.ts +++ b/tdrive/backend/node/src/services/user/web/schemas.ts @@ -94,6 +94,7 @@ export const companyObjectSchema = { [CompanyFeaturesEnum.COMPANY_INVITE_MEMBER]: { type: "boolean" }, [CompanyFeaturesEnum.COMPANY_SEARCH_USERS]: { type: "boolean" }, [CompanyFeaturesEnum.COMPANY_SHARED_DRIVE]: { type: "boolean" }, + [CompanyFeaturesEnum.COMPANY_DISPLAY_EMAIL]: { type: "boolean" }, guests: { type: "number" }, // to rename or delete members: { type: "number" }, // to rename or delete storage: { type: "number" }, // to rename or delete diff --git a/tdrive/backend/node/src/services/user/web/types.ts b/tdrive/backend/node/src/services/user/web/types.ts index b7f53965..6ae25d9a 100644 --- a/tdrive/backend/node/src/services/user/web/types.ts +++ b/tdrive/backend/node/src/services/user/web/types.ts @@ -85,6 +85,7 @@ export enum CompanyFeaturesEnum { COMPANY_INVITE_MEMBER = "company:invite_member", COMPANY_SEARCH_USERS = "company:search_users", COMPANY_SHARED_DRIVE = "company:shared_drive", + COMPANY_DISPLAY_EMAIL = "company:display_email", } export type CompanyFeaturesObject = { @@ -96,6 +97,7 @@ export type CompanyFeaturesObject = { [CompanyFeaturesEnum.COMPANY_INVITE_MEMBER]?: boolean; [CompanyFeaturesEnum.COMPANY_SEARCH_USERS]?: boolean; [CompanyFeaturesEnum.COMPANY_SHARED_DRIVE]?: boolean; + [CompanyFeaturesEnum.COMPANY_DISPLAY_EMAIL]?: boolean; }; export type CompanyLimitsObject = { diff --git a/tdrive/frontend/src/app/features/global/services/feature-toggles-service.ts b/tdrive/frontend/src/app/features/global/services/feature-toggles-service.ts index 08f293aa..d20ba24d 100644 --- a/tdrive/frontend/src/app/features/global/services/feature-toggles-service.ts +++ b/tdrive/frontend/src/app/features/global/services/feature-toggles-service.ts @@ -10,6 +10,7 @@ export enum FeatureNames { COMPANY_INVITE_MEMBER = 'company:invite_member', COMPANY_SEARCH_USERS = 'company:search_users', COMPANY_SHARED_DRIVE = 'company:shared_drive', + COMPANY_DISPLAY_EMAIL = 'company:display_email', } export type FeatureValueType = boolean | number; @@ -27,6 +28,7 @@ availableFeaturesWithDefaults.set(FeatureNames.COMPANY_INVITE_MEMBER, true); availableFeaturesWithDefaults.set(FeatureNames.COMPANY_INVITE_MEMBER, true); availableFeaturesWithDefaults.set(FeatureNames.COMPANY_SEARCH_USERS, true); availableFeaturesWithDefaults.set(FeatureNames.COMPANY_SHARED_DRIVE, true); +availableFeaturesWithDefaults.set(FeatureNames.COMPANY_DISPLAY_EMAIL, true); /** * ChannelServiceImpl that allow you to manage feature flipping in Tdrive using react feature toggles @@ -47,6 +49,8 @@ class FeatureTogglesService { } public setFeaturesFromCompanyPlan(plan: { features: { [key: string]: FeatureValueType } }): void { + console.debug("Setting company features"); + console.debug(plan); for (const [featureName, defaultValue] of availableFeaturesWithDefaults) { this.setActiveFeatureName( featureName, @@ -59,14 +63,17 @@ class FeatureTogglesService { if (typeof value === 'boolean') { this.activeFeatureNames = this.activeFeatureNames.filter(name => name !== featureName); if (value) this.activeFeatureNames.push(featureName); - this.activeFeatureValues.set(featureName, !!value); + this.activeFeatureValues.set(featureName, value); } else { this.activeFeatureValues.set(featureName, value); } } public isActiveFeatureName(featureName: FeatureNames) { - return this.activeFeatureNames.includes(featureName); + console.debug(this.activeFeatureNames) + const b = this.activeFeatureNames.includes(featureName); + console.debug(`Feature ${featureName} is ${b}`); + return b; } public getFeatureValue(featureName: FeatureNames): T { diff --git a/tdrive/frontend/src/app/views/client/common/account.tsx b/tdrive/frontend/src/app/views/client/common/account.tsx index 3caf0d74..a2314bd1 100644 --- a/tdrive/frontend/src/app/views/client/common/account.tsx +++ b/tdrive/frontend/src/app/views/client/common/account.tsx @@ -7,7 +7,9 @@ import currentUserService from '@features/users/services/current-user-service'; import AccountParameter from '@views/client/popup/UserParameter/UserParameter'; import Languages from '../../../features/global/services/languages-service'; import ModalManagerDepreciated from '@deprecated/popupManager/popupManager'; -import InitService from '@features/global/services/init-service'; +import FeatureTogglesService, { + FeatureNames, +} from '@features/global/services/feature-toggles-service'; export default ({ sidebar }: { sidebar?: boolean }): JSX.Element => { const { user } = useCurrentUser(); @@ -51,9 +53,12 @@ export default ({ sidebar }: { sidebar?: boolean }): JSX.Element => { {currentUserService.getFullName(user)} - - {user.email} - + + { !FeatureTogglesService.isActiveFeatureName(FeatureNames.COMPANY_DISPLAY_EMAIL) && ( + + {user.email} + + )} );