chore: allow viewing note history as readonly member

This commit is contained in:
Aman Harwara
2023-09-22 19:48:49 +05:30
parent ab1699c114
commit e357a7820c
3 changed files with 13 additions and 4 deletions

View File

@@ -230,7 +230,7 @@ const NotesOptions = ({ notes, closeMenu }: NotesOptionsProps) => {
<> <>
{notes.length === 1 && ( {notes.length === 1 && (
<> <>
<MenuItem onClick={openRevisionHistoryModal} disabled={areSomeNotesInReadonlySharedVault}> <MenuItem onClick={openRevisionHistoryModal}>
<Icon type="history" className={iconClass} /> <Icon type="history" className={iconClass} />
Note history Note history
{historyShortcut && <KeyboardShortcutIndicator className="ml-auto" shortcut={historyShortcut} />} {historyShortcut && <KeyboardShortcutIndicator className="ml-auto" shortcut={historyShortcut} />}

View File

@@ -12,6 +12,7 @@ import MobileModalAction from '../Modal/MobileModalAction'
import Popover from '../Popover/Popover' import Popover from '../Popover/Popover'
import MobileModalHeader from '../Modal/MobileModalHeader' import MobileModalHeader from '../Modal/MobileModalHeader'
import { useApplication } from '../ApplicationProvider' import { useApplication } from '../ApplicationProvider'
import { useItemVaultInfo } from '@/Hooks/useItemVaultInfo'
const HistoryModalDialogContent = ({ dismissModal, note }: RevisionHistoryModalContentProps) => { const HistoryModalDialogContent = ({ dismissModal, note }: RevisionHistoryModalContentProps) => {
const application = useApplication() const application = useApplication()
@@ -40,6 +41,9 @@ const HistoryModalDialogContent = ({ dismissModal, note }: RevisionHistoryModalC
const [showTabMenu, setShowTabMenu] = useState(false) const [showTabMenu, setShowTabMenu] = useState(false)
const toggleTabMenu = () => setShowTabMenu((show) => !show) const toggleTabMenu = () => setShowTabMenu((show) => !show)
const { vault } = useItemVaultInfo(note)
const isReadonly = vault ? application.vaultUsers.isCurrentUserReadonlyVaultMember(vault) : false
return ( return (
<> <>
<MobileModalHeader className="items-center border-b border-border px-2 py-1 md:hidden"> <MobileModalHeader className="items-center border-b border-border px-2 py-1 md:hidden">
@@ -104,7 +108,11 @@ const HistoryModalDialogContent = ({ dismissModal, note }: RevisionHistoryModalC
<HistoryModalContentPane noteHistoryController={noteHistoryController} note={note} /> <HistoryModalContentPane noteHistoryController={noteHistoryController} note={note} />
</div> </div>
</div> </div>
<HistoryModalFooter dismissModal={dismissModal} noteHistoryController={noteHistoryController} /> <HistoryModalFooter
dismissModal={dismissModal}
noteHistoryController={noteHistoryController}
readonly={isReadonly}
/>
</> </>
) )
} }

View File

@@ -8,9 +8,10 @@ import Spinner from '@/Components/Spinner/Spinner'
type Props = { type Props = {
dismissModal: () => void dismissModal: () => void
noteHistoryController: NoteHistoryController noteHistoryController: NoteHistoryController
readonly?: boolean
} }
const HistoryModalFooter = ({ dismissModal, noteHistoryController }: Props) => { const HistoryModalFooter = ({ dismissModal, noteHistoryController, readonly = false }: Props) => {
const { selectedRevision, restoreRevision, restoreRevisionAsCopy, selectedEntry, deleteRemoteRevision } = const { selectedRevision, restoreRevision, restoreRevisionAsCopy, selectedEntry, deleteRemoteRevision } =
noteHistoryController noteHistoryController
@@ -43,7 +44,7 @@ const HistoryModalFooter = ({ dismissModal, noteHistoryController }: Props) => {
return ( return (
<div className="min-h-6 flex flex-shrink-0 flex-wrap items-center gap-2.5 border-t border-solid border-border px-2.5 py-2 md:justify-between"> <div className="min-h-6 flex flex-shrink-0 flex-wrap items-center gap-2.5 border-t border-solid border-border px-2.5 py-2 md:justify-between">
<Button className="py-1.35" label="Close" onClick={dismissModal} /> <Button className="py-1.35" label="Close" onClick={dismissModal} />
{selectedRevision && selectedEntry && ( {selectedRevision && selectedEntry && !readonly && (
<> <>
{(selectedEntry as RevisionMetadata).uuid && ( {(selectedEntry as RevisionMetadata).uuid && (
<Button className="md:ml-auto" onClick={deleteSelectedRevision}> <Button className="md:ml-auto" onClick={deleteSelectedRevision}>