From c5b0833bf201179627f528bed6cbc51c819b115e Mon Sep 17 00:00:00 2001 From: Benja Appel <78376862+Lyqst@users.noreply.github.com> Date: Fri, 17 Sep 2021 18:33:42 -0300 Subject: [PATCH] fix cloned challenge task order (#13328) (#13506) * fix cloned challenge task order (#13328) * fix lint errors --- .../server/controllers/api-v3/challenges.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/website/server/controllers/api-v3/challenges.js b/website/server/controllers/api-v3/challenges.js index 51b5bb1229..f2d0b09747 100644 --- a/website/server/controllers/api-v3/challenges.js +++ b/website/server/controllers/api-v3/challenges.js @@ -860,10 +860,20 @@ api.cloneChallenge = { const { savedChal } = await createChallenge(user, req, res); - const challengeTasks = await Tasks.Task.find({ - 'challenge.id': challengeToClone._id, - userId: { $exists: false }, - }).exec(); + const challengeTaskIds = [ + ...challengeToClone.tasksOrder.habits, + ...challengeToClone.tasksOrder.dailys, + ...challengeToClone.tasksOrder.todos, + ...challengeToClone.tasksOrder.rewards, + ]; + + const challengeTasks = await Promise.all(challengeTaskIds.map(async taskId => { + const task = Tasks.Task.findById(taskId).exec(); + return task; + })); + + // last task should be added first and vice-versa, since new tasks are prepended + challengeTasks.reverse(); const tasksToClone = challengeTasks.map(task => { const clonedTask = cloneDeep(task.toObject());