Merge pull request #391 from RocketChat/user-timezone

User timezone
pull/394/head
Gabriel Engel 11 years ago
commit d6410f5244
  1. 2
      .meteor/packages
  2. 2
      .meteor/versions
  3. 6
      client/lib/RoomManager.coffee
  4. 7
      client/startup/userTimezone.coffee
  5. 8
      client/startup/usersObserve.coffee
  6. 11
      client/views/app/room.coffee
  7. 2
      client/views/app/room.html
  8. 8
      server/methods/updateUserUtcOffset.coffee
  9. 1
      server/publications/selectiveUsers.coffee
  10. 1
      server/publications/userData.coffee

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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'

@ -123,7 +123,7 @@
<li class='user-image user-card-room status-{{status}}'>
<a data-username="{{username}}" tabindex="0" title="{{username}}">
{{> avatar username=username}}
<p>{{username}}</p>
<p>{{username}} {{utcOffset}}</p>
</a>
</li>
{{/each}}

@ -0,0 +1,8 @@
Meteor.methods
updateUserUtcOffset: (utcOffset) ->
if not @userId?
return
@unblock()
Meteor.users.update({_id: @userId, utcOffset: {$ne: utcOffset}}, {$set: {utcOffset: utcOffset}})

@ -14,6 +14,7 @@ Meteor.publish 'selectiveUsers', (usernames) ->
name: 1
username: 1
status: 1
utcOffset: 1
cursor = Meteor.users.find query, options

@ -13,3 +13,4 @@ Meteor.publish 'userData', ->
statusConnection: 1
avatarOrigin: 1
admin: 1
utcOffset: 1

Loading…
Cancel
Save