From e887d820e524737036ed390283e98b8ec1226dfb Mon Sep 17 00:00:00 2001 From: Anton Shepilov Date: Fri, 19 Jan 2024 21:30:38 +0300 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20"Shared=20Drive"=20can=20be=20disab?= =?UTF-8?q?led=20in=20configuration=20(#335)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/custom-environment-variables.json | 1 + tdrive/backend/node/config/default.json | 1 + .../backend/node/src/services/user/utils.ts | 3 ++ .../node/src/services/user/web/schemas.ts | 1 + .../node/src/services/user/web/types.ts | 2 + .../services/feature-toggles-service.ts | 3 ++ .../src/app/views/client/side-bar/index.tsx | 43 ++++++++++--------- 7 files changed, 34 insertions(+), 20 deletions(-) diff --git a/tdrive/backend/node/config/custom-environment-variables.json b/tdrive/backend/node/config/custom-environment-variables.json index 2fc2621e..557cf139 100644 --- a/tdrive/backend/node/config/custom-environment-variables.json +++ b/tdrive/backend/node/config/custom-environment-variables.json @@ -133,6 +133,7 @@ "server": "PLUGINS_SERVER" }, "drive": { + "featureSharedDrive": "ENABLE_FEATURE_SHARED_DRIVE", "rootAdmins": "DRIVE_ROOT_ADMINS", "defaultLanguage": "DRIVE_DEFAULT_LANGUAGE", "featureSearchUsers": "ENABLE_FEATURE_SEARCH_USERS" diff --git a/tdrive/backend/node/config/default.json b/tdrive/backend/node/config/default.json index 0dc9884a..2cb674a5 100644 --- a/tdrive/backend/node/config/default.json +++ b/tdrive/backend/node/config/default.json @@ -135,6 +135,7 @@ "debug": true }, "drive": { + "featureSharedDrive": true, "featureSearchUsers": true }, "applications": { diff --git a/tdrive/backend/node/src/services/user/utils.ts b/tdrive/backend/node/src/services/user/utils.ts index e242e1c2..47db1b7d 100644 --- a/tdrive/backend/node/src/services/user/utils.ts +++ b/tdrive/backend/node/src/services/user/utils.ts @@ -58,6 +58,9 @@ export function formatCompany( [CompanyFeaturesEnum.COMPANY_SEARCH_USERS]: JSON.parse( config.get("drive.featureSearchUsers") || "true", ), + [CompanyFeaturesEnum.COMPANY_SHARED_DRIVE]: JSON.parse( + config.get("drive.featureSharedDrive") || "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 22c65017..b728257f 100644 --- a/tdrive/backend/node/src/services/user/web/schemas.ts +++ b/tdrive/backend/node/src/services/user/web/schemas.ts @@ -93,6 +93,7 @@ export const companyObjectSchema = { [CompanyFeaturesEnum.CHAT_UNLIMITED_STORAGE]: { type: "boolean" }, [CompanyFeaturesEnum.COMPANY_INVITE_MEMBER]: { type: "boolean" }, [CompanyFeaturesEnum.COMPANY_SEARCH_USERS]: { type: "boolean" }, + [CompanyFeaturesEnum.COMPANY_SHARED_DRIVE]: { 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 570829ab..b7f53965 100644 --- a/tdrive/backend/node/src/services/user/web/types.ts +++ b/tdrive/backend/node/src/services/user/web/types.ts @@ -84,6 +84,7 @@ export enum CompanyFeaturesEnum { CHAT_UNLIMITED_STORAGE = "chat:unlimited_storage", COMPANY_INVITE_MEMBER = "company:invite_member", COMPANY_SEARCH_USERS = "company:search_users", + COMPANY_SHARED_DRIVE = "company:shared_drive", } export type CompanyFeaturesObject = { @@ -94,6 +95,7 @@ export type CompanyFeaturesObject = { [CompanyFeaturesEnum.CHAT_UNLIMITED_STORAGE]?: boolean; [CompanyFeaturesEnum.COMPANY_INVITE_MEMBER]?: boolean; [CompanyFeaturesEnum.COMPANY_SEARCH_USERS]?: boolean; + [CompanyFeaturesEnum.COMPANY_SHARED_DRIVE]?: 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 7680994e..08f293aa 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 @@ -9,6 +9,7 @@ export enum FeatureNames { UNLIMITED_STORAGE = 'chat:unlimited_storage', //Currently inactive COMPANY_INVITE_MEMBER = 'company:invite_member', COMPANY_SEARCH_USERS = 'company:search_users', + COMPANY_SHARED_DRIVE = 'company:shared_drive', } export type FeatureValueType = boolean | number; @@ -23,7 +24,9 @@ availableFeaturesWithDefaults.set(FeatureNames.MULTIPLE_WORKSPACES, true); availableFeaturesWithDefaults.set(FeatureNames.EDIT_FILES, true); availableFeaturesWithDefaults.set(FeatureNames.UNLIMITED_STORAGE, true); 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); /** * ChannelServiceImpl that allow you to manage feature flipping in Tdrive using react feature toggles diff --git a/tdrive/frontend/src/app/views/client/side-bar/index.tsx b/tdrive/frontend/src/app/views/client/side-bar/index.tsx index 25cb6f71..a9849003 100644 --- a/tdrive/frontend/src/app/views/client/side-bar/index.tsx +++ b/tdrive/frontend/src/app/views/client/side-bar/index.tsx @@ -89,26 +89,29 @@ export default () => { > {Languages.t('components.side_menu.my_drive')} - + {FeatureTogglesService.isActiveFeatureName(FeatureNames.COMPANY_SHARED_DRIVE) && ( + + )} {FeatureTogglesService.isActiveFeatureName(FeatureNames.COMPANY_SEARCH_USERS) && (