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/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 new file mode 100644 index 00000000000..ddfba966792 --- /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/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/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/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 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