triggers.js 1.5 KB

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