The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/server/publications/roomSearch.coffee

38 lines
1.4 KiB

Meteor.publish 'roomSearch', (selector, options, collName) ->
unless this.userId
return this.ready()
self = this
searchType = null
subHandleUsers = null
subHandleRooms = null
if selector.type
searchType = selector.type
delete selector.type
if not searchType? or searchType is 'u'
subHandleUsers = RocketChat.models.Users.find(selector, { limit: 10, fields: { name: 1, username: 1, status: 1 }, sort: { name: 1 } }).observeChanges
added: (id, fields) ->
data = { type: 'u', uid: id, name: fields.name, username: fields.username, status: fields.status }
self.added("autocompleteRecords", id, data)
changed: (id, fields) ->
self.changed("autocompleteRecords", id, fields)
removed: (id) ->
self.removed("autocompleteRecords", id)
if not searchType? or searchType is 'r'
subHandleRooms = RocketChat.models.Rooms.findByTypesAndNotUserIdContainingUsername(RocketChat.roomTypes.getIdentifiers('d'), selector.uid?.$ne, RocketChat.models.Users.findOneById(this.userId).username, { limit: 10, fields: { t: 1, name: 1 }, sort: { name: 1 } }).observeChanges
added: (id, fields) ->
data = { type: 'r', rid: id, name: fields.name, t: fields.t }
self.added("autocompleteRecords", id, data)
changed: (id, fields) ->
self.changed("autocompleteRecords", id, fields)
removed: (id) ->
self.removed("autocompleteRecords", id)
this.ready()
this.onStop ->
subHandleUsers?.stop()
subHandleRooms?.stop()