From 8f21fb2419042bb75cd29713c39bef15c2dc3d3e Mon Sep 17 00:00:00 2001 From: Alys Date: Sat, 31 Oct 2015 17:43:47 +0900 Subject: [PATCH] set lastCron to current moment if the user's timezone has changed when they authenticate --- common/script/public/userServices.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/common/script/public/userServices.js b/common/script/public/userServices.js index b26a4c531d..0f9dcbd3ae 100644 --- a/common/script/public/userServices.js +++ b/common/script/public/userServices.js @@ -182,7 +182,13 @@ angular.module('habitrpg') // If they don't have timezone, set it var offset = moment().zone(); // eg, 240 - this will be converted on server as -(offset/60) if (user.preferences.timezoneOffset !== offset) - userServices.set({'preferences.timezoneOffset': offset}); + // User's timezone has changed, which can trigger a second + // cron in one day - bad! Prevent it by setting lastCron to + // now (plus a little bit of time in case login is slow). + // FIXME: This can also prevent a cron that should run (but + // that's less serious than damage from an extra cron). + var soon = moment().add(1, 'day'); + userServices.set({'lastCron': soon, 'preferences.timezoneOffset': offset}); cb && cb(); }); } else {