@ -11,8 +11,8 @@ Meteor.publish('livechat:rooms', function(filter = {}, offset = 0, limit = 20) {
name : Match . Maybe ( String ) , // room name to filter
agent : Match . Maybe ( String ) , // agent _id who is serving
status : Match . Maybe ( String ) , // either 'opened' or 'closed'
from : Match . Maybe ( String ) ,
to : Match . Maybe ( String )
from : Match . Maybe ( Date ) ,
to : Match . Maybe ( Date )
} ) ;
let query = { } ;
@ -29,13 +29,38 @@ Meteor.publish('livechat:rooms', function(filter = {}, offset = 0, limit = 20) {
query . open = { $exists : false } ;
}
}
if ( filter . from && filter . to ) {
var StartDate = new Date ( filter . from ) ;
var ToDate = new Date ( filter . to ) ;
ToDate . setDate ( ToDate . getDate ( ) + 1 ) ;
query [ 'ts' ] = { $gt : StartDate , $lt : ToDate } ;
if ( filter . from ) {
query . ts = {
$gte : filter . from
} ;
}
if ( filter . to ) {
filter . to . setDate ( filter . to . getDate ( ) + 1 ) ;
filter . to . setSeconds ( filter . to . getSeconds ( ) - 1 ) ;
// CACHE: can we stop using publications here?
return RocketChat . models . Rooms . findLivechat ( query , offset , limit ) ;
if ( ! query . ts ) {
query . ts = { } ;
}
query . ts . $lte = filter . to ;
}
let self = this ;
let handle = RocketChat . models . Rooms . findLivechat ( query , offset , limit ) . observeChanges ( {
added ( id , fields ) {
self . added ( 'livechatRoom' , id , fields ) ;
} ,
changed ( id , fields ) {
self . changed ( 'livechatRoom' , id , fields ) ;
} ,
removed ( id ) {
self . removed ( 'livechatRoom' , id ) ;
}
} ) ;
this . ready ( ) ;
this . onStop ( ( ) => {
handle . stop ( ) ;
} ) ;
} ) ;