diff --git a/assets/scripts/app/auth.coffee b/assets/scripts/app/auth.coffee index ae0540d7..f99bd68f 100644 --- a/assets/scripts/app/auth.coffee +++ b/assets/scripts/app/auth.coffee @@ -49,19 +49,23 @@ setData: (data) -> @storeData(data, Travis.sessionStorage) @storeData(data, Travis.storage) unless @userDataFrom(Travis.storage) - @set('user', @loadUser(data.user)) + user = @loadUser(data.user) + # TODO: we should not use __container__ directly, how to do it better? + Travis.__container__.lookup('controller:currentUser').set('content', user) + @set('state', 'signed-in') Travis.setLocale(data.user.locale || Travis.default_locale) Travis.trigger('user:signed_in', data.user) - @get('app.router').send('afterSignIn', @readAfterSignInPath()) + #@get('app.router').send('afterSignIn', @readAfterSignInPath()) storeData: (data, storage) -> storage.setItem('travis.token', data.token) storage.setItem('travis.user', JSON.stringify(data.user)) loadUser: (user) -> - @app.store.load(Travis.User, user) - user = @app.store.find(Travis.User, user.id) + store = @app.store + store.load(Travis.User, user.id, user) + user = store.find(Travis.User, user.id) user.get('permissions') user diff --git a/assets/scripts/app/controllers.coffee b/assets/scripts/app/controllers.coffee index 66af0488..f1afaeb1 100644 --- a/assets/scripts/app/controllers.coffee +++ b/assets/scripts/app/controllers.coffee @@ -3,7 +3,8 @@ require 'travis/ticker' Travis.Controller = Em.Controller.extend() Travis.TopController = Em.Controller.extend - userBinding: 'Travis.app.currentUser' + needs: ['currentUser'] + userBinding: 'controllers.currentUser' Travis.ApplicationController = Em.Controller.extend templateName: 'layouts/home' diff --git a/assets/scripts/app/models/user.coffee b/assets/scripts/app/models/user.coffee index 4128b8d2..dfa34c9f 100644 --- a/assets/scripts/app/models/user.coffee +++ b/assets/scripts/app/models/user.coffee @@ -2,7 +2,7 @@ require 'travis/ajax' require 'travis/model' @Travis.User = Travis.Model.extend - _name: DS.attr('string', key: 'name') + _name: DS.attr('string') email: DS.attr('string') login: DS.attr('string') token: DS.attr('string') @@ -22,9 +22,10 @@ require 'travis/model' ).property('login', '_name') init: -> - @poll() if @get('isSyncing') @_super() + #@poll() if @get('isSyncing') + Ember.run.next this, -> transaction = @get('store').transaction() transaction.add this diff --git a/assets/scripts/app/store/rest_adapter.coffee b/assets/scripts/app/store/rest_adapter.coffee index 5d53726e..9c9f5cc1 100644 --- a/assets/scripts/app/store/rest_adapter.coffee +++ b/assets/scripts/app/store/rest_adapter.coffee @@ -62,3 +62,7 @@ Travis.RestAdapter.map 'Travis.Job', { repoId: { key: 'repository_id' } repo: { key: 'repository_id' } } + +Travis.RestAdapter.map 'Travis.User', { + _name: { key: 'name' } +} diff --git a/assets/scripts/app/templates/layouts/top.hbs b/assets/scripts/app/templates/layouts/top.hbs index e71eb277..10ccca1f 100644 --- a/assets/scripts/app/templates/layouts/top.hbs +++ b/assets/scripts/app/templates/layouts/top.hbs @@ -17,7 +17,7 @@ </li> <li {{bindAttr class="view.classProfile"}}> <p class="handle"> - <a class="signed-out" href="#" {{action signIn target="Travis.app"}}>{{t layouts.top.github_login}}</a> + <a class="signed-out" href="#" {{action signIn target="Travis"}}>{{t layouts.top.github_login}}</a> <a class="signed-in" {{action showProfile href=true}}><img {{bindAttr src="view.gravatarUrl"}}>{{view.userName}}</a> <span class="signing-in">{{t layouts.top.signing_in}}</span> </p> @@ -26,7 +26,7 @@ <a {{action showProfile href=true}}>{{t layouts.top.accounts}}</a> </li> <li> - <a href="/" {{action signOut target="Travis.app"}}>{{t layouts.top.sign_out}}</a> + <a href="/" {{action signOut target="Travis"}}>{{t layouts.top.sign_out}}</a> </li> </ul> </li> diff --git a/assets/scripts/app/views/signin.coffee b/assets/scripts/app/views/signin.coffee index afb75fb6..39e75ef6 100644 --- a/assets/scripts/app/views/signin.coffee +++ b/assets/scripts/app/views/signin.coffee @@ -3,5 +3,5 @@ templateName: 'auth/signin' signingIn: (-> - Travis.app.get('authState') == 'signing-in' - ).property('Travis.app.authState') + Travis.get('authState') == 'signing-in' + ).property('Travis.authState') diff --git a/assets/scripts/travis.coffee b/assets/scripts/travis.coffee index 6dd92a6d..70c1ecb2 100644 --- a/assets/scripts/travis.coffee +++ b/assets/scripts/travis.coffee @@ -16,10 +16,10 @@ Storage = Em.Object.extend clear: -> @set('storage', {}) -window.Travis = Em.Application.create Ember.Evented, +window.Travis = Em.Application.extend(Ember.Evented, autoinit: false - currentUserBinding: 'auth.user' authStateBinding: 'auth.state' + signedIn: (-> @get('authState') == 'signed-in' ).property('authState') setup: -> @store = Travis.Store.create( @@ -44,7 +44,7 @@ window.Travis = Em.Application.create Ember.Evented, signOut: -> @get('auth').signOut() - @get('router').send('afterSignOut') + #@get('router').send('afterSignOut') receive: -> @store.receive.apply(@store, arguments) @@ -70,6 +70,8 @@ window.Travis = Em.Application.create Ember.Evented, location.href = location.href.replace('#!/', '') if location.hash.slice(0, 2) == '#!' I18n.fallbacks = true @setLocale 'locale', @get('defaultLocale') + @autoSignIn() unless @get('signedIn') +).create() $.extend Travis, config: