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) && (