diff --git a/common/script/index.coffee b/common/script/index.coffee index 789ba7ecae..af7f1efe3d 100644 --- a/common/script/index.coffee +++ b/common/script/index.coffee @@ -349,6 +349,18 @@ Friendly timestamp ### api.friendlyTimestamp = (timestamp) -> moment(timestamp).format('MM/DD h:mm:ss a') +### +ISO timestamp +### +api.isoTimestamp = (timestamp) -> moment(timestamp).toISOString() + +### +plain timestamp +### +api.momentTimestamp = (timestamp) -> moment(timestamp) + + + ### Does user have new chat messages? ### diff --git a/website/public/js/controllers/settingsCtrl.js b/website/public/js/controllers/settingsCtrl.js index 5c83b5756c..c59fe7bb3b 100644 --- a/website/public/js/controllers/settingsCtrl.js +++ b/website/public/js/controllers/settingsCtrl.js @@ -66,12 +66,23 @@ habitrpg.controller('SettingsCtrl', User.set({'flags.newStuff':true}); } - $scope.saveDayStart = function(){ - var dayStart = +User.user.preferences.dayStart; - if (_.isNaN(dayStart) || dayStart < 0 || dayStart > 24) { + $scope.passDayStart = User.user.preferences.dayStart; + + $scope.saveDayStart = function(newDayStart){ + var oldDayStart = User.user.preferences.dayStart; + var dayStart = newDayStart; + var lastCron = User.user.lastCron; + var getOldStart = Shared.startOfDay({ dayStart: oldDayStart}); + var getNewStart = Shared.startOfDay({ dayStart: dayStart}); + var isoNewStart = Shared.isoTimestamp(getNewStart); + + if (dayStart == undefined || _.isNaN(dayStart) || dayStart < 0 || dayStart > 24) { dayStart = 0; return alert(window.env.t('enterNumber')); } + if (Shared.momentTimestamp(getOldStart) <= Shared.momentTimestamp(lastCron) && Shared.momentTimestamp(lastCron) < Shared.momentTimestamp(getNewStart)) { + User.set({ 'lastCron' : isoNewStart}); + } User.set({'preferences.dayStart': dayStart}); } diff --git a/website/views/options/settings.jade b/website/views/options/settings.jade index 8aafb9529f..9b7ffb8628 100644 --- a/website/views/options/settings.jade +++ b/website/views/options/settings.jade @@ -83,7 +83,7 @@ script(type='text/ng-template', id='partials/options.settings.settings.html') h5(ng-if='showCustomDayStartInfo')!=env.t('customDayStartInfo4') .form-group .input-group - input.form-control(type='number', min='0', max='23', ng-model='user.preferences.dayStart', ng-blur='saveDayStart()') + input.form-control(type='number', min='0', max='23', ng-model='passDayStart', ng-blur='saveDayStart(passDayStart)') span.input-group-addon= ':00 (' + env.t('24HrClock') + ')' .personal-options.col-md-6 @@ -270,7 +270,7 @@ script(id='partials/options.settings.notifications.html', type="text/ng-template =env.t('emailNotifications') .panel-body - each notification in ['newPM', 'wonChallenge', 'giftedGems', 'giftedSubscription', 'invitedParty', 'invitedGuild', 'kickedGroup', 'questStarted', 'invitedQuest', 'inactivityEmails', 'weeklyRecaps'] + each notification in ['newPM', 'wonChallenge', 'giftedGems', 'giftedSubscription', 'invitedParty', 'invitedGuild', 'kickedGroup', 'questStarted', 'invitedQuest', 'inactivityEmails', 'weeklyRecaps'] -var preference = 'user.preferences.emailNotifications.' + notification -var unsubscribeFromAll = 'user.preferences.emailNotifications.unsubscribeFromAll'