Toggle display of the user email in the header (#336)

This commit is contained in:
Anton Shepilov
2024-01-22 17:01:50 +03:00
committed by GitHub
parent e887d820e5
commit 18ca9444ca
7 changed files with 28 additions and 8 deletions
@@ -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"
}
}
+2 -1
View File
@@ -136,7 +136,8 @@
},
"drive": {
"featureSharedDrive": true,
"featureSearchUsers": true
"featureSearchUsers": true,
"featureDisplayEmail": true
},
"applications": {
"grid": [
@@ -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 || {}),
@@ -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
@@ -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 = {
@@ -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<T>(featureName: FeatureNames): T {
@@ -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 => {
<Base className="font-bold overflow-hidden text-ellipsis whitespace-nowrap w-full block -mb-1">
{currentUserService.getFullName(user)}
</Base>
<Info className="font-semibold overflow-hidden text-ellipsis whitespace-nowrap w-full">
{user.email}
</Info>
{ !FeatureTogglesService.isActiveFeatureName(FeatureNames.COMPANY_DISPLAY_EMAIL) && (
<Info className="font-semibold overflow-hidden text-ellipsis whitespace-nowrap w-full">
{user.email}
</Info>
)}
</div>
</Menu>
);