Răsfoiți Sursa

fixed Members do not get included on board import from WeKan #1255

fixed multiple errors where constants were mistakenly overridden.(or
trying to get a property of an object after making sure it doesn't
exits)

renamed wekanBoard Parameter from createBoardAndLabels for clairity

reworked adding admin for imorter
Keven Kurz PC 7 ani în urmă
părinte
comite
e8cfed1f7b
1 a modificat fișierele cu 21 adăugiri și 33 ștergeri
  1. 21 33
      models/wekanCreator.js

+ 21 - 33
models/wekanCreator.js

@@ -133,47 +133,35 @@ export class WekanCreator {
   }
 
   // You must call parseActions before calling this one.
-  createBoardAndLabels(wekanBoard) {
+  createBoardAndLabels(boardToImport) {
     const boardToCreate = {
-      archived: wekanBoard.archived,
-      color: wekanBoard.color,
+      archived: boardToImport.archived,
+      color: boardToImport.color,
       // very old boards won't have a creation activity so no creation date
-      createdAt: this._now(wekanBoard.createdAt),
+      createdAt: this._now(boardToImport.createdAt),
       labels: [],
-      members: [{
-        userId: Meteor.userId(),
-        isAdmin: true,
-        isActive: true,
-        isCommentOnly: false,
-      }],
+      members: [],
       // Standalone Export has modifiedAt missing, adding modifiedAt to fix it
-      modifiedAt: this._now(wekanBoard.modifiedAt),
-      permission: wekanBoard.permission,
-      slug: getSlug(wekanBoard.title) || 'board',
+      modifiedAt: this._now(boardToImport.modifiedAt),
+      permission: boardToImport.permission,
+      slug: getSlug(boardToImport.title) || 'board',
       stars: 0,
-      title: wekanBoard.title,
+      title: boardToImport.title,
     };
     // now add other members
-    if(wekanBoard.members) {
-      wekanBoard.members.forEach((wekanMember) => {
-        const wekanId = wekanMember.userId;
-        // do we have a mapping?
-        if(this.members[wekanId]) {
-          const wekanId = this.members[wekanId];
-          // do we already have it in our list?
-          const wekanMember = boardToCreate.members.find((wekanMember) => wekanMember.userId === wekanId);
-          if(!wekanMember) {
-            boardToCreate.members.push({
-              userId: wekanId,
-              isAdmin: wekanMember.isAdmin,
-              isActive: true,
-              isCommentOnly: false,
-            });
-          }
-        }
+    if(boardToImport.members) {
+      boardToImport.members.forEach((wekanMember) => {
+        // do we already have it in our list?
+        const foundWekanMember = boardToCreate.members.find((member) => member.wekanId === wekanMember.wekanId);
+        if(!foundWekanMember)
+          boardToCreate.members.push({
+            ... wekanMember,
+            userId: wekanMember.wekanId,
+            ...Meteor.userId() === wekanMember.wekanId ? {isAdmin: true} : {}, // make impoter admin
+          });
       });
     }
-    wekanBoard.labels.forEach((label) => {
+    boardToImport.labels.forEach((label) => {
       const labelToCreate = {
         _id: Random.id(6),
         color: label.color,
@@ -192,7 +180,7 @@ export class WekanCreator {
       boardId,
       createdAt: this._now(),
       source: {
-        id: wekanBoard.id,
+        id: boardToImport.id,
         system: 'Wekan',
       },
       // We attribute the import to current user,