From 9a7120c7d33a165ff51deca6bdd904dad23b3dd2 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Mon, 3 Aug 2015 17:43:21 -0300 Subject: [PATCH 1/2] Save user timezone --- .meteor/packages | 2 +- .meteor/versions | 2 +- client/startup/userTimezone.coffee | 7 +++++++ server/methods/updateUserUtcOffset.coffee | 8 ++++++++ server/publications/userData.coffee | 1 + 5 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 client/startup/userTimezone.coffee create mode 100644 server/methods/updateUserUtcOffset.coffee diff --git a/.meteor/packages b/.meteor/packages index 5ef079a66c6..0068e1310cf 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -41,7 +41,7 @@ konecty:delayed-task konecty:mongo-counter konecty:multiple-instances-status konecty:nrr -konecty:user-presence +konecty:user-presence@1.2.4 cfs:standard-packages cfs:gridfs diff --git a/.meteor/versions b/.meteor/versions index 771cb3a65d7..27e06bdcdc8 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -65,7 +65,7 @@ konecty:delayed-task@1.0.0 konecty:mongo-counter@0.0.3 konecty:multiple-instances-status@1.0.3 konecty:nrr@2.0.2 -konecty:user-presence@1.2.2 +konecty:user-presence@1.2.4 launch-screen@1.0.2 less@1.0.14 livedata@1.0.13 diff --git a/client/startup/userTimezone.coffee b/client/startup/userTimezone.coffee new file mode 100644 index 00000000000..bda60669c39 --- /dev/null +++ b/client/startup/userTimezone.coffee @@ -0,0 +1,7 @@ +Tracker.autorun -> + user = Meteor.user() + if user.status is 'online' + utcOffset = moment().utcOffset() / 60 + if user.utcOffset isnt utcOffset + console.log 'updateUserUtcOffset', utcOffset + Meteor.call 'updateUserUtcOffset', utcOffset \ No newline at end of file diff --git a/server/methods/updateUserUtcOffset.coffee b/server/methods/updateUserUtcOffset.coffee new file mode 100644 index 00000000000..f5b800c257e --- /dev/null +++ b/server/methods/updateUserUtcOffset.coffee @@ -0,0 +1,8 @@ +Meteor.methods + updateUserUtcOffset: (utcOffset) -> + if not @userId? + return + + @unblock() + + Meteor.users.update({_id: @userId, utcOffset: {$ne: utcOffset}}, {$set: {utcOffset: utcOffset}}) \ No newline at end of file diff --git a/server/publications/userData.coffee b/server/publications/userData.coffee index ff42fd4a011..a27c17de37b 100644 --- a/server/publications/userData.coffee +++ b/server/publications/userData.coffee @@ -13,3 +13,4 @@ Meteor.publish 'userData', -> statusConnection: 1 avatarOrigin: 1 admin: 1 + utcOffset: 1 From bc0a13066f8d4c6a4e4286bd5b3590436b0063d3 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Mon, 3 Aug 2015 18:00:16 -0300 Subject: [PATCH 2/2] Show user's timezone in user list --- client/lib/RoomManager.coffee | 6 ++++-- client/startup/userTimezone.coffee | 2 +- client/startup/usersObserve.coffee | 8 ++++---- client/views/app/room.coffee | 11 ++++++++++- client/views/app/room.html | 2 +- server/publications/selectiveUsers.coffee | 1 + 6 files changed, 21 insertions(+), 9 deletions(-) diff --git a/client/lib/RoomManager.coffee b/client/lib/RoomManager.coffee index 04f787edc95..402cb1735ba 100644 --- a/client/lib/RoomManager.coffee +++ b/client/lib/RoomManager.coffee @@ -104,13 +104,15 @@ Meteor.startup -> room = openedRooms[rid] return room?.dom? - updateUserStatus = (user, status) -> + updateUserStatus = (user, status, utcOffset) -> onlineUsersValue = onlineUsers.curValue if status is 'offline' delete onlineUsersValue[user.username] else - onlineUsersValue[user.username] = status + onlineUsersValue[user.username] = + status: status + utcOffset: utcOffset onlineUsers.set onlineUsersValue diff --git a/client/startup/userTimezone.coffee b/client/startup/userTimezone.coffee index bda60669c39..ddfba966792 100644 --- a/client/startup/userTimezone.coffee +++ b/client/startup/userTimezone.coffee @@ -1,6 +1,6 @@ Tracker.autorun -> user = Meteor.user() - if user.status is 'online' + if user?.status is 'online' utcOffset = moment().utcOffset() / 60 if user.utcOffset isnt utcOffset console.log 'updateUserUtcOffset', utcOffset diff --git a/client/startup/usersObserve.coffee b/client/startup/usersObserve.coffee index cc06c206dd2..4c5eccc4808 100644 --- a/client/startup/usersObserve.coffee +++ b/client/startup/usersObserve.coffee @@ -1,11 +1,11 @@ Meteor.startup -> - Meteor.users.find({}, { fields: { name: 1, username: 1, pictures: 1, status: 1, emails: 1, phone: 1, services: 1 } }).observe + Meteor.users.find({}, { fields: { name: 1, username: 1, pictures: 1, status: 1, emails: 1, phone: 1, services: 1, utcOffset: 1 } }).observe added: (user) -> Session.set('user_' + user.username + '_status', user.status) - RoomManager.updateUserStatus user, user.status + RoomManager.updateUserStatus user, user.status, user.utcOffset changed: (user) -> Session.set('user_' + user.username + '_status', user.status) - RoomManager.updateUserStatus user, user.status + RoomManager.updateUserStatus user, user.status, user.utcOffset removed: (user) -> Session.set('user_' + user.username + '_status', null) - RoomManager.updateUserStatus user, 'offline' + RoomManager.updateUserStatus user, 'offline', null diff --git a/client/views/app/room.coffee b/client/views/app/room.coffee index 42cfd9f5784..0f5872e9450 100644 --- a/client/views/app/room.coffee +++ b/client/views/app/room.coffee @@ -188,9 +188,18 @@ Template.room.helpers for username in room?.usernames or [] if onlineUsers[username]? + utcOffset = onlineUsers[username]?.utcOffset + console.log utcOffset + if utcOffset? + if utcOffset > 0 + utcOffset = "+#{utcOffset}" + + utcOffset = "(UTC #{utcOffset})" + users.push username: username - status: onlineUsers[username] + status: onlineUsers[username]?.status + utcOffset: utcOffset users = _.sortBy users, 'username' diff --git a/client/views/app/room.html b/client/views/app/room.html index ebbe94dcab4..80784ec2bd0 100644 --- a/client/views/app/room.html +++ b/client/views/app/room.html @@ -123,7 +123,7 @@
  • {{> avatar username=username}} -

    {{username}}

    +

    {{username}} {{utcOffset}}

  • {{/each}} diff --git a/server/publications/selectiveUsers.coffee b/server/publications/selectiveUsers.coffee index 645386778cf..3d119bc34a6 100644 --- a/server/publications/selectiveUsers.coffee +++ b/server/publications/selectiveUsers.coffee @@ -14,6 +14,7 @@ Meteor.publish 'selectiveUsers', (usernames) -> name: 1 username: 1 status: 1 + utcOffset: 1 cursor = Meteor.users.find query, options