From e099ba3fcd4ab38bda1d0ff9d58884ef39fc9a3f Mon Sep 17 00:00:00 2001 From: Sacha Greif Date: Mon, 8 Dec 2014 17:52:29 +0900 Subject: [PATCH] refactoring user profile posts with ReactiveVar --- .meteor/packages | 1 + client/views/users/profile/user_posts.js | 34 +++++++++++++++--------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/.meteor/packages b/.meteor/packages index 382ebea87..763077d42 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -15,6 +15,7 @@ email accounts-facebook service-configuration accounts-ui +reactive-var # Atmosphere Packages diff --git a/client/views/users/profile/user_posts.js b/client/views/users/profile/user_posts.js index ce8859944..e13192339 100644 --- a/client/views/users/profile/user_posts.js +++ b/client/views/users/profile/user_posts.js @@ -1,30 +1,40 @@ Template[getTemplate('userPosts')].created = function () { - Session.set('postsShown', 5); + var user = this.data; - var terms = {}; + var instance = this; + + // initialize the terms local reactive variable + instance.terms = new ReactiveVar({ + view: 'userPosts', + userId: user._id, + limit: 5 + }); + + // will re-run when the "terms" local reactive variable changes Tracker.autorun(function () { - terms = { - view: 'userPosts', - userId: user._id, - limit: Session.get('postsShown') - } - coreSubscriptions.subscribe('userPosts', terms); + coreSubscriptions.subscribe('userPosts', instance.terms.get()); }); }; Template[getTemplate('userPosts')].helpers({ posts: function () { - return Posts.find({userId: this._id}, {limit: Session.get('postsShown')}); + // access the reactive var on the local instance + var parameters = getPostsParameters(Template.instance().terms.get()); + var posts = Posts.find(parameters.find, parameters.options) + return posts; }, hasMorePosts: function () { - return Posts.find({userId: this._id}).count() >= Session.get('postsShown'); + var parameters = getPostsParameters(Template.instance().terms.get()); + var posts = Posts.find(parameters.find, parameters.options) + return posts.count() >= Session.get('postsShown'); } }); Template[getTemplate('userPosts')].events({ 'click .posts-more': function (e) { e.preventDefault(); - var postsShown = Session.get('postsShown'); - Session.set('postsShown', postsShown + 10); + var terms = Template.instance().terms.get(); + terms.limit += 5; + Template.instance().terms.set(terms) } }); \ No newline at end of file