diff --git a/packages/rocketchat-ui-sidenav/side-nav/listChannelsFlex.coffee b/packages/rocketchat-ui-sidenav/side-nav/listChannelsFlex.coffee index 1e9aa4f4c6b..652dcc5948d 100644 --- a/packages/rocketchat-ui-sidenav/side-nav/listChannelsFlex.coffee +++ b/packages/rocketchat-ui-sidenav/side-nav/listChannelsFlex.coffee @@ -1,6 +1,8 @@ Template.listChannelsFlex.helpers channel: -> return Template.instance().channelsList?.get() + hasMore: -> + return Template.instance().hasMore.get() Template.listChannelsFlex.events 'click header': -> @@ -19,11 +21,19 @@ Template.listChannelsFlex.events 'mouseleave header': -> SideNav.leaveArrow() -Template.listChannelsFlex.onCreated -> - instance = this - instance.channelsList = new ReactiveVar [] - - Meteor.call 'channelsList', (err, result) -> - if result - instance.channelsList.set result.channels + 'scroll .content': _.throttle (e, t) -> + if e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight + t.limit.set(t.limit.get() + 50) + , 200 +Template.listChannelsFlex.onCreated -> + @channelsList = new ReactiveVar [] + @hasMore = new ReactiveVar true + @limit = new ReactiveVar 50 + + @autorun => + Meteor.call 'channelsList', @limit.get(), (err, result) => + if result + @channelsList.set result.channels + if result.length < @limit.get() + @hasMore.set false diff --git a/packages/rocketchat-ui-sidenav/side-nav/listChannelsFlex.html b/packages/rocketchat-ui-sidenav/side-nav/listChannelsFlex.html index 86ee731e9b0..cfe3cfdec51 100644 --- a/packages/rocketchat-ui-sidenav/side-nav/listChannelsFlex.html +++ b/packages/rocketchat-ui-sidenav/side-nav/listChannelsFlex.html @@ -16,6 +16,15 @@ {{/each}} + {{#if hasMore}} +