chore: correctly refresh vault info badge

This commit is contained in:
Aman Harwara
2023-09-12 00:02:01 +05:30
parent ada155a8c9
commit 53785c7100
3 changed files with 12 additions and 18 deletions

View File

@@ -243,7 +243,12 @@ export class VaultService
} }
getItemVault(item: DecryptedItemInterface): VaultListingInterface | undefined { getItemVault(item: DecryptedItemInterface): VaultListingInterface | undefined {
if (this.items.isTemplateItem(item)) {
return undefined
}
const latestItem = this.items.findItem(item.uuid) const latestItem = this.items.findItem(item.uuid)
if (!latestItem) { if (!latestItem) {
throw new Error('Cannot find latest version of item to get vault for') throw new Error('Cannot find latest version of item to get vault for')
} }

View File

@@ -1,8 +1,8 @@
import { FunctionComponent } from 'react' import { FunctionComponent } from 'react'
import { useApplication } from '../ApplicationProvider'
import { DecryptedItemInterface, classNames } from '@standardnotes/snjs' import { DecryptedItemInterface, classNames } from '@standardnotes/snjs'
import VaultNameBadge from '../Vaults/VaultNameBadge' import VaultNameBadge from '../Vaults/VaultNameBadge'
import SharedByContactBadge from '../Vaults/SharedByContactBadge' import SharedByContactBadge from '../Vaults/SharedByContactBadge'
import { useItemVaultInfo } from '@/Hooks/useItemVaultInfo'
type Props = { type Props = {
item: DecryptedItemInterface item: DecryptedItemInterface
@@ -10,23 +10,12 @@ type Props = {
} }
const ListItemVaultInfo: FunctionComponent<Props> = ({ item, className }) => { const ListItemVaultInfo: FunctionComponent<Props> = ({ item, className }) => {
const application = useApplication() const { vault, sharedByContact } = useItemVaultInfo(item)
if (!application.featuresController.isEntitledToVaults()) {
return null
}
if (application.items.isTemplateItem(item)) {
return null
}
const vault = application.vaults.getItemVault(item)
if (!vault) { if (!vault) {
return null return null
} }
const sharedByContact = application.sharedVaults.getItemSharedBy(item)
return ( return (
<div className={classNames('flex flex-wrap items-center gap-2', className)}> <div className={classNames('flex flex-wrap items-center gap-2', className)}>
<VaultNameBadge vault={vault} /> <VaultNameBadge vault={vault} />

View File

@@ -1,9 +1,11 @@
import { useApplication } from '@/Components/ApplicationProvider' import { useApplication } from '@/Components/ApplicationProvider'
import { DecryptedItemInterface, TrustedContactInterface, VaultListingInterface } from '@standardnotes/snjs' import { DecryptedItemInterface, TrustedContactInterface, VaultListingInterface } from '@standardnotes/snjs'
import useItem from './useItem'
type ItemVaultInfo = { type ItemVaultInfo = {
vault?: VaultListingInterface vault?: VaultListingInterface
lastEditedByContact?: TrustedContactInterface lastEditedByContact?: TrustedContactInterface
sharedByContact?: TrustedContactInterface
} }
export const useItemVaultInfo = (item: DecryptedItemInterface): ItemVaultInfo => { export const useItemVaultInfo = (item: DecryptedItemInterface): ItemVaultInfo => {
@@ -14,16 +16,14 @@ export const useItemVaultInfo = (item: DecryptedItemInterface): ItemVaultInfo =>
lastEditedByContact: undefined, lastEditedByContact: undefined,
} }
info.vault = useItem(application.vaults.getItemVault(item)?.uuid)
if (!application.featuresController.isEntitledToVaults()) { if (!application.featuresController.isEntitledToVaults()) {
return info return info
} }
if (application.items.isTemplateItem(item)) {
return info
}
info.vault = application.vaults.getItemVault(item)
info.lastEditedByContact = application.sharedVaults.getItemLastEditedBy(item) info.lastEditedByContact = application.sharedVaults.getItemLastEditedBy(item)
info.sharedByContact = application.sharedVaults.getItemSharedBy(item)
return info return info
} }