From cfd2e4a40462dfbf0079cb7ef6a235d27c48967b Mon Sep 17 00:00:00 2001
From: vynmera <39674991+vynmera@users.noreply.github.com>
Date: Sat, 16 Jun 2018 19:17:58 +0000
Subject: [PATCH 1/3] it shows the time in a cute format
---
.../chatpal-search/client/template/result.js | 9 ++++++++-
packages/rocketchat-api/server/v1/users.js | 1 +
packages/rocketchat-i18n/i18n/en.i18n.json | 2 ++
.../client/messageAttachment.js | 18 ++++++++++++++++--
.../client/page/snippetPage.js | 9 ++++++++-
.../client/accountPreferences.html | 13 +++++++++++++
.../client/accountPreferences.js | 1 +
.../client/tabs/uploadedFilesList.js | 9 ++++++++-
.../client/tabs/userInfo.js | 9 ++++++++-
.../rocketchat-ui-message/client/message.js | 18 ++++++++++++++++--
server/methods/saveUserPreferences.js | 1 +
tests/data/user.js | 1 +
12 files changed, 83 insertions(+), 8 deletions(-)
diff --git a/packages/chatpal-search/client/template/result.js b/packages/chatpal-search/client/template/result.js
index b78a899560aa..e415f940a4a2 100644
--- a/packages/chatpal-search/client/template/result.js
+++ b/packages/chatpal-search/client/template/result.js
@@ -100,7 +100,14 @@ Template.ChatpalSearchSingleMessage.helpers({
},
time() {
- return moment(this.created).format(RocketChat.settings.get('Message_TimeFormat'));
+ switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
+ case 1:
+ return moment(this.created).format('h:mm A');
+ case 2:
+ return moment(this.created).format('H:mm');
+ default:
+ return moment(this.created).format(RocketChat.settings.get('Message_TimeFormat'));
+ }
},
date() {
return moment(this.created).format(RocketChat.settings.get('Message_DateFormat'));
diff --git a/packages/rocketchat-api/server/v1/users.js b/packages/rocketchat-api/server/v1/users.js
index 496833312557..b8f12a72b467 100644
--- a/packages/rocketchat-api/server/v1/users.js
+++ b/packages/rocketchat-api/server/v1/users.js
@@ -321,6 +321,7 @@ RocketChat.API.v1.addRoute('users.setPreferences', { authRequired: true }, {
data: Match.ObjectIncluding({
newRoomNotification: Match.Maybe(String),
newMessageNotification: Match.Maybe(String),
+ clockMode: Match.Maybe(Number),
useEmojis: Match.Maybe(Boolean),
convertAsciiEmoji: Match.Maybe(Boolean),
saveMobileBandwidth: Match.Maybe(Boolean),
diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json
index 8b65d06cd259..1a1c2bb444bf 100644
--- a/packages/rocketchat-i18n/i18n/en.i18n.json
+++ b/packages/rocketchat-i18n/i18n/en.i18n.json
@@ -1,7 +1,9 @@
{
"#channel": "#channel",
"0_Errors_Only": "0 - Errors Only",
+ "12_Hour": "12-hour clock",
"1_Errors_and_Information": "1 - Errors and Information",
+ "24_Hour": "24-hour clock",
"2_Erros_Information_and_Debug": "2 - Errors, Information and Debug",
"403": "Forbidden",
"500": "Internal Server Error",
diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.js b/packages/rocketchat-message-attachments/client/messageAttachment.js
index 37acc16c00ba..55e524200ddf 100644
--- a/packages/rocketchat-message-attachments/client/messageAttachment.js
+++ b/packages/rocketchat-message-attachments/client/messageAttachment.js
@@ -50,9 +50,23 @@ Template.messageAttachment.helpers({
const messageDate = new Date(this.ts);
const today = new Date();
if (messageDate.toDateString() === today.toDateString()) {
- return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat'));
+ switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
+ case 1:
+ return moment(this.ts).format('h:mm A');
+ case 2:
+ return moment(this.ts).format('H:mm');
+ default:
+ return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat'));
+ }
} else {
- return moment(this.ts).format(RocketChat.settings.get('Message_TimeAndDateFormat'));
+ switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
+ case 1:
+ return moment(this.ts).format('MMMM D, Y h:mm A');
+ case 2:
+ return moment(this.ts).format('MMMM D, Y H:mm');
+ default:
+ return moment(this.ts).format(RocketChat.settings.get('Message_TimeAndDateFormat'));
+ }
}
},
injectIndex(data, previousIndex, index) {
diff --git a/packages/rocketchat-message-snippet/client/page/snippetPage.js b/packages/rocketchat-message-snippet/client/page/snippetPage.js
index 0700dcf9d611..da729e01467f 100644
--- a/packages/rocketchat-message-snippet/client/page/snippetPage.js
+++ b/packages/rocketchat-message-snippet/client/page/snippetPage.js
@@ -23,7 +23,14 @@ Template.snippetPage.helpers({
time() {
const snippet = SnippetedMessages.findOne({ _id: FlowRouter.getParam('snippetId') });
if (snippet !== undefined) {
- return moment(snippet.ts).format(RocketChat.settings.get('Message_TimeFormat'));
+ switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
+ case 1:
+ return moment(snippet.ts).format('h:mm A');
+ case 2:
+ return moment(snippet.ts).format('H:mm');
+ default:
+ return moment(snippet.ts).format(RocketChat.settings.get('Message_TimeFormat'));
+ }
}
}
});
diff --git a/packages/rocketchat-ui-account/client/accountPreferences.html b/packages/rocketchat-ui-account/client/accountPreferences.html
index 54f5fc161b85..8ed576631b88 100644
--- a/packages/rocketchat-ui-account/client/accountPreferences.html
+++ b/packages/rocketchat-ui-account/client/accountPreferences.html
@@ -144,6 +144,19 @@
diff --git a/packages/rocketchat-ui-account/client/accountPreferences.js b/packages/rocketchat-ui-account/client/accountPreferences.js
index 16bf02b97894..1007d006fec3 100644
--- a/packages/rocketchat-ui-account/client/accountPreferences.js
+++ b/packages/rocketchat-ui-account/client/accountPreferences.js
@@ -142,6 +142,7 @@ Template.accountPreferences.onCreated(function() {
data.newRoomNotification = $('select[name=newRoomNotification]').val();
data.newMessageNotification = $('select[name=newMessageNotification]').val();
+ data.clockMode = parseInt($('#clockMode').find('select').val());
data.useEmojis = JSON.parse($('input[name=useEmojis]:checked').val());
data.convertAsciiEmoji = JSON.parse($('input[name=convertAsciiEmoji]:checked').val());
data.saveMobileBandwidth = JSON.parse($('input[name=saveMobileBandwidth]:checked').val());
diff --git a/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js b/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js
index 75aededa69b7..a7ffa451e21d 100644
--- a/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js
+++ b/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js
@@ -63,7 +63,14 @@ Template.uploadedFilesList.helpers({
}
},
format(timestamp) {
- return moment(timestamp).format(RocketChat.settings.get('Message_TimeAndDateFormat') || 'LLL');
+ switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
+ case 1:
+ return moment(timestamp).format('MMMM D, Y h:mm A');
+ case 2:
+ return moment(timestamp).format('MMMM D, Y H:mm');
+ default:
+ return moment(timestamp).format(RocketChat.settings.get('Message_TimeAndDateFormat') || 'LLL');
+ }
},
files() {
return roomFiles.find({ rid: this.rid }, { sort: { uploadedAt: -1 } });
diff --git a/packages/rocketchat-ui-flextab/client/tabs/userInfo.js b/packages/rocketchat-ui-flextab/client/tabs/userInfo.js
index 11e3adf68950..2e09500b88ae 100644
--- a/packages/rocketchat-ui-flextab/client/tabs/userInfo.js
+++ b/packages/rocketchat-ui-flextab/client/tabs/userInfo.js
@@ -111,7 +111,14 @@ Template.userInfo.helpers({
userTime() {
const user = Template.instance().user.get();
if (user && user.utcOffset != null) {
- return Template.instance().now.get().utcOffset(user.utcOffset).format(RocketChat.settings.get('Message_TimeFormat'));
+ switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
+ case 1:
+ return Template.instance().now.get().utcOffset(user.utcOffset).format('h:mm A');
+ case 2:
+ return Template.instance().now.get().utcOffset(user.utcOffset).format('H:mm');
+ default:
+ return Template.instance().now.get().utcOffset(user.utcOffset).format(RocketChat.settings.get('Message_TimeFormat'));
+ }
}
},
diff --git a/packages/rocketchat-ui-message/client/message.js b/packages/rocketchat-ui-message/client/message.js
index 6cc3c7c855e7..57f22b429da2 100644
--- a/packages/rocketchat-ui-message/client/message.js
+++ b/packages/rocketchat-ui-message/client/message.js
@@ -98,7 +98,14 @@ Template.message.helpers({
}
},
time() {
- return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat'));
+ switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
+ case 1:
+ return moment(this.ts).format('h:mm A');
+ case 2:
+ return moment(this.ts).format('H:mm');
+ default:
+ return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat'));
+ }
},
date() {
return moment(this.ts).format(RocketChat.settings.get('Message_DateFormat'));
@@ -139,7 +146,14 @@ Template.message.helpers({
},
editTime() {
if (Template.instance().wasEdited) {
- return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } ${ RocketChat.settings.get('Message_TimeFormat') }`);
+ switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
+ case 1:
+ return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } h:mm A`);
+ case 2:
+ return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } H:mm`);
+ default:
+ return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } ${ RocketChat.settings.get('Message_TimeFormat') }`);
+ }
}
},
editedBy() {
diff --git a/server/methods/saveUserPreferences.js b/server/methods/saveUserPreferences.js
index f0516a11cf9f..e5d86868f680 100644
--- a/server/methods/saveUserPreferences.js
+++ b/server/methods/saveUserPreferences.js
@@ -4,6 +4,7 @@ Meteor.methods({
language: Match.Optional(String),
newRoomNotification: Match.Optional(String),
newMessageNotification: Match.Optional(String),
+ clockMode: Match.Optional(Number),
useEmojis: Match.Optional(Boolean),
convertAsciiEmoji: Match.Optional(Boolean),
saveMobileBandwidth: Match.Optional(Boolean),
diff --git a/tests/data/user.js b/tests/data/user.js
index 5fb7c0983c99..12c10bf832c6 100644
--- a/tests/data/user.js
+++ b/tests/data/user.js
@@ -10,6 +10,7 @@ export const preferences = {
newRoomNotification: 'door',
newMessageNotification: 'chime',
muteFocusedConversations: true,
+ clockMode: 0,
useEmojis: true,
convertAsciiEmoji: true,
saveMobileBandwidth: true,
From 727367247bf5a9648ad155e9fb0ee47964ec07af Mon Sep 17 00:00:00 2001
From: Guilherme Gazzo
Date: Tue, 18 Sep 2018 14:37:29 -0300
Subject: [PATCH 2/3] moment abstraction
---
.../chatpal-search/client/template/result.js | 13 +++-------
.../rocketchat-lib/client/lib/formatDate.js | 24 +++++++++++++++++++
packages/rocketchat-lib/client/lib/index.js | 2 ++
.../client/messageAttachment.js | 21 +++-------------
.../client/page/snippetPage.js | 12 ++--------
.../client/tabs/uploadedFilesList.js | 13 +++-------
.../client/tabs/userInfo.js | 10 ++------
.../rocketchat-ui-message/client/message.js | 21 ++++------------
8 files changed, 43 insertions(+), 73 deletions(-)
create mode 100644 packages/rocketchat-lib/client/lib/formatDate.js
diff --git a/packages/chatpal-search/client/template/result.js b/packages/chatpal-search/client/template/result.js
index 7951d612d9b1..b188e21b8a94 100644
--- a/packages/chatpal-search/client/template/result.js
+++ b/packages/chatpal-search/client/template/result.js
@@ -1,4 +1,4 @@
-import moment from 'moment';
+import { DateFormat } from 'meteor/rocketchat:lib';
Template.ChatpalSearchResultTemplate.onCreated(function() {
this.badRequest = new ReactiveVar(false);
@@ -100,17 +100,10 @@ Template.ChatpalSearchSingleMessage.helpers({
},
time() {
- switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
- case 1:
- return moment(this.created).format('h:mm A');
- case 2:
- return moment(this.created).format('H:mm');
- default:
- return moment(this.created).format(RocketChat.settings.get('Message_TimeFormat'));
- }
+ return DateFormat.formatTime(this.created);
},
date() {
- return moment(this.created).format(RocketChat.settings.get('Message_DateFormat'));
+ return DateFormat.formatDate(this.created);
},
});
diff --git a/packages/rocketchat-lib/client/lib/formatDate.js b/packages/rocketchat-lib/client/lib/formatDate.js
new file mode 100644
index 000000000000..94f6afa4a62c
--- /dev/null
+++ b/packages/rocketchat-lib/client/lib/formatDate.js
@@ -0,0 +1,24 @@
+import moment from 'moment';
+export const formatTime = (time) => {
+ switch (RocketChat.getUserPreference(Meteor.userId(), 'clockMode', false)) {
+ case 1:
+ return moment(time).format('h:mm A');
+ case 2:
+ return moment(time).format('H:mm');
+ default:
+ return moment(time).format(RocketChat.settings.get('Message_TimeFormat'));
+ }
+};
+
+export const formatDateAndTime = (time) => {
+ switch (RocketChat.getUserPreference(Meteor.userId(), 'clockMode', false)) {
+ case 1:
+ return moment(time).format('MMMM D, Y h:mm A');
+ case 2:
+ return moment(time).format('MMMM D, Y H:mm');
+ default:
+ return moment(time).format(RocketChat.settings.get('Message_TimeAndDateFormat'));
+ }
+};
+
+export const formatDate = (time) => moment(time).format(RocketChat.settings.get('Message_DateFormat'));
diff --git a/packages/rocketchat-lib/client/lib/index.js b/packages/rocketchat-lib/client/lib/index.js
index 1a77c5a97164..4684347c02a1 100644
--- a/packages/rocketchat-lib/client/lib/index.js
+++ b/packages/rocketchat-lib/client/lib/index.js
@@ -12,6 +12,7 @@ import { RoomSettingsEnum, RoomTypeConfig, RoomTypeRouteConfig, UiTextContext }
import { hide, leave, erase } from './ChannelActions';
import { call } from './callMethod';
import { LoginPresence } from './LoginPresence';
+import * as DateFormat from './formatDate';
export {
call,
@@ -25,4 +26,5 @@ export {
UiTextContext,
RocketChatAnnouncement,
LoginPresence,
+ DateFormat,
};
diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.js b/packages/rocketchat-message-attachments/client/messageAttachment.js
index c3b87bcb3bd9..73438fdd78e2 100644
--- a/packages/rocketchat-message-attachments/client/messageAttachment.js
+++ b/packages/rocketchat-message-attachments/client/messageAttachment.js
@@ -1,4 +1,4 @@
-import moment from 'moment';
+import { DateFormat } from 'meteor/rocketchat:lib';
import { fixCordova } from 'meteor/rocketchat:lazy-load';
const colors = {
good: '#35AC19',
@@ -58,24 +58,9 @@ Template.messageAttachment.helpers({
const messageDate = new Date(this.ts);
const today = new Date();
if (messageDate.toDateString() === today.toDateString()) {
- switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
- case 1:
- return moment(this.ts).format('h:mm A');
- case 2:
- return moment(this.ts).format('H:mm');
- default:
- return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat'));
- }
- } else {
- switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
- case 1:
- return moment(this.ts).format('MMMM D, Y h:mm A');
- case 2:
- return moment(this.ts).format('MMMM D, Y H:mm');
- default:
- return moment(this.ts).format(RocketChat.settings.get('Message_TimeAndDateFormat'));
- }
+ return DateFormat.formatTime(this.ts);
}
+ return DateFormat.formatDateAndTime(this.ts);
},
injectIndex(data, previousIndex, index) {
data.index = `${ previousIndex }.attachments.${ index }`;
diff --git a/packages/rocketchat-message-snippet/client/page/snippetPage.js b/packages/rocketchat-message-snippet/client/page/snippetPage.js
index dbd50faf51d4..a5242ccb3f06 100644
--- a/packages/rocketchat-message-snippet/client/page/snippetPage.js
+++ b/packages/rocketchat-message-snippet/client/page/snippetPage.js
@@ -1,5 +1,5 @@
/* global SnippetedMessages */
-import moment from 'moment';
+import { DateFormat } from 'meteor/rocketchat:lib';
Template.snippetPage.helpers({
snippet() {
@@ -23,14 +23,7 @@ Template.snippetPage.helpers({
time() {
const snippet = SnippetedMessages.findOne({ _id: FlowRouter.getParam('snippetId') });
if (snippet !== undefined) {
- switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
- case 1:
- return moment(snippet.ts).format('h:mm A');
- case 2:
- return moment(snippet.ts).format('H:mm');
- default:
- return moment(snippet.ts).format(RocketChat.settings.get('Message_TimeFormat'));
- }
+ return DateFormat.formatTime(snippet.ts);
}
},
});
@@ -41,4 +34,3 @@ Template.snippetPage.onCreated(function() {
Meteor.subscribe('snippetedMessage', snippetId);
});
});
-
diff --git a/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js b/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js
index 41600e04af3e..a32fc21b7d28 100644
--- a/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js
+++ b/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js
@@ -1,5 +1,5 @@
import { fixCordova } from 'meteor/rocketchat:lazy-load';
-import moment from 'moment';
+import { DateFormat } from 'meteor/rocketchat:lib';
import _ from 'underscore';
const roomFiles = new Mongo.Collection('room_files');
@@ -43,14 +43,7 @@ Template.uploadedFilesList.helpers({
}
},
format(timestamp) {
- switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
- case 1:
- return moment(timestamp).format('MMMM D, Y h:mm A');
- case 2:
- return moment(timestamp).format('MMMM D, Y H:mm');
- default:
- return moment(timestamp).format(RocketChat.settings.get('Message_TimeAndDateFormat') || 'LLL');
- }
+ return DateFormat.formatDateAndTime(timestamp);
},
fileTypeIcon() {
const [, extension] = this.name.match(/.*?\.(.*)$/);
@@ -96,7 +89,7 @@ Template.uploadedFilesList.helpers({
},
formatTimestamp(timestamp) {
- return moment(timestamp).format(RocketChat.settings.get('Message_TimeAndDateFormat') || 'LLL');
+ return DateFormat.formatDateAndTime(timestamp);
},
hasMore() {
diff --git a/packages/rocketchat-ui-flextab/client/tabs/userInfo.js b/packages/rocketchat-ui-flextab/client/tabs/userInfo.js
index 3d24fae9a06b..cfd4295d951e 100644
--- a/packages/rocketchat-ui-flextab/client/tabs/userInfo.js
+++ b/packages/rocketchat-ui-flextab/client/tabs/userInfo.js
@@ -2,6 +2,7 @@
import _ from 'underscore';
import s from 'underscore.string';
import moment from 'moment';
+import { DateFormat } from 'meteor/rocketchat:lib';
import { getActions } from './userActions';
@@ -113,14 +114,7 @@ Template.userInfo.helpers({
userTime() {
const user = Template.instance().user.get();
if (user && user.utcOffset != null) {
- switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
- case 1:
- return Template.instance().now.get().utcOffset(user.utcOffset).format('h:mm A');
- case 2:
- return Template.instance().now.get().utcOffset(user.utcOffset).format('H:mm');
- default:
- return Template.instance().now.get().utcOffset(user.utcOffset).format(RocketChat.settings.get('Message_TimeFormat'));
- }
+ return DateFormat.formatTime(Template.instance().now.get().utcOffset(user.utcOffset));
}
},
diff --git a/packages/rocketchat-ui-message/client/message.js b/packages/rocketchat-ui-message/client/message.js
index 80ebb2b134a2..d2b1201989ef 100644
--- a/packages/rocketchat-ui-message/client/message.js
+++ b/packages/rocketchat-ui-message/client/message.js
@@ -1,6 +1,7 @@
/* globals renderEmoji renderMessageBody */
import _ from 'underscore';
import moment from 'moment';
+import { DateFormat } from 'meteor/rocketchat:lib';
Template.message.helpers({
encodeURI(text) {
@@ -98,17 +99,10 @@ Template.message.helpers({
}
},
time() {
- switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
- case 1:
- return moment(this.ts).format('h:mm A');
- case 2:
- return moment(this.ts).format('H:mm');
- default:
- return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat'));
- }
+ return DateFormat.formatTime(this.ts);
},
date() {
- return moment(this.ts).format(RocketChat.settings.get('Message_DateFormat'));
+ return DateFormat.formatDate(this.ts);
},
isTemp() {
if (this.temp === true) {
@@ -146,14 +140,7 @@ Template.message.helpers({
},
editTime() {
if (Template.instance().wasEdited) {
- switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) {
- case 1:
- return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } h:mm A`);
- case 2:
- return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } H:mm`);
- default:
- return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } ${ RocketChat.settings.get('Message_TimeFormat') }`);
- }
+ return DateFormat.formatDateAndTime(this.editedAt);
}
},
editedBy() {
From 0586b494cfddff1f6da7dbda713e09e3f0caf7fa Mon Sep 17 00:00:00 2001
From: Guilherme Gazzo
Date: Wed, 19 Sep 2018 11:08:35 -0300
Subject: [PATCH 3/3] removed default value
---
packages/rocketchat-lib/server/models/Users.js | 4 ++++
packages/rocketchat-ui-account/client/accountPreferences.js | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/packages/rocketchat-lib/server/models/Users.js b/packages/rocketchat-lib/server/models/Users.js
index 5d31e45087bd..aec91942c376 100644
--- a/packages/rocketchat-lib/server/models/Users.js
+++ b/packages/rocketchat-lib/server/models/Users.js
@@ -465,6 +465,10 @@ class ModelUsers extends RocketChat.models._Base {
const update = {
$set: settings,
};
+ if (![1, 2].includes(parseInt(settings.preferences.clockMode))) {
+ delete update.$set['settings.preferences.clockMode'];
+ update.$unset = { 'settings.preferences.clockMode': 1 };
+ }
return this.update(_id, update);
}
diff --git a/packages/rocketchat-ui-account/client/accountPreferences.js b/packages/rocketchat-ui-account/client/accountPreferences.js
index 98b0a13d86f0..c0c07c8c57ff 100644
--- a/packages/rocketchat-ui-account/client/accountPreferences.js
+++ b/packages/rocketchat-ui-account/client/accountPreferences.js
@@ -141,7 +141,7 @@ Template.accountPreferences.onCreated(function() {
data.newRoomNotification = $('select[name=newRoomNotification]').val();
data.newMessageNotification = $('select[name=newMessageNotification]').val();
- data.clockMode = parseInt($('#clockMode').find('select').val());
+ data.clockMode = parseInt($('select[name=clockMode]').val());
data.useEmojis = JSON.parse($('input[name=useEmojis]:checked').val());
data.convertAsciiEmoji = JSON.parse($('input[name=convertAsciiEmoji]:checked').val());
data.saveMobileBandwidth = JSON.parse($('input[name=saveMobileBandwidth]:checked').val());