123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- CardComments = new Mongo.Collection('card_comments');
- CardComments.attachSchema(new SimpleSchema({
- boardId: {
- type: String,
- },
- cardId: {
- type: String,
- },
- // XXX Rename in `content`? `text` is a bit vague...
- text: {
- type: String,
- },
- // XXX We probably don't need this information here, since we already have it
- // in the associated comment creation activity
- createdAt: {
- type: Date,
- denyUpdate: false,
- },
- // XXX Should probably be called `authorId`
- userId: {
- type: String,
- },
- }));
- CardComments.allow({
- insert(userId, doc) {
- return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
- },
- update(userId, doc) {
- return userId === doc.userId;
- },
- remove(userId, doc) {
- return userId === doc.userId;
- },
- fetch: ['userId', 'boardId'],
- });
- CardComments.helpers({
- user() {
- return Users.findOne(this.userId);
- },
- });
- CardComments.hookOptions.after.update = { fetchPrevious: false };
- CardComments.before.insert((userId, doc) => {
- doc.createdAt = new Date();
- doc.userId = userId;
- });
- if (Meteor.isServer) {
- CardComments.after.insert((userId, doc) => {
- Activities.insert({
- userId,
- activityType: 'addComment',
- boardId: doc.boardId,
- cardId: doc.cardId,
- commentId: doc._id,
- });
- });
- CardComments.after.remove((userId, doc) => {
- const activity = Activities.findOne({ commentId: doc._id });
- if (activity) {
- Activities.remove(activity._id);
- }
- });
- }
|