Просмотр исходного кода

Merge branch 'GhassenRjab-hotfix/issue-1198' into devel

Fix errors caused by checklist items activities.
Thanks to GhassenRjab and nztqa ! Closes #1198
Lauri Ojansivu 7 лет назад
Родитель
Сommit
491a352792
2 измененных файлов с 32 добавлено и 12 удалено
  1. 10 1
      CHANGELOG.md
  2. 22 11
      models/checklists.js

+ 10 - 1
CHANGELOG.md

@@ -1,8 +1,17 @@
+# Upcoming Wekan release
+
+This release fixes the following bugs:
+
+* [Fix errors caused by checklist items activities](https://github.com/wekan/wekan/pull/1200).
+
+Thanks to GitHub users GhassenRjab and nztqa for contributions.
+
 # v0.34 2017-08-30 Wekan release
 
 This release adds the following new features:
 
-* [Import Trello and Wekan board times of creation of activities](https://github.com/wekan/wekan/pull/1187).
+* [Import Trello and Wekan board times of creation of activities](https://github.com/wekan/wekan/pull/1187);
+* Newest Wekan is available at Sandstorm App Market.
 
 Known issues:
 

+ 22 - 11
models/checklists.js

@@ -164,21 +164,32 @@ if (Meteor.isServer) {
   // The future is now
   Checklists.after.update((userId, doc, fieldNames, modifier) => {
     if (fieldNames.includes('items')) {
-      Activities.insert({
-        userId,
-        activityType: 'addChecklistItem',
-        cardId: doc.cardId,
-        boardId: Cards.findOne(doc.cardId).boardId,
-        checklistId: doc._id,
-        checklistItemId: modifier.$addToSet.items._id,
-      });
+      if (modifier.$addToSet) {
+        Activities.insert({
+          userId,
+          activityType: 'addChecklistItem',
+          cardId: doc.cardId,
+          boardId: Cards.findOne(doc.cardId).boardId,
+          checklistId: doc._id,
+          checklistItemId: modifier.$addToSet.items._id,
+        });
+      } else if (modifier.$pull) {
+        const activity = Activities.findOne({
+          checklistItemId: modifier.$pull.items._id,
+        });
+        if (activity) {
+          Activities.remove(activity._id);
+        }
+      }
     }
   });
 
   Checklists.before.remove((userId, doc) => {
-    const activity = Activities.findOne({ checklistId: doc._id });
-    if (activity) {
-      Activities.remove(activity._id);
+    const activities = Activities.find({ checklistId: doc._id });
+    if (activities) {
+      activities.forEach((activity) => {
+        Activities.remove(activity._id);
+      });
     }
   });
 }