From 779ef1967b193f70e1059fa8ebcaef19426ba9d7 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 27 Mar 2023 11:05:43 +0600 Subject: [PATCH] fix: handle string dates Signed-off-by: Rakib Ansary --- src/common/challenge-helper.js | 20 ++++++++++++++++---- src/services/ChallengeService.js | 5 +++-- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/common/challenge-helper.js b/src/common/challenge-helper.js index b9f8eba0..4ad89541 100644 --- a/src/common/challenge-helper.js +++ b/src/common/challenge-helper.js @@ -301,10 +301,10 @@ class ChallengeHelper { } } - if (challenge.created) challenge.created = new Date(challenge.created).toISOString(); - if (challenge.updated) challenge.updated = new Date(challenge.updated).toISOString(); - if (challenge.startDate) challenge.startDate = new Date(challenge.startDate).toISOString(); - if (challenge.endDate) challenge.endDate = new Date(challenge.endDate).toISOString(); + if (challenge.created) challenge.created = convertDateToISOString(challenge.created); + if (challenge.updated) challenge.updated = convertDateToISOString(challenge.updated); + if (challenge.startDate) challenge.startDate = convertDateToISOString(challenge.startDate); + if (challenge.endDate) challenge.endDate = convertDateToISOString(challenge.endDate); if (track) { challenge.track = track.name; @@ -324,6 +324,18 @@ class ChallengeHelper { }); } + convertDateToISOString(startDate) { + if (typeof startDate === "string" && !isNaN(startDate)) { + startDate = parseInt(startDate); + } + if (typeof startDate === "number") { + const date = new Date(startDate); + return date.toISOString(); + } else { + return startDate; + } + } + convertPrizeSetValuesToCents(prizeSets) { prizeSets.forEach((prizeSet) => { prizeSet.prizes.forEach((prize) => { diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 45603fd7..450b47af 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -42,6 +42,7 @@ const { sanitizeRepeatedFieldsInUpdateRequest, convertPrizeSetValuesToCents, convertPrizeSetValuesToDollars, + convertDateToISOString, } = require("../common/challenge-helper"); const deepEqual = require("deep-equal"); @@ -1035,7 +1036,7 @@ async function createChallenge(currentUser, challenge, userToken) { if (!challenge.startDate) { challenge.startDate = new Date().toISOString(); } else { - challenge.startDate = new Date(challenge.startDate).toISOString(); + challenge.startDate = convertDateToISOString(challenge.startDate); } const { track, type } = await challengeHelper.validateAndGetChallengeTypeAndTrack(challenge); @@ -1750,7 +1751,7 @@ async function updateChallenge(currentUser, challengeId, data) { } data.phases = newPhases; - data.startDate = new Date(newStartDate).toISOString(); + data.startDate = convertDateToISOString(newStartDate); data.endDate = helper.calculateChallengeEndDate(challenge, data); }