diff --git a/Gemfile.lock b/Gemfile.lock index eecfd4a6..5d87fdef 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -43,7 +43,7 @@ GIT GIT remote: git://github.com/travis-ci/travis-api.git - revision: fa4c5db39b94234e9a3a87da0b4ccca466e034e2 + revision: 5d9c867142162b20d8471530f7447bd4af93c0e4 specs: travis-api (0.0.1) backports (~> 2.5) @@ -61,7 +61,7 @@ GIT GIT remote: git://github.com/travis-ci/travis-core.git - revision: 7c84635b5c180a716150c4300bff3ea8f381248c + revision: adaa3d48f48a2a002827a2f15078323e53be1d10 branch: sf-travis-api specs: travis-core (0.0.1) @@ -159,7 +159,7 @@ GEM activesupport faraday (0.8.4) multipart-post (~> 1.1) - foreman (0.60.0) + foreman (0.60.2) thor (>= 0.13.6) fssm (0.2.9) guard (1.4.0) diff --git a/assets/scripts/app/models/build.coffee b/assets/scripts/app/models/build.coffee index 2500cae7..d680fabb 100644 --- a/assets/scripts/app/models/build.coffee +++ b/assets/scripts/app/models/build.coffee @@ -1,6 +1,6 @@ require 'travis/model' -@Travis.Build = Travis.Model.extend Travis.DurationCalculations, Travis.Ajax, +@Travis.Build = Travis.Model.extend Travis.DurationCalculations, eventType: DS.attr('string') repoId: DS.attr('number') commitId: DS.attr('number') @@ -46,7 +46,7 @@ require 'travis/model' ).property('config') requeue: (-> - @post '/requests', build_id: @get('id') + Travis.ajax.post '/requests', build_id: @get('id') ) @Travis.Build.reopenClass diff --git a/assets/scripts/app/models/user.coffee b/assets/scripts/app/models/user.coffee index a98d8cd4..67e78581 100644 --- a/assets/scripts/app/models/user.coffee +++ b/assets/scripts/app/models/user.coffee @@ -1,7 +1,7 @@ require 'travis/ajax' require 'travis/model' -@Travis.User = Travis.Model.extend Travis.Ajax, +@Travis.User = Travis.Model.extend name: DS.attr('string') email: DS.attr('string') login: DS.attr('string') @@ -27,7 +27,7 @@ require 'travis/model' permissions: (-> unless @permissions @permissions = Ember.ArrayProxy.create(content: []) - @ajax '/users/permissions', 'get', success: (data) => @permissions.set('content', data.permissions) + Travis.ajax.get('/users/permissions', (data) => @permissions.set('content', data.permissions)) @permissions ).property() @@ -51,12 +51,12 @@ require 'travis/model' ).property() sync: -> - @post('/users/sync') + Travis.ajax.post('/users/sync') @setWithSession('isSyncing', true) @poll() poll: -> - @ajax '/users', 'get', success: (data) => + Travis.ajax.get '/users', (data) => if data.user.is_syncing Ember.run.later(this, this.poll.bind(this), 3000) else diff --git a/assets/scripts/app/store/rest_adapter.coffee b/assets/scripts/app/store/rest_adapter.coffee index b76ff31a..31a86423 100644 --- a/assets/scripts/app/store/rest_adapter.coffee +++ b/assets/scripts/app/store/rest_adapter.coffee @@ -1,7 +1,7 @@ require 'travis/ajax' require 'models' -@Travis.RestAdapter = DS.RESTAdapter.extend Travis.Ajax, +@Travis.RestAdapter = DS.RESTAdapter.extend mappings: repositories: Travis.Repo repository: Travis.Repo @@ -28,3 +28,6 @@ require 'models' job: 'jobs' worker: 'workers' profile: 'profile' + + ajax: -> + Travis.ajax.ajax.apply(this, arguments) diff --git a/assets/scripts/lib/travis/ajax.coffee b/assets/scripts/lib/travis/ajax.coffee index 5b33dc08..ed294044 100644 --- a/assets/scripts/lib/travis/ajax.coffee +++ b/assets/scripts/lib/travis/ajax.coffee @@ -1,10 +1,13 @@ jQuery.support.cors = true -@Travis.Ajax = Ember.Mixin.create +@Travis.ajax = Em.Object.create DEFAULT_OPTIONS: accepts: json: 'application/vnd.travis-ci.2+json' + get: (url, callback) -> + @ajax(url, 'get', success: callback) + post: (url, data, callback) -> @ajax(url, 'post', data: data, success: callback) @@ -25,9 +28,16 @@ jQuery.support.cors = true if options.data && method != 'GET' && method != 'get' options.data = JSON.stringify(options.data) - $.ajax($.extend(options, @DEFAULT_OPTIONS)) + if options.success + success = options.success + options.success = (data) => + if Travis.app?.router && data.flash + console.log(data.flash) + Travis.app.router.flashController.pushObject(data.flash) + delete data.flash + success.call(this, data) -@Travis.ajax = Em.Object.create @Travis.Ajax, - get: (url, callback) -> - @ajax(url, 'get', success: callback) + options.error = (data) => + Travis.app.router.flashController.pushObject(data.flash) if data.flash + $.ajax($.extend(options, Travis.ajax.DEFAULT_OPTIONS)) diff --git a/public/scripts/app.js b/public/scripts/app.js index 8328a51b..23347985 100644 --- a/public/scripts/app.js +++ b/public/scripts/app.js @@ -29619,4 +29619,4 @@ var _require=function(){function c(a,c){document.addEventListener?a.addEventList ++g&&setTimeout(c,0)})}}(); (function(){!window.WebSocket&&window.MozWebSocket&&(window.WebSocket=window.MozWebSocket);if(window.WebSocket)Pusher.Transport=window.WebSocket,Pusher.TransportType="native";var c=(document.location.protocol=="http:"?Pusher.cdn_http:Pusher.cdn_https)+Pusher.VERSION,a=[];window.JSON||a.push(c+"/json2"+Pusher.dependency_suffix+".js");if(!window.WebSocket)window.WEB_SOCKET_DISABLE_AUTO_INITIALIZATION=!0,a.push(c+"/flashfallback"+Pusher.dependency_suffix+".js");var b=function(){return window.WebSocket?function(){Pusher.ready()}: function(){window.WebSocket?(Pusher.Transport=window.WebSocket,Pusher.TransportType="flash",window.WEB_SOCKET_SWF_LOCATION=c+"/WebSocketMain.swf",WebSocket.__addTask(function(){Pusher.ready()}),WebSocket.__initialize()):(Pusher.Transport=null,Pusher.TransportType="none",Pusher.ready())}}(),e=function(a){var b=function(){document.body?a():setTimeout(b,0)};b()},g=function(){e(b)};a.length>0?_require(a,g):g()})(); -;minispade.register('app', "(function() {(function() {\nminispade.require('auth');\nminispade.require('controllers');\nminispade.require('helpers');\nminispade.require('models');\nminispade.require('pusher');\nminispade.require('routes');\nminispade.require('slider');\nminispade.require('store');\nminispade.require('tailing');\nminispade.require('templates');\nminispade.require('views');\nminispade.require('config/locales');\nminispade.require('data/sponsors');\n\n Travis.reopen({\n App: Em.Application.extend({\n autoinit: false,\n currentUserBinding: 'auth.user',\n authStateBinding: 'auth.state',\n init: function() {\n this._super.apply(this, arguments);\n this.store = Travis.Store.create();\n this.store.loadMany(Travis.Sponsor, Travis.SPONSORS);\n this.set('auth', Travis.Auth.create({\n app: this,\n endpoint: Travis.config.api_endpoint\n }));\n this.slider = new Travis.Slider();\n this.pusher = new Travis.Pusher(Travis.config.pusher);\n return this.tailing = new Travis.Tailing();\n },\n signIn: function() {\n return this.get('auth').signIn();\n },\n signOut: function() {\n this.get('auth').signOut();\n return this.get('router').send('showRoot');\n },\n receive: function() {\n return this.store.receive.apply(this.store, arguments);\n },\n toggleSidebar: function() {\n var element;\n $('body').toggleClass('maximized');\n element = $('');\n $('#top .profile').append(element);\n Em.run.later((function() {\n return element.remove();\n }), 10);\n element = $('');\n $('#repo').append(element);\n return Em.run.later((function() {\n return element.remove();\n }), 10);\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=app");minispade.register('auth', "(function() {(function() {\n\n this.Travis.Auth = Ember.Object.extend({\n iframe: $('