From 4724b08c65c48b6b7232885de205a44b080313b1 Mon Sep 17 00:00:00 2001 From: Aman Harwara Date: Thu, 5 Oct 2023 11:07:01 +0000 Subject: [PATCH] feat: Added "Private vaults" as a Labs feature. Can be enabled from Preferences > General > Labs (#2562) --- .../src/Domain/Feature/NativeFeatureIdentifier.ts | 3 ++- .../src/Domain/Lists/ExperimentalFeatures.ts | 13 ++++++++++++- .../src/Domain/Permission/PermissionName.ts | 1 + .../Components/FileContextMenu/FileMenuOptions.tsx | 2 +- .../Components/Footer/VaultSelectionButton.tsx | 2 +- .../Components/NotesOptions/NotesOptions.tsx | 2 +- .../Components/PasswordWizard/PasswordWizard.tsx | 2 +- .../Controller/PreferencesSessionController.ts | 2 +- .../Components/Preferences/Panes/Vaults/Vaults.tsx | 11 +++++++---- .../Preferences/Panes/Vaults/Vaults/VaultItem.tsx | 4 +++- .../src/javascripts/Components/Tags/Navigation.tsx | 2 +- .../javascripts/Components/Tags/TagContextMenu.tsx | 2 +- .../Components/Vaults/AddToVaultMenuOption.tsx | 2 +- .../javascripts/Controllers/FeaturesController.ts | 7 ++++++- .../Controllers/LinkingController.spec.ts | 3 ++- .../javascripts/Controllers/LinkingController.tsx | 2 +- packages/web/src/javascripts/FeatureTrunk.ts | 3 ++- .../web/src/javascripts/Hooks/useItemVaultInfo.ts | 2 +- 18 files changed, 45 insertions(+), 20 deletions(-) diff --git a/packages/features/src/Domain/Feature/NativeFeatureIdentifier.ts b/packages/features/src/Domain/Feature/NativeFeatureIdentifier.ts index b28385901..b9af61e40 100644 --- a/packages/features/src/Domain/Feature/NativeFeatureIdentifier.ts +++ b/packages/features/src/Domain/Feature/NativeFeatureIdentifier.ts @@ -41,6 +41,7 @@ export class NativeFeatureIdentifier extends ValueObject = ({ ) : null} )} - {application.featuresController.isEntitledToVaults() && ( + {application.featuresController.isVaultsEnabled() && ( setIsOpen(!isOpen) - if (!application.featuresController.isEntitledToVaults()) { + if (!application.featuresController.isVaultsEnabled()) { return null } diff --git a/packages/web/src/javascripts/Components/NotesOptions/NotesOptions.tsx b/packages/web/src/javascripts/Components/NotesOptions/NotesOptions.tsx index e21c188df..0bd87b003 100644 --- a/packages/web/src/javascripts/Components/NotesOptions/NotesOptions.tsx +++ b/packages/web/src/javascripts/Components/NotesOptions/NotesOptions.tsx @@ -286,7 +286,7 @@ const NotesOptions = ({ notes, closeMenu }: NotesOptionsProps) => { )} - {application.featuresController.isEntitledToVaults() && ( + {application.featuresController.isVaultsEnabled() && ( )} diff --git a/packages/web/src/javascripts/Components/PasswordWizard/PasswordWizard.tsx b/packages/web/src/javascripts/Components/PasswordWizard/PasswordWizard.tsx index 7c84ed1bc..6e0e8328c 100644 --- a/packages/web/src/javascripts/Components/PasswordWizard/PasswordWizard.tsx +++ b/packages/web/src/javascripts/Components/PasswordWizard/PasswordWizard.tsx @@ -49,7 +49,7 @@ class PasswordWizard extends AbstractComponent { continueTitle: DEFAULT_CONTINUE_TITLE, } - if (props.application.featuresController.isEntitledToVaults()) { + if (props.application.featuresController.isVaultsEnabled()) { this.state = { ...baseState, lockContinue: true, diff --git a/packages/web/src/javascripts/Components/Preferences/Controller/PreferencesSessionController.ts b/packages/web/src/javascripts/Components/Preferences/Controller/PreferencesSessionController.ts index 3b0f43fc7..722b8502b 100644 --- a/packages/web/src/javascripts/Components/Preferences/Controller/PreferencesSessionController.ts +++ b/packages/web/src/javascripts/Components/Preferences/Controller/PreferencesSessionController.ts @@ -26,7 +26,7 @@ export class PreferencesSessionController { ? PREFERENCES_MENU_ITEMS.slice() : READY_PREFERENCES_MENU_ITEMS.slice() - if (application.featuresController.isEntitledToVaults()) { + if (application.featuresController.isVaultsEnabled()) { menuItems.push({ id: 'vaults', label: 'Vaults', icon: 'safe-square', order: 5 }) } diff --git a/packages/web/src/javascripts/Components/Preferences/Panes/Vaults/Vaults.tsx b/packages/web/src/javascripts/Components/Preferences/Panes/Vaults/Vaults.tsx index 8d29353a5..a6fd7798c 100644 --- a/packages/web/src/javascripts/Components/Preferences/Panes/Vaults/Vaults.tsx +++ b/packages/web/src/javascripts/Components/Preferences/Panes/Vaults/Vaults.tsx @@ -31,6 +31,7 @@ const Vaults = observer(() => { const application = useApplication() const hasAccount = application.hasAccount() + const isSharedVaultsEnabled = application.featuresController.isEntitledToSharedVaults() const [vaults, setVaults] = useState([]) const [canCreateMoreVaults, setCanCreateMoreVaults] = useState(true) @@ -163,7 +164,7 @@ const Vaults = observer(() => { )} - {hasAccount && ( + {hasAccount && isSharedVaultsEnabled && ( Contacts @@ -180,7 +181,7 @@ const Vaults = observer(() => { )} - {hasAccount && ( + {hasAccount && isSharedVaultsEnabled && ( CollaborationID @@ -235,13 +236,15 @@ const Vaults = observer(() => { {canCreateMoreVaults ? (
) : (
Please upgrade in order to increase your shared vault limit.} + text={Please upgrade in order to increase your vault limit.} />
)} diff --git a/packages/web/src/javascripts/Components/Preferences/Panes/Vaults/Vaults/VaultItem.tsx b/packages/web/src/javascripts/Components/Preferences/Panes/Vaults/Vaults/VaultItem.tsx index 4e751c456..505ad941b 100644 --- a/packages/web/src/javascripts/Components/Preferences/Panes/Vaults/Vaults/VaultItem.tsx +++ b/packages/web/src/javascripts/Components/Preferences/Panes/Vaults/Vaults/VaultItem.tsx @@ -17,6 +17,8 @@ type Props = { const VaultItem = ({ vault }: Props) => { const application = useApplication() + const canEnableCollaboration = application.hasAccount() && application.featuresController.isEntitledToSharedVaults() + const [isInviteModalOpen, setIsAddContactModalOpen] = useState(false) const closeInviteModal = () => setIsAddContactModalOpen(false) @@ -128,7 +130,7 @@ const VaultItem = ({ vault }: Props) => { {isCurrentUserAdmin ? ( vault.isSharedVaultListing() ? (