From 99c3ad770cd1e3bf0b487b2dd99be01e6c1d012c Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Mon, 13 May 2013 16:39:03 +0200 Subject: [PATCH] Router changes for new ember.js --- assets/scripts/app/auth.coffee | 3 ++- assets/scripts/app/routes.coffee | 30 +++++++++++++++++++++++------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/assets/scripts/app/auth.coffee b/assets/scripts/app/auth.coffee index 472df011..d954d10f 100644 --- a/assets/scripts/app/auth.coffee +++ b/assets/scripts/app/auth.coffee @@ -66,7 +66,8 @@ @set('state', 'signed-in') Travis.setLocale(data.user.locale || Travis.default_locale) Travis.trigger('user:signed_in', data.user) - Travis.__container__.lookup('router:main').send('afterSignIn', @readAfterSignInPath()) + if path = @readAfterSignInPath() + Travis.__container__.lookup('router:main').send('afterSignIn', path) storeData: (data, storage) -> storage.setItem('travis.token', data.token) diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee index 0e65c243..1a046c8b 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/routes.coffee @@ -6,24 +6,39 @@ Travis.DontSetupModelForControllerMixin = Ember.Mixin.create # this can be remove when this patch will be merged https://github.com/emberjs/ember.js/pull/2044 # this will allow us to override setting up model for a controller setup: (context) -> - @redirected = false + isTop = undefined + unless @_redirected + isTop = true + @_redirected = [] + @_checkingRedirect = true + depth = ++@_redirectDepth - @redirect(context) + if context is `undefined` + @redirect() + else + @redirect context + @_redirectDepth-- @_checkingRedirect = false - if @redirected - return false + + redirected = @_redirected + + @_redirected = null if isTop + + return false if redirected[depth] controller = @controllerFor(@routeName, context) - @setupController(controller, context) - @renderTemplate(controller, context); + @setupController controller, context + @renderTemplate controller, context Ember.Router.reopen location: (if testMode? then Ember.NoneLocation.create() else Travis.Location.create()) handleURL: (url) -> + Travis.autoSignIn() unless Travis.__container__.lookup('controller:currentUser').get('content') + url = url.replace(/#.*?$/, '') try @_super(url) @@ -49,11 +64,12 @@ Ember.Route.reopen @controllerFor('currentUser').get('content') redirect: -> + Travis.autoSignIn() unless @signedIn() + if @get('needsAuth') @authorize(@router.location.getURL()) else @_super.apply this, arguments - Travis.autoSignIn() unless @signedIn() authorize: (path) -> if !@signedIn()