31 lines
970 B
JavaScript
31 lines
970 B
JavaScript
import LibraryCollections from '/imports/api/library/LibraryCollections.js';
|
|
import Libraries from '/imports/api/library/Libraries.js';
|
|
import { union } from 'lodash';
|
|
|
|
export default function getUserLibraryIds(userId) {
|
|
if (!userId) return [];
|
|
const user = Meteor.users.findOne(userId);
|
|
let subbedIds = user?.subscribedLibraries || [];
|
|
const subCollections = user?.subscribedLibraryCollections || [];
|
|
LibraryCollections.find({
|
|
$or: [
|
|
{ owner: userId },
|
|
{ writers: userId },
|
|
{ readers: userId },
|
|
{ _id: { $in: subCollections }, public: true },
|
|
]
|
|
}, { fields: { libraries: 1 } }).forEach(collection => {
|
|
subbedIds = union(subbedIds, collection.libraries);
|
|
});
|
|
const libraryIds = Libraries.find({
|
|
$or: [
|
|
{ owner: userId },
|
|
{ writers: userId },
|
|
{ readers: userId },
|
|
{ _id: { $in: subbedIds }, public: true },
|
|
]
|
|
}, {
|
|
fields: { _id: 1 }
|
|
}).map(lib => lib._id);
|
|
return libraryIds;
|
|
} |