chore: vault member permissions (#2509)

This commit is contained in:
Aman Harwara
2023-09-18 19:53:34 +05:30
committed by GitHub
parent 2af610c7bf
commit 48e7820100
32 changed files with 331 additions and 94 deletions

View File

@@ -130,7 +130,7 @@ const ContactInviteModal: FunctionComponent<Props> = ({ vault, onCloseDialog })
wrapper: 'col-start-2',
}}
items={Object.keys(SharedVaultUserPermission.PERMISSIONS).map((key) => ({
label: key === 'Write' ? 'Read / Write' : key,
label: application.vaultUsers.getFormattedMemberPermission(key),
value: key,
}))}
value={selectedContact.permission}

View File

@@ -2,11 +2,10 @@ import { useApplication } from '@/Components/ApplicationProvider'
import Button from '@/Components/Button/Button'
import Icon from '@/Components/Icon/Icon'
import ModalOverlay from '@/Components/Modal/ModalOverlay'
import { InviteRecord, SharedVaultUserPermission } from '@standardnotes/snjs'
import { InviteRecord } from '@standardnotes/snjs'
import { useCallback, useState } from 'react'
import EditContactModal from '../Contacts/EditContactModal'
import { CheckmarkCircle } from '../../../../UIElements/CheckmarkCircle'
import { capitalizeString } from '@/Utils'
type Props = {
inviteRecord: InviteRecord
@@ -36,10 +35,7 @@ const InviteItem = ({ inviteRecord }: Props) => {
const trustedContact = application.contacts.findSenderContactForInvite(inviteRecord.invite)
const permission =
inviteRecord.invite.permission === SharedVaultUserPermission.PERMISSIONS.Write
? 'Read / Write'
: capitalizeString(inviteRecord.invite.permission)
const permission = application.vaultUsers.getFormattedMemberPermission(inviteRecord.invite.permission)
return (
<>

View File

@@ -23,7 +23,8 @@ const VaultItem = ({ vault }: Props) => {
const [isVaultModalOpen, setIsVaultModalOpen] = useState(false)
const closeVaultModal = () => setIsVaultModalOpen(false)
const { isCurrentUserAdmin, isLocked, canShowLockOption, toggleLock, ensureVaultIsUnlocked } = useVault(vault)
const { isCurrentUserAdmin, isCurrentUserOwner, isLocked, canShowLockOption, toggleLock, ensureVaultIsUnlocked } =
useVault(vault)
const deleteVault = useCallback(async () => {
const confirm = await application.alerts.confirm(
@@ -122,8 +123,8 @@ const VaultItem = ({ vault }: Props) => {
<div className="mt-2 flex w-full flex-wrap gap-3">
<Button label="Edit" onClick={openEditModal} />
{canShowLockOption && <Button label={isLocked ? 'Unlock' : 'Lock'} onClick={toggleLock} />}
{isCurrentUserAdmin && <Button colorStyle="danger" label="Delete" onClick={deleteVault} />}
{!isCurrentUserAdmin && vault.isSharedVaultListing() && <Button label="Leave Vault" onClick={leaveVault} />}
{isCurrentUserOwner && <Button colorStyle="danger" label="Delete" onClick={deleteVault} />}
{!isCurrentUserOwner && vault.isSharedVaultListing() && <Button label="Leave Vault" onClick={leaveVault} />}
{isCurrentUserAdmin ? (
vault.isSharedVaultListing() ? (
<Button colorStyle="info" label="Invite Contacts" onClick={openInviteModal} />

View File

@@ -66,11 +66,11 @@ const EditVaultModalContent: FunctionComponent<{
if (existingVault.isSharedVaultListing()) {
setIsAdmin(
existingVault.isSharedVaultListing() && application.vaultUsers.isCurrentUserSharedVaultOwner(existingVault),
existingVault.isSharedVaultListing() && application.vaultUsers.isCurrentUserSharedVaultAdmin(existingVault),
)
setIsLoadingCollaborationInfo(true)
const users = await application.vaultUsers.getSharedVaultUsers(existingVault)
const users = await application.vaultUsers.getSharedVaultUsersFromServer(existingVault)
if (users) {
setMembers(users)
}

View File

@@ -1,9 +1,8 @@
import { useCallback } from 'react'
import { useApplication } from '@/Components/ApplicationProvider'
import { SharedVaultInviteServerHash, SharedVaultUserPermission } from '@standardnotes/snjs'
import { SharedVaultInviteServerHash } from '@standardnotes/snjs'
import Icon from '@/Components/Icon/Icon'
import Button from '@/Components/Button/Button'
import { capitalizeString } from '@/Utils'
export const VaultModalInvites = ({
invites,
@@ -30,10 +29,7 @@ export const VaultModalInvites = ({
<div className="space-y-3.5">
{invites.map((invite) => {
const contact = application.contacts.findContactForInvite(invite)
const permission =
invite.permission === SharedVaultUserPermission.PERMISSIONS.Write
? 'Read / Write'
: capitalizeString(invite.permission)
const permission = application.vaultUsers.getFormattedMemberPermission(invite.permission)
return (
<div

View File

@@ -1,9 +1,8 @@
import { useCallback } from 'react'
import { useApplication } from '@/Components/ApplicationProvider'
import { SharedVaultUserPermission, SharedVaultUserServerHash, VaultListingInterface } from '@standardnotes/snjs'
import { SharedVaultUserServerHash, VaultListingInterface } from '@standardnotes/snjs'
import Icon from '@/Components/Icon/Icon'
import Button from '@/Components/Button/Button'
import { capitalizeString } from '@/Utils'
export const VaultModalMembers = ({
members,
@@ -35,10 +34,7 @@ export const VaultModalMembers = ({
{members.map((member) => {
const isMemberVaultOwner = application.vaultUsers.isVaultUserOwner(member)
const contact = application.contacts.findContactForServerUser(member)
const permission =
member.permission === SharedVaultUserPermission.PERMISSIONS.Write
? 'Read / Write'
: capitalizeString(member.permission)
const permission = application.vaultUsers.getFormattedMemberPermission(member.permission)
return (
<div