From 82218fd7cba89c9b2eda06f70660d804d32d2ab5 Mon Sep 17 00:00:00 2001 From: Maxwell Salzberg Date: Wed, 23 May 2012 17:24:47 -0700 Subject: [PATCH] new stream now remembers how far you have scrolled. also, jasmine is really cool. --- app/assets/javascripts/app/pages/stream.js | 15 ++++++++++++++- app/assets/javascripts/app/router.js | 1 + spec/javascripts/app/pages/stream_spec.js | 20 +++++++++++++++++++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/app/pages/stream.js b/app/assets/javascripts/app/pages/stream.js index 578b1c6fb..06bf43a08 100644 --- a/app/assets/javascripts/app/pages/stream.js +++ b/app/assets/javascripts/app/pages/stream.js @@ -29,5 +29,18 @@ app.pages.Stream = app.views.Base.extend({ postRenderTemplate : function() { this.$("#header").css("background-image", "url(" + app.currentUser.get("wallpaper") + ")") - } + this.setUpHashChangeOnStreamLoad() + }, + + setUpHashChangeOnStreamLoad : function(){ + var self = this; + this.streamView.on('loadMore', function(){ + var post = this.stream.items.last(); + self.navigateToPost(post) + }); + }, + + navigateToPost : function(post){ + app.router.navigate(location.pathname + "?ex=true&max_time=" + post.createdAt(), {replace: true}) + }, }); diff --git a/app/assets/javascripts/app/router.js b/app/assets/javascripts/app/router.js index dcebdc820..88c544738 100644 --- a/app/assets/javascripts/app/router.js +++ b/app/assets/javascripts/app/router.js @@ -1,6 +1,7 @@ app.Router = Backbone.Router.extend({ routes: { //new hotness + "stream?ex=true:params": 'newStream', "stream?ex=true": 'newStream', "people/:id?ex=true": "newProfile", "posts/new" : "composer", diff --git a/spec/javascripts/app/pages/stream_spec.js b/spec/javascripts/app/pages/stream_spec.js index ae8ef89d2..4095ff0ab 100644 --- a/spec/javascripts/app/pages/stream_spec.js +++ b/spec/javascripts/app/pages/stream_spec.js @@ -10,7 +10,6 @@ describe("app.Pages.Stream", function(){ describe('postRenderTemplate', function(){ it("sets the background-image of #header", function(){ this.page.render() - console.log(this.page.$('#header').css('background-image')) expect(this.page.$('#header').css('background-image')).toBeTruthy() }) @@ -34,4 +33,23 @@ describe("app.Pages.Stream", function(){ }) }) }) + + describe("setUpHashChangeOnStreamLoad", function(){ + it('calls navigateToPost on the loadMore event', function(){ + spyOn(this.page, 'navigateToPost') + this.page.setUpHashChangeOnStreamLoad() + this.page.streamView.trigger('loadMore') + expect(this.page.navigateToPost).toHaveBeenCalled() + }) + }) + + describe("navigateToPost", function(){ + it("sets the max time of the url to the created at time of a post", function(){ + spyOn(app.router, 'navigate') + this.page.navigateToPost(this.post) + var url = location.pathname + "?ex=true&max_time=" + this.post.createdAt() + var options = {replace: true} + expect(app.router.navigate).toHaveBeenCalledWith(url, options) + }) + }) }); \ No newline at end of file