UNPKG

labo-components

Version:
47 lines (40 loc) 1.67 kB
import AnnotationUtil from './AnnotationUtil'; import AnnotationAPI from '../api/AnnotationAPI'; export default class BookmarkUtil { static bookmarkToGroupInProject = (resourceId, collectionId, allGroups, selectedGroups, onSaveFunc) => { //run through all the bookmark groups to check if this resource is a member. Then check if it should be a member or not (anymore) allGroups.forEach(group => { const targets = group.target; const shouldBeMember = selectedGroups[group.id] === true; //should the resource be a member or not //first see if the resource is a member of the current group const index = targets.findIndex(t => t.source === resourceId) //this check only updates the bookmark group (and calls the annotation API) if membership changed if(index !== -1) { // if already a member if(!shouldBeMember) { // ...and it shouldn't: remove it targets.splice(index, 1); group.target = targets; AnnotationAPI.saveAnnotation(group, onSaveFunc); } } else { //if not a member if(shouldBeMember) { // ...and it should be: add it targets.push( AnnotationUtil.generateResourceLevelTarget(collectionId, resourceId) ); //FIXME remove: this deduplocation check should not be necessary? const temp = {}; const dedupedTargets = []; targets.forEach((t) => { if(!temp[t.source]) { temp[t.source] = true; dedupedTargets.push(t); } }); //set the deduped targets as the annotation target group.target = dedupedTargets; AnnotationAPI.saveAnnotation(group, onSaveFunc); } } }) }; //TODO move more bookmark related functions here }