diff --git a/assets/scripts/app/app.coffee b/assets/scripts/app/app.coffee index 6be3abbc..d2f1c935 100644 --- a/assets/scripts/app/app.coffee +++ b/assets/scripts/app/app.coffee @@ -1,7 +1,7 @@ unless window.TravisApplication window.TravisApplication = Em.Application.extend(Ember.Evented, LOG_TRANSITIONS: true, - authStateBinding: 'auth.state' + authState: Ember.computed.alias('auth.state') signedIn: (-> @get('authState') == 'signed-in' ).property('authState') mappings: (-> @@ -58,6 +58,10 @@ unless window.TravisApplication signOut: -> @get('auth').signOut() + signingIn: (-> + Travis.get('authState') == 'signing-in' + ).property('authState') + receive: (event, data) -> [name, type] = event.split(':') diff --git a/assets/scripts/app/controllers.coffee b/assets/scripts/app/controllers.coffee index 557faef2..d703f922 100644 --- a/assets/scripts/app/controllers.coffee +++ b/assets/scripts/app/controllers.coffee @@ -5,6 +5,26 @@ Travis.TopController = Em.Controller.extend needs: ['currentUser'] userBinding: 'controllers.currentUser' + userName: (-> + @get('user.name') || @get('user.login') + ).property('user.login', 'user.name') + + gravatarUrl: (-> + "#{location.protocol}//www.gravatar.com/avatar/#{@get('user.gravatarId')}?s=48&d=mm" + ).property('user.gravatarId') + + signedIn: (-> + Travis.get('authState') == 'signed-in' + ).property('Travis.authState') + + signedOut: (-> + Travis.get('authState') == 'signed-out' + ).property('Travis.authState') + + signingIn: (-> + Travis.get('authState') == 'signing-in' + ).property('Travis.authState') + Travis.ApplicationController = Em.Controller.extend templateName: 'layouts/home' diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee index 8c9a8ccc..1d079dda 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/routes.coffee @@ -26,6 +26,8 @@ Ember.Route.reopen error: (error) -> if error == 'needs-auth' + authController = @container.lookup('controller:auth') || @generateController('auth') + authController.set('redirected', true) @transitionTo('auth') else throw(error) @@ -384,3 +386,6 @@ Travis.AuthRoute = Ember.Route.extend setupController: -> @container.lookup('controller:application').connectLayout('simple') + + deactivate: -> + @controllerFor('auth').set('redirected', false) diff --git a/assets/scripts/app/templates/auth/signin.hbs b/assets/scripts/app/templates/auth/signin.hbs index 4f2c7a45..01d431a5 100644 --- a/assets/scripts/app/templates/auth/signin.hbs +++ b/assets/scripts/app/templates/auth/signin.hbs @@ -1,11 +1,12 @@ -{{#if view.signingIn}} -

Signing in ...

-

- Trying to authenticate with GitHub. -

-{{else}} -

Sign in

-

- Please sign in with GitHub. -

+{{#if redirected}} +

You need to sign in to see this page.

{{/if}} +

+ + {{#if Travis.signingIn}} + Signing in... + {{else}} + Sign in with GitHub. + {{/if}} + +

diff --git a/assets/scripts/app/templates/layouts/top.hbs b/assets/scripts/app/templates/layouts/top.hbs index 5399b8fb..1e32af2b 100644 --- a/assets/scripts/app/templates/layouts/top.hbs +++ b/assets/scripts/app/templates/layouts/top.hbs @@ -31,9 +31,15 @@
  • - {{t layouts.top.github_login}} - {{#linkTo "profile.index" class="signed-in"}}{{view.userName}}{{/linkTo}} - {{t layouts.top.signing_in}} + {{#if signedOut}} + {{t layouts.top.github_login}} + {{/if}} + {{#if signedIn}} + {{#linkTo "profile.index" class="signed-in"}}{{userName}}{{/linkTo}} + {{/if}} + {{#if signingIn}} + {{t layouts.top.signing_in}} + {{/if}}