triggers.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { Meteor } from 'meteor/meteor';
  2. Triggers = new Mongo.Collection('triggers');
  3. Triggers.mutations({
  4. rename(description) {
  5. return {
  6. $set: {
  7. description,
  8. },
  9. };
  10. },
  11. });
  12. Triggers.allow({
  13. insert(userId, doc) {
  14. return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
  15. },
  16. update(userId, doc) {
  17. return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
  18. },
  19. remove(userId, doc) {
  20. return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
  21. },
  22. });
  23. Triggers.helpers({
  24. description() {
  25. return this.desc;
  26. },
  27. getRule() {
  28. return Rules.findOne({
  29. triggerId: this._id,
  30. });
  31. },
  32. fromList() {
  33. return Lists.findOne(this.fromId);
  34. },
  35. toList() {
  36. return Lists.findOne(this.toId);
  37. },
  38. findList(title) {
  39. return Lists.findOne({
  40. title,
  41. });
  42. },
  43. labels() {
  44. const boardLabels = this.board().labels;
  45. const cardLabels = _.filter(boardLabels, (label) => {
  46. return _.contains(this.labelIds, label._id);
  47. });
  48. return cardLabels;
  49. },
  50. });
  51. Triggers.before.update((userId, doc, fieldNames, modifier, options) => {
  52. modifier.$set = modifier.$set || {};
  53. modifier.$set.modifiedAt = Date.now();
  54. });
  55. if (Meteor.isServer) {
  56. Meteor.startup(() => {
  57. Triggers._collection._ensureIndex({ modifiedAt: -1 });
  58. });
  59. }
  60. export default Triggers;