diff --git a/src/components/Dashboard/DashboardAnnotationList/DashboardAnnotationList.js b/src/components/Dashboard/DashboardAnnotationList/DashboardAnnotationList.js index a07adf4a..81d7fb0a 100644 --- a/src/components/Dashboard/DashboardAnnotationList/DashboardAnnotationList.js +++ b/src/components/Dashboard/DashboardAnnotationList/DashboardAnnotationList.js @@ -17,7 +17,7 @@ const DashboardAnnotationList = ({ tab, mode, }) => { - const [groupState, setGroupState] = useState({}); + const [annotationsGroupState, setAnnotationsGroupState] = useState({}); const [key, setKey] = useState(tab || 'mine'); const [listLoading, setListLoading] = useState(true); const [annotations, setAnnotations] = useState([]); @@ -49,14 +49,18 @@ const DashboardAnnotationList = ({ if (annotations) { const fetchGroupState = async () => { annotations.map((annotation) => annotation.permissions.groups.map(async (group) => { - if (!groupState[group]) { - setGroupState({ ...groupState, [group]: await getGroupNameById(group) }); + if (!annotationsGroupState[group]) { + const name = await getGroupNameById(group); + setAnnotationsGroupState((prevState) => ({ + ...prevState, + [group]: name, + })); } })); }; fetchGroupState(); } - }, [annotations, groupState]); + }, [annotations]); return ( @@ -109,15 +113,16 @@ const DashboardAnnotationList = ({ {annotation.target.document.title} {' ('} {FirstNameLastInitial(annotation.creator.name)} - ) + {') '} {annotation.permissions.groups - && annotation.permissions.groups.length > 0 && ( + && annotation.permissions.groups.length > 0 + && annotation.permissions.private === false && ( - {groupState[annotation.permissions.groups.sort()[0]]} + {annotationsGroupState[annotation.permissions.groups.sort()[0]]} )} diff --git a/src/components/Dashboard/DashboardDocumentList/DashboardDocumentList.js b/src/components/Dashboard/DashboardDocumentList/DashboardDocumentList.js index c4c366b6..9bf9ea7d 100644 --- a/src/components/Dashboard/DashboardDocumentList/DashboardDocumentList.js +++ b/src/components/Dashboard/DashboardDocumentList/DashboardDocumentList.js @@ -14,7 +14,7 @@ const DashboardDocumentList = ({ alerts, setAlerts, }) => { - const [groupState, setGroupState] = useState({}); + const [documentGroupState, setDocumentGroupState] = useState({}); const [key, setKey] = useState('shared'); const [listLoading, setListLoading] = useState(true); const [documents, setDocuments] = useState([]); @@ -45,14 +45,18 @@ const DashboardDocumentList = ({ if (documents) { const fetchGroupState = async () => { documents.map((document) => document.groups.map(async (group) => { - if (!groupState[group]) { - setGroupState({ ...groupState, [group]: await getGroupNameById(group) }); + if (!documentGroupState[group]) { + const name = await getGroupNameById(group); + setDocumentGroupState((prevState) => ({ + ...prevState, + [group]: name, + })); } })); }; fetchGroupState(); } - }, [documents, groupState]); + }, [documents, documentGroupState]); return ( @@ -87,7 +91,7 @@ const DashboardDocumentList = ({ key={document.groups.sort()[0]} className="mr-2" > - {groupState[document.groups.sort()[0]]} + {documentGroupState[document.groups.sort()[0]]} )} <> diff --git a/src/pages/api/annotations.js b/src/pages/api/annotations.js index 19bafef5..494b535a 100644 --- a/src/pages/api/annotations.js +++ b/src/pages/api/annotations.js @@ -45,7 +45,27 @@ const handler = async (req, res) => { } } else res.status(403).end('Unauthorized'); } else if (groupIds) { - res.status(404).end('Not yet implemented'); + const { db } = await connectToDatabase(); + if (limit) { + const arr = await db + .collection('annotations') + .find({ + 'permissions.private': false, + 'permissions.groups': { $in: groupIds }, + }) + .limit(parseInt(limit, 10)) + .toArray(); + res.status(200).json({ annotations: arr }); + } else { + const arr = await db + .collection('annotations') + .find({ + 'permissions.private': false, + 'permissions.groups': { $in: groupIds }, + }) + .toArray(); + res.status(200).json({ annotations: arr }); + } } else res.status(400).end('Bad request'); } else res.status(403).end('Invalid or expired token'); } else if (method === 'PATCH') {