75 lines
1.9 KiB
CoffeeScript
75 lines
1.9 KiB
CoffeeScript
require 'travis/ajax'
|
|
require 'travis/model'
|
|
|
|
@Travis.User = Travis.Model.extend
|
|
name: DS.attr('string')
|
|
email: DS.attr('string')
|
|
login: DS.attr('string')
|
|
token: DS.attr('string')
|
|
locale: DS.attr('string')
|
|
gravatarId: DS.attr('string')
|
|
isSyncing: DS.attr('boolean')
|
|
syncedAt: DS.attr('string')
|
|
repoCount: DS.attr('number')
|
|
|
|
init: ->
|
|
@poll() if @get('isSyncing')
|
|
@_super()
|
|
|
|
Ember.run.next this, ->
|
|
transaction = @get('store').transaction()
|
|
transaction.add this
|
|
|
|
urlGithub: (->
|
|
"https://github.com/#{@get('login')}"
|
|
).property()
|
|
|
|
permissions: (->
|
|
unless @permissions
|
|
@permissions = Ember.ArrayProxy.create(content: [])
|
|
Travis.ajax.get('/users/permissions', (data) => @permissions.set('content', data.permissions))
|
|
@permissions
|
|
).property()
|
|
|
|
updateLocale: (locale) ->
|
|
@setWithSession('locale', locale)
|
|
|
|
transaction = @get('transaction')
|
|
transaction.commit()
|
|
|
|
self = this
|
|
observer = ->
|
|
unless self.get('isSaving')
|
|
self.removeObserver 'isSaving', observer
|
|
transaction = self.get('store').transaction()
|
|
transaction.add self
|
|
|
|
@addObserver 'isSaving', observer
|
|
|
|
type: (->
|
|
'user'
|
|
).property()
|
|
|
|
sync: ->
|
|
Travis.ajax.post('/users/sync')
|
|
@setWithSession('isSyncing', true)
|
|
@poll()
|
|
|
|
poll: ->
|
|
Travis.ajax.get '/users', (data) =>
|
|
if data.user.is_syncing
|
|
Ember.run.later(this, this.poll.bind(this), 3000)
|
|
else
|
|
@set('isSyncing', false)
|
|
@setWithSession('syncedAt', data.user.synced_at)
|
|
Travis.trigger('user:synced', data.user)
|
|
|
|
# need to pass any param to trigger findQuery
|
|
Travis.Account.find(foo: '')
|
|
|
|
setWithSession: (name, value) ->
|
|
@set(name, value)
|
|
user = JSON.parse(sessionStorage?.getItem('travis.user'))
|
|
user[$.underscore(name)] = @get(name)
|
|
sessionStorage?.setItem('travis.user', JSON.stringify(user))
|