From 3f7d351aee77331bab0668e05fca88191880f742 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Tue, 2 Apr 2024 19:59:35 -0400 Subject: [PATCH] Default collection and document permissions based on user role --- app/components/Sharing/SharePopover.tsx | 16 ++++++++++++---- .../AddPeopleToCollection.tsx | 5 +++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/components/Sharing/SharePopover.tsx b/app/components/Sharing/SharePopover.tsx index f2fa3cdda..ae93ab9ab 100644 --- a/app/components/Sharing/SharePopover.tsx +++ b/app/components/Sharing/SharePopover.tsx @@ -7,6 +7,7 @@ import { useTranslation } from "react-i18next"; import { toast } from "sonner"; import styled from "styled-components"; import { s } from "@shared/styles"; +import { DocumentPermission, UserRole } from "@shared/types"; import Document from "~/models/Document"; import Share from "~/models/Share"; import CopyToClipboard from "~/components/CopyToClipboard"; @@ -150,12 +151,19 @@ function SharePopover({ section: UserSection, perform: async () => { await Promise.all( - pendingIds.map((userId) => - userMemberships.create({ + pendingIds.map((userId) => { + const user = users.get(userId); + + return userMemberships.create({ documentId: document.id, userId, - }) - ) + permission: + user?.role === UserRole.Viewer || + user?.role === UserRole.Guest + ? DocumentPermission.Read + : DocumentPermission.ReadWrite, + }); + }) ); if (pendingIds.length === 1) { diff --git a/app/scenes/CollectionPermissions/AddPeopleToCollection.tsx b/app/scenes/CollectionPermissions/AddPeopleToCollection.tsx index 6fd29ebc7..67f72fba9 100644 --- a/app/scenes/CollectionPermissions/AddPeopleToCollection.tsx +++ b/app/scenes/CollectionPermissions/AddPeopleToCollection.tsx @@ -2,6 +2,7 @@ import { observer } from "mobx-react"; import * as React from "react"; import { useTranslation } from "react-i18next"; import { toast } from "sonner"; +import { CollectionPermission, UserRole } from "@shared/types"; import Collection from "~/models/Collection"; import User from "~/models/User"; import Invite from "~/scenes/Invite"; @@ -51,6 +52,10 @@ function AddPeopleToCollection({ collection }: Props) { const handleAddUser = async (user: User) => { try { await memberships.create({ + permission: + user.role === UserRole.Viewer || user.role === UserRole.Guest + ? CollectionPermission.Read + : CollectionPermission.ReadWrite, collectionId: collection.id, userId: user.id, });