diff --git a/packages/web/src/javascripts/Components/VaultSelectionMenu/ManyVaultSelectionMenu.tsx b/packages/web/src/javascripts/Components/VaultSelectionMenu/ManyVaultSelectionMenu.tsx index e9e4448af..86332a978 100644 --- a/packages/web/src/javascripts/Components/VaultSelectionMenu/ManyVaultSelectionMenu.tsx +++ b/packages/web/src/javascripts/Components/VaultSelectionMenu/ManyVaultSelectionMenu.tsx @@ -1,14 +1,20 @@ -import { FunctionComponent, useCallback } from 'react' +import { FunctionComponent, useCallback, useEffect, useState } from 'react' import Menu from '../Menu/Menu' import { useApplication } from '../ApplicationProvider' import MenuSwitchButtonItem from '../Menu/MenuSwitchButtonItem' import Icon from '../Icon/Icon' -import { VaultListingInterface } from '@standardnotes/snjs' +import { ContentType, VaultListingInterface } from '@standardnotes/snjs' import { observer } from 'mobx-react-lite' const ManyVaultSelectionMenu: FunctionComponent = () => { const application = useApplication() - const vaults = application.vaults.getVaults() + + const [vaults, setVaults] = useState(() => application.vaults.getVaults()) + useEffect(() => { + return application.items.streamItems(ContentType.TYPES.VaultListing, () => { + setVaults(application.vaults.getVaults()) + }) + }, [application.items, application.vaults]) const isVaultVisible = useCallback( (vault: VaultListingInterface) => { @@ -30,7 +36,7 @@ const ManyVaultSelectionMenu: FunctionComponent = () => { return ( - {!vaults.length &&
No vaults found
} + {!vaults.length &&
No vaults found
} {vaults.map((vault) => ( { diff --git a/packages/web/src/javascripts/Components/VaultSelectionMenu/SingleVaultSelectionMenu.tsx b/packages/web/src/javascripts/Components/VaultSelectionMenu/SingleVaultSelectionMenu.tsx index d7a1734f4..b299e117b 100644 --- a/packages/web/src/javascripts/Components/VaultSelectionMenu/SingleVaultSelectionMenu.tsx +++ b/packages/web/src/javascripts/Components/VaultSelectionMenu/SingleVaultSelectionMenu.tsx @@ -1,14 +1,20 @@ -import { FunctionComponent, useCallback } from 'react' +import { FunctionComponent, useCallback, useEffect, useState } from 'react' import Menu from '../Menu/Menu' import { useApplication } from '../ApplicationProvider' -import { VaultListingInterface } from '@standardnotes/snjs' +import { ContentType, VaultListingInterface } from '@standardnotes/snjs' import MenuRadioButtonItem from '../Menu/MenuRadioButtonItem' import { observer } from 'mobx-react-lite' import Icon from '../Icon/Icon' const SingleVaultSelectionMenu: FunctionComponent = () => { const application = useApplication() - const vaults = application.vaults.getVaults() + + const [vaults, setVaults] = useState(() => application.vaults.getVaults()) + useEffect(() => { + return application.items.streamItems(ContentType.TYPES.VaultListing, () => { + setVaults(application.vaults.getVaults()) + }) + }, [application.items, application.vaults]) const isVaultVisible = useCallback( (vault: VaultListingInterface) => { @@ -26,7 +32,7 @@ const SingleVaultSelectionMenu: FunctionComponent = () => { return ( - {!vaults.length &&
No vaults found
} + {!vaults.length &&
No vaults found
} {vaults.map((vault) => ( selectVault(vault)}>