chore: vault member permissions (#2509)
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
|
||||
@@ -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} />
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user