From 455f7ac59bd50cd28b1b3a8914cdac8e00b244cf Mon Sep 17 00:00:00 2001 From: negue Date: Sat, 14 Apr 2018 16:16:25 +0200 Subject: [PATCH] round priority on update too (#10186) * round priority on update too * move the fix to Task sanitizeTransform * refactor the task.priority parsing --- test/api/v3/integration/tasks/PUT-tasks_id.test.js | 10 ++++++++++ website/server/controllers/api-v3/tasks.js | 3 +-- website/server/libs/taskManager.js | 5 ----- website/server/models/task.js | 8 ++++++++ 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/test/api/v3/integration/tasks/PUT-tasks_id.test.js b/test/api/v3/integration/tasks/PUT-tasks_id.test.js index aba6c254cf..d7cc313f35 100644 --- a/test/api/v3/integration/tasks/PUT-tasks_id.test.js +++ b/test/api/v3/integration/tasks/PUT-tasks_id.test.js @@ -296,6 +296,16 @@ describe('PUT /tasks/:id', () => { expect(fetchedDaily.text).to.eql('saved'); }); + + // This is a special case for iOS requests + it('will round a priority (difficulty)', async () => { + daily = await user.put(`/tasks/${daily._id}`, { + alias: 'alias', + priority: 0.10000000000005, + }); + + expect(daily.priority).to.eql(0.1); + }); }); context('habits', () => { diff --git a/website/server/controllers/api-v3/tasks.js b/website/server/controllers/api-v3/tasks.js index 7497761565..97d79cb3f6 100644 --- a/website/server/controllers/api-v3/tasks.js +++ b/website/server/controllers/api-v3/tasks.js @@ -458,7 +458,6 @@ api.updateTask = { let oldCheckList = task.checklist; // we have to convert task to an object because otherwise things don't get merged correctly. Bad for performances? let [updatedTaskObj] = common.ops.updateTask(task.toObject(), req); - // Sanitize differently user tasks linked to a challenge let sanitizedObj; @@ -471,6 +470,7 @@ api.updateTask = { } _.assign(task, sanitizedObj); + // console.log(task.modifiedPaths(), task.toObject().repeat === tep) // repeat is always among modifiedPaths because mongoose changes the other of the keys when using .toObject() // see https://github.com/Automattic/mongoose/issues/2749 @@ -481,7 +481,6 @@ api.updateTask = { } setNextDue(task, user); - let savedTask = await task.save(); if (group && task.group.id && task.group.assignedUsers.length > 0) { diff --git a/website/server/libs/taskManager.js b/website/server/libs/taskManager.js index 8e1655ab6f..1e6914f111 100644 --- a/website/server/libs/taskManager.js +++ b/website/server/libs/taskManager.js @@ -89,11 +89,6 @@ export async function createTasks (req, res, options = {}) { let taskType = taskData.type; let newTask = new Tasks[taskType](Tasks.Task.sanitize(taskData)); - // Attempt to round priority - if (newTask.priority && !Number.isNaN(Number.parseFloat(newTask.priority))) { - newTask.priority = Number(newTask.priority.toFixed(1)); - } - if (challenge) { newTask.challenge.id = challenge.id; } else if (group) { diff --git a/website/server/models/task.js b/website/server/models/task.js index 866d3b5c68..026d922714 100644 --- a/website/server/models/task.js +++ b/website/server/models/task.js @@ -131,6 +131,14 @@ TaskSchema.plugin(baseModel, { delete taskObj.value; } + if (taskObj.priority) { + let parsedFloat = Number.parseFloat(taskObj.priority); + + if (!Number.isNaN(parsedFloat)) { + taskObj.priority = parsedFloat.toFixed(1); + } + } + return taskObj; }, private: [],