✨Toggle display of the user email in the header (#336)
This commit is contained in:
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user