From d6773070063eb4f511fd47c3f6896d76d872565b Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Thu, 20 Aug 2015 10:54:13 +0200 Subject: [PATCH 01/60] Remove some more deprecations --- app/controllers/account.coffee | 5 +- app/controllers/accounts/info.coffee | 4 +- app/controllers/build.coffee | 8 ++-- app/controllers/builds.coffee | 8 ++-- app/controllers/caches.coffee | 4 +- app/controllers/env-var.coffee | 48 ------------------- app/controllers/env-vars.coffee | 6 --- app/controllers/env-vars/new.coffee | 45 ----------------- app/controllers/first-sync.coffee | 3 +- app/controllers/job.coffee | 8 ++-- app/controllers/profile.coffee | 9 ++-- app/controllers/repo.coffee | 10 ++-- app/controllers/repos.coffee | 8 ++-- app/controllers/requests.coffee | 7 ++- app/controllers/top.coffee | 3 +- app/helpers/format-commit.coffee | 2 +- app/helpers/format-duration.coffee | 2 +- app/helpers/format-message.coffee | 2 +- app/helpers/format-sha.coffee | 2 +- app/helpers/format-time.coffee | 2 +- app/helpers/github-commit-link.coffee | 2 +- app/helpers/humanize-state.coffee | 2 +- .../landing-page-last-build-time.coffee | 2 +- app/helpers/pretty-date.coffee | 2 +- app/helpers/short-compare-shas.coffee | 2 +- app/helpers/travis-mb.coffee | 2 +- app/models/repo.coffee | 10 ++-- app/models/user.coffee | 2 +- app/routes/accounts.coffee | 2 +- app/routes/application.coffee | 2 +- app/routes/first-sync.coffee | 2 +- app/routes/home.coffee | 4 +- app/routes/requests.coffee | 2 +- app/utils/auth.coffee | 7 ++- app/utils/test-auth.coffee | 7 ++- app/views/builds.coffee | 4 +- app/views/repo.coffee | 2 +- 37 files changed, 76 insertions(+), 166 deletions(-) delete mode 100644 app/controllers/env-var.coffee delete mode 100644 app/controllers/env-vars.coffee delete mode 100644 app/controllers/env-vars/new.coffee diff --git a/app/controllers/account.coffee b/app/controllers/account.coffee index f1ddb699..27aea603 100644 --- a/app/controllers/account.coffee +++ b/app/controllers/account.coffee @@ -2,8 +2,7 @@ Controller = Ember.Controller.extend allHooks: [] - needs: ['currentUser'] - userBinding: 'controllers.currentUser.model' + userBinding: 'auth.currentUser' init: -> @_super.apply this, arguments @@ -22,7 +21,7 @@ Controller = Ember.Controller.extend reloadHooks: -> if login = @get('model.login') - hooks = @store.find('hook', all: true, owner_name: login) + hooks = @store.query('hook', all: true, owner_name: login) hooks.then () -> hooks.set('isLoaded', true) diff --git a/app/controllers/accounts/info.coffee b/app/controllers/accounts/info.coffee index 8d51d797..179d835f 100644 --- a/app/controllers/accounts/info.coffee +++ b/app/controllers/accounts/info.coffee @@ -1,7 +1,7 @@ `import Ember from 'ember'` Controller = Ember.Controller.extend - needs: ['currentUser', 'repos'] - userBinding: 'controllers.currentUser' + repos: Ember.inject.controller() + userBinding: 'auth.currentUser' `export default Controller` diff --git a/app/controllers/build.coffee b/app/controllers/build.coffee index 6470f9a0..b01148ff 100644 --- a/app/controllers/build.coffee +++ b/app/controllers/build.coffee @@ -3,11 +3,11 @@ `import GithubUrlPropertievs from 'travis/mixins/github-url-properties'` Controller = Ember.Controller.extend GithubUrlPropertievs, - needs: ['repo', 'currentUser'] - repoBinding: 'controllers.repo.repo' + repoController: Ember.inject.controller('repo') + repoBinding: 'repoController.repo' commitBinding: 'build.commit' - currentUserBinding: 'controllers.currentUser.model' - tabBinding: 'controllers.repo.tab' + currentUserBinding: 'auth.currentUser' + tabBinding: 'repoController.tab' sendFaviconStateChanges: true currentItemBinding: 'build' diff --git a/app/controllers/builds.coffee b/app/controllers/builds.coffee index 956c9dbb..17649392 100644 --- a/app/controllers/builds.coffee +++ b/app/controllers/builds.coffee @@ -4,10 +4,10 @@ Controller = Ember.ArrayController.extend sortAscending: false sortProperties: ['number'] - needs: ['repo'] + repoController: Ember.inject.controller('repo') - repoBinding: 'controllers.repo.repo' - tabBinding: 'controllers.repo.tab' + repoBinding: 'repoController.repo' + tabBinding: 'repoController.tab' isLoadedBinding: 'content.isLoaded' isLoadingBinding: 'content.isLoading' @@ -53,7 +53,7 @@ Controller = Ember.ArrayController.extend if type? options.event_type = type.replace(/s$/, '') # poor man's singularize - @store.find('build', options) + @store.query('build', options) actions: showMoreBuilds: -> diff --git a/app/controllers/caches.coffee b/app/controllers/caches.coffee index 70940d3a..e0c82195 100644 --- a/app/controllers/caches.coffee +++ b/app/controllers/caches.coffee @@ -2,8 +2,8 @@ `import Ajax from 'travis/utils/ajax'` Controller = Ember.Controller.extend - needs: ['repo'] - repo: Ember.computed.alias('controllers.repo.repo') + repoController: Ember.inject.controller('repo') + repo: Ember.computed.alias('repoController.repo') isDeleting: false diff --git a/app/controllers/env-var.coffee b/app/controllers/env-var.coffee deleted file mode 100644 index b793b857..00000000 --- a/app/controllers/env-var.coffee +++ /dev/null @@ -1,48 +0,0 @@ -`import Ember from 'ember'` -`import Validations from 'travis/utils/validations'` - -Controller = Ember.ObjectController.extend Validations, - isEditing: false - isDeleting: false - - validates: - name: ['presence'] - - actionType: 'Save' - showValueField: Ember.computed.alias('public') - - value: ( (key, value) -> - if arguments.length == 2 - @get('model').set('value', value) - value - else if @get('public') - @get('model.value') - else - '••••••••••••••••' - ).property('model.value', 'public') - - actions: - delete: -> - return if @get('isDeleting') - @set('isDeleting', true) - - @get('model').destroyRecord() - - edit: -> - @set('isEditing', true) - - cancel: -> - @set('isEditing', false) - @get('model').revert() - - save: -> - return if @get('isSaving') - - if @isValid() - env_var = @get('model') - - # TODO: handle errors - env_var.save().then => - @set('isEditing', false) - -`export default Controller` diff --git a/app/controllers/env-vars.coffee b/app/controllers/env-vars.coffee deleted file mode 100644 index 2580ccad..00000000 --- a/app/controllers/env-vars.coffee +++ /dev/null @@ -1,6 +0,0 @@ -`import Ember from 'ember'` - -Controller = Ember.ArrayController.extend - vars: Ember.computed.alias('model') - -`export default Controller` diff --git a/app/controllers/env-vars/new.coffee b/app/controllers/env-vars/new.coffee deleted file mode 100644 index 0317eeb5..00000000 --- a/app/controllers/env-vars/new.coffee +++ /dev/null @@ -1,45 +0,0 @@ -`import Validations from 'travis/utils/validations'` - -Controller = Ember.Controller.extend Validations, - needs: ['repo'] - repo: Ember.computed.alias('controllers.repo.repo') - - isSaving: false - - validates: - name: ['presence'] - - actionType: 'Add' - showValueField: true - - reset: -> - @setProperties(name: null, value: null, public: null) - - actions: - cancel: -> - @reset() - @transitionToRoute('env_vars') - - save: -> - return if @get('isSaving') - @set('isSaving', true) - - if @isValid() - env_var = @store.createRecord('env_var', - name: @get('name') - value: @get('value') - public: @get('public') - repo: @get('repo') - ) - - self = this - env_var.save().then => - @set('isSaving', false) - @reset() - self.transitionToRoute('env_vars') - , => - @set('isSaving', false) - else - @set('isSaving', false) - -`export default Controller` diff --git a/app/controllers/first-sync.coffee b/app/controllers/first-sync.coffee index 6ca0d82b..c518ebc4 100644 --- a/app/controllers/first-sync.coffee +++ b/app/controllers/first-sync.coffee @@ -1,8 +1,7 @@ `import Ember from 'ember'` Controller = Ember.Controller.extend - needs: ['currentUser'] - user: Ember.computed.alias('controllers.currentUser.model') + user: Ember.computed.alias('auth.currentUser') isSyncing: Ember.computed.alias('user.isSyncing') diff --git a/app/controllers/job.coffee b/app/controllers/job.coffee index fb45da9c..496a2247 100644 --- a/app/controllers/job.coffee +++ b/app/controllers/job.coffee @@ -2,13 +2,13 @@ `import { githubCommit } from 'travis/utils/urls'` Controller = Ember.Controller.extend - needs: ['repo', 'currentUser'] + repoController: Ember.inject.controller('repo') - repoBinding: 'controllers.repo.repo' + repoBinding: 'repoController.repo' commitBinding: 'job.commit' annotationsBinding: 'job.annotations' - currentUserBinding: 'controllers.currentUser.model' - tabBinding: 'controllers.repo.tab' + currentUserBinding: 'auth.currentUser' + tabBinding: 'repoController.tab' currentItemBinding: 'job' diff --git a/app/controllers/profile.coffee b/app/controllers/profile.coffee index d5dd0c5d..867f4c7c 100644 --- a/app/controllers/profile.coffee +++ b/app/controllers/profile.coffee @@ -3,16 +3,17 @@ Controller = Ember.Controller.extend name: 'profile' - needs: ['currentUser', 'accounts', 'account'] - userBinding: 'controllers.currentUser.model' - accountBinding: 'controllers.account.model' + accountController: Ember.inject.controller('account') + accountsController: Ember.inject.controller('accounts') + userBinding: 'auth.currentUser' + accountBinding: 'accountController.model' activate: (action, params) -> this["view_#{action}".camelize()]() viewHooks: -> @connectTab('hooks') - @get('controllers.account').reloadHooks() + @get('accountController').reloadHooks() viewUser: -> @connectTab('user') diff --git a/app/controllers/repo.coffee b/app/controllers/repo.coffee index 4c4be4cd..16e9904b 100644 --- a/app/controllers/repo.coffee +++ b/app/controllers/repo.coffee @@ -2,13 +2,15 @@ `import { githubRepo } from 'travis/utils/urls'` Controller = Ember.Controller.extend - needs: ['repos', 'currentUser', 'build', 'job'] - currentUserBinding: 'controllers.currentUser.model' + jobController: Ember.inject.controller('job') + buildController: Ember.inject.controller('build') + reposController: Ember.inject.controller('repos') + currentUserBinding: 'auth.currentUser' classNames: ['repo'] - build: Ember.computed.alias('controllers.build.build') - job: Ember.computed.alias('controllers.job.job') + build: Ember.computed.alias('buildController.build') + job: Ember.computed.alias('jobController.job') slug: (-> @get('repo.slug') ).property('repo.slug') isLoading: (-> @get('repo.isLoading') ).property('repo.isLoading') diff --git a/app/controllers/repos.coffee b/app/controllers/repos.coffee index 2dded81f..47acc64c 100644 --- a/app/controllers/repos.coffee +++ b/app/controllers/repos.coffee @@ -31,14 +31,14 @@ Controller = Ember.Controller.extend @container.lookup('router:main').send('redirectToGettingStarted') isLoadedBinding: 'repos.isLoaded' - needs: ['currentUser', 'repo'] - currentUserBinding: 'controllers.currentUser.model' + repoController: Ember.inject.controller('repo') + currentUserBinding: 'auth.currentUser' selectedRepo: (-> # we need to observe also repo.content here, because we use # ObjectProxy in repo controller # TODO: get rid of ObjectProxy there - @get('controllers.repo.repo.content') || @get('controllers.repo.repo') - ).property('controllers.repo.repo', 'controllers.repo.repo.content') + @get('repoController.repo.content') || @get('repoController.repo') + ).property('repoController.repo', 'repoController.repo.content') startedJobsCount: Ember.computed.alias('runningJobs.length') allJobsCount: (-> diff --git a/app/controllers/requests.coffee b/app/controllers/requests.coffee index 759b7268..40826f98 100644 --- a/app/controllers/requests.coffee +++ b/app/controllers/requests.coffee @@ -1,12 +1,11 @@ `import Ember from 'ember'` Controller = Ember.ArrayController.extend - needs: ['repo'] - repo: Ember.computed.alias('controllers.repo.repo') + repoController: Ember.inject.controller('repo') lintUrl: (-> - slug = @get('repo.slug') + slug = @get('repoController.repo.slug') "https://lint.travis-ci.org/#{slug}" - ).property('repo.slug') + ).property('repoController.repo.slug') `export default Controller` diff --git a/app/controllers/top.coffee b/app/controllers/top.coffee index 93598ca2..9867bba6 100644 --- a/app/controllers/top.coffee +++ b/app/controllers/top.coffee @@ -3,8 +3,7 @@ `import config from 'travis/config/environment'` Controller = Ember.Controller.extend - needs: ['currentUser'] - userBinding: 'controllers.currentUser.model' + userBinding: 'auth.currentUser' store: Ember.inject.service() currentUserBinding: 'auth.currentUser' diff --git a/app/helpers/format-commit.coffee b/app/helpers/format-commit.coffee index 1e488ac0..727fcf60 100644 --- a/app/helpers/format-commit.coffee +++ b/app/helpers/format-commit.coffee @@ -1,6 +1,6 @@ `import { safe, formatCommit as formatCommitHelper } from 'travis/utils/helpers'` -helper = Ember.HTMLBars.makeBoundHelper (params) -> +helper = Ember.Helper.helper (params) -> commit = params[0] safe formatCommitHelper(commit.get('sha'), commit.get('branch')) if commit diff --git a/app/helpers/format-duration.coffee b/app/helpers/format-duration.coffee index 9e39dc53..f3e8c0d4 100644 --- a/app/helpers/format-duration.coffee +++ b/app/helpers/format-duration.coffee @@ -1,7 +1,7 @@ `import { timeInWords, safe } from 'travis/utils/helpers'` `import Ember from "ember"` -helper = Ember.HTMLBars.makeBoundHelper (params) -> +helper = Ember.Helper.helper (params) -> safe timeInWords(params[0]) `export default helper` diff --git a/app/helpers/format-message.coffee b/app/helpers/format-message.coffee index ac38c784..d7b84077 100644 --- a/app/helpers/format-message.coffee +++ b/app/helpers/format-message.coffee @@ -1,7 +1,7 @@ `import { formatMessage as _formatMessage, safe } from 'travis/utils/helpers'` `import Ember from "ember"` -helper = Ember.HTMLBars.makeBoundHelper (params, hash) -> +helper = Ember.Helper.helper (params, hash) -> safe _formatMessage(params[0], hash) `export default helper` diff --git a/app/helpers/format-sha.coffee b/app/helpers/format-sha.coffee index d0c622bd..848379a2 100644 --- a/app/helpers/format-sha.coffee +++ b/app/helpers/format-sha.coffee @@ -1,7 +1,7 @@ `import { formatSha as _formatSha, safe } from 'travis/utils/helpers'` `import Ember from "ember"` -helper = Ember.HTMLBars.makeBoundHelper (params) -> +helper = Ember.Helper.helper (params) -> safe _formatSha(params[0]) `export default helper` diff --git a/app/helpers/format-time.coffee b/app/helpers/format-time.coffee index 73078609..fd404877 100644 --- a/app/helpers/format-time.coffee +++ b/app/helpers/format-time.coffee @@ -1,7 +1,7 @@ `import { timeAgoInWords, safe } from 'travis/utils/helpers'` `import Ember from "ember"` -helper = Ember.HTMLBars.makeBoundHelper (params) -> +helper = Ember.Helper.helper (params) -> safe timeAgoInWords(params[0]) || '-' `export default helper` diff --git a/app/helpers/github-commit-link.coffee b/app/helpers/github-commit-link.coffee index 1b50db32..2b7bd197 100644 --- a/app/helpers/github-commit-link.coffee +++ b/app/helpers/github-commit-link.coffee @@ -1,7 +1,7 @@ `import { formatCommit, safe } from 'travis/utils/helpers'` `import { githubCommit as githubCommitUrl } from 'travis/utils/urls'` -helper = Ember.HTMLBars.makeBoundHelper (params) -> +helper = Ember.Helper.helper (params) -> slug = params[0] commitSha = params[1] return '' unless commitSha diff --git a/app/helpers/humanize-state.coffee b/app/helpers/humanize-state.coffee index f7083b15..1a7989a4 100644 --- a/app/helpers/humanize-state.coffee +++ b/app/helpers/humanize-state.coffee @@ -1,7 +1,7 @@ `import { safe } from 'travis/utils/helpers'` `import Ember from "ember"` -helper = Ember.HTMLBars.makeBoundHelper (params) -> +helper = Ember.Helper.helper (params) -> state = params[0] if state == 'received' 'booting' diff --git a/app/helpers/landing-page-last-build-time.coffee b/app/helpers/landing-page-last-build-time.coffee index 83b57769..13373acd 100644 --- a/app/helpers/landing-page-last-build-time.coffee +++ b/app/helpers/landing-page-last-build-time.coffee @@ -1,7 +1,7 @@ `import { timeAgoInWords, safe } from 'travis/utils/helpers'` `import Ember from "ember"` -helper = Ember.HTMLBars.makeBoundHelper (params) -> +helper = Ember.Helper.helper (params) -> safe timeAgoInWords(params[0]) || 'currently running' `export default helper` diff --git a/app/helpers/pretty-date.coffee b/app/helpers/pretty-date.coffee index 455e9a2b..5336ed5d 100644 --- a/app/helpers/pretty-date.coffee +++ b/app/helpers/pretty-date.coffee @@ -1,7 +1,7 @@ `import { timeAgoInWords, safe } from 'travis/utils/helpers'` `import Ember from "ember"` -helper = Ember.HTMLBars.makeBoundHelper (params) -> +helper = Ember.Helper.helper (params) -> safe moment(params[0]).format('MMMM D, YYYY H:mm:ss') || '-' `export default helper` diff --git a/app/helpers/short-compare-shas.coffee b/app/helpers/short-compare-shas.coffee index 5d462170..faa35ec7 100644 --- a/app/helpers/short-compare-shas.coffee +++ b/app/helpers/short-compare-shas.coffee @@ -1,7 +1,7 @@ `import { pathFrom } from 'travis/utils/helpers'` `import Ember from "ember"` -helper = Ember.HTMLBars.makeBoundHelper (params) -> +helper = Ember.Helper.helper (params) -> url = params[0] path = pathFrom(url) if path.indexOf('...') >= 0 diff --git a/app/helpers/travis-mb.coffee b/app/helpers/travis-mb.coffee index 069b1ba8..58e14edd 100644 --- a/app/helpers/travis-mb.coffee +++ b/app/helpers/travis-mb.coffee @@ -4,4 +4,4 @@ fn = (size) -> if size (size / 1024 / 1024).toFixed(2) -`export default Ember.HTMLBars.makeBoundHelper(fn)` +`export default Ember.Helper.helper(fn)` diff --git a/app/models/repo.coffee b/app/models/repo.coffee index f91d0a76..f463dab9 100644 --- a/app/models/repo.coffee +++ b/app/models/repo.coffee @@ -85,7 +85,7 @@ Repo = Model.extend ).property() branches: (-> - builds = @store.find 'build', repository_id: @get('id'), branches: true + builds = @store.query 'build', repository_id: @get('id'), branches: true builds.then -> builds.set 'isLoaded', true @@ -149,7 +149,7 @@ Repo.reopenClass @find() accessibleBy: (store, login) -> - repos = store.find('repo', { member: login, orderBy: 'name' }) + repos = store.query('repo', { member: login, orderBy: 'name' }) repos.then () -> repos.set('isLoaded', true) @@ -157,7 +157,7 @@ Repo.reopenClass repos search: (store, query) -> - promise = store.find('repo', search: query, orderBy: 'name') + promise = store.query('repo', search: query, orderBy: 'name') result = Ember.ArrayProxy.create(content: []) promise.then -> @@ -178,11 +178,11 @@ Repo.reopenClass bySlug: (store, slug) -> # first check if there is a repo with a given slug already ordered - repos = store.all('repo').filterBy('slug', slug) + repos = store.peekAll('repo').filterBy('slug', slug) if repos.get('length') > 0 repos else - store.find('repo', { slug: slug }) + store.query('repo', { slug: slug }) fetchBySlug: (store, slug) -> repos = @bySlug(store, slug) diff --git a/app/models/user.coffee b/app/models/user.coffee index a3524584..10f11bde 100644 --- a/app/models/user.coffee +++ b/app/models/user.coffee @@ -88,7 +88,7 @@ User = Model.extend @setWithSession('syncedAt', data.user.synced_at) Travis.trigger('user:synced', data.user) - @store.findQuery('account', {}) + @store.query('account', {}) setWithSession: (name, value) -> @set(name, value) diff --git a/app/routes/accounts.coffee b/app/routes/accounts.coffee index 127fbb41..7753daba 100644 --- a/app/routes/accounts.coffee +++ b/app/routes/accounts.coffee @@ -2,7 +2,7 @@ Route = TravisRoute.extend model: -> - @store.find('account', { all: true }) + @store.query('account', { all: true }) setupController: (controller, model) -> user = model.filterBy('type', 'user')[0] diff --git a/app/routes/application.coffee b/app/routes/application.coffee index ed97af61..f108409e 100644 --- a/app/routes/application.coffee +++ b/app/routes/application.coffee @@ -21,7 +21,7 @@ Route = TravisRoute.extend BuildFaviconMixin, @get('stylesheetsManager').disable('dashboard') if !config.pro - repos = @get('store').all('repo') + repos = @get('store').peekAll('repo') repos.forEach (repo) => @subscribeToRepo(repo) diff --git a/app/routes/first-sync.coffee b/app/routes/first-sync.coffee index bb3699f3..7611a866 100644 --- a/app/routes/first-sync.coffee +++ b/app/routes/first-sync.coffee @@ -15,7 +15,7 @@ Route = SimpleLayoutRoute.extend if !controller.get('isSyncing') self = this Ember.run.later this, -> - @store.find('repo', member: @get('controller.user.login')).then( (repos) -> + @store.query('repo', member: @get('controller.user.login')).then( (repos) -> if repos.get('length') self.transitionTo('main') else diff --git a/app/routes/home.coffee b/app/routes/home.coffee index 260b0e8e..a1de26bc 100644 --- a/app/routes/home.coffee +++ b/app/routes/home.coffee @@ -21,10 +21,10 @@ Route = BasicRoute.extend @_super.apply this, arguments loadMoreRepos: -> - @store.find('build').then (builds) => + @store.findAll('build').then (builds) => repoIds = builds.mapBy('data.repo').uniq() repos = @get('repos.repos') - @store.find('repo', ids: repoIds).then (reposFromRequest) => + @store.query('repo', ids: repoIds).then (reposFromRequest) => reposFromRequest.toArray().forEach (repo) -> repos.pushObject(repo) unless repos.contains(repo) diff --git a/app/routes/requests.coffee b/app/routes/requests.coffee index 511f9161..2e21f91b 100644 --- a/app/routes/requests.coffee +++ b/app/routes/requests.coffee @@ -7,6 +7,6 @@ Route = TravisRoute.extend @controllerFor('repo').activate('requests') model: -> - @store.find 'request', repository_id: @modelFor('repo').get('id') + @store.query 'request', repository_id: @modelFor('repo').get('id') `export default Route` diff --git a/app/utils/auth.coffee b/app/utils/auth.coffee index 8b7fdf0b..83f3fc41 100644 --- a/app/utils/auth.coffee +++ b/app/utils/auth.coffee @@ -119,7 +119,12 @@ Auth = Ember.Object.extend storage.setItem('travis.user', JSON.stringify(data.user)) loadUser: (user) -> - @store.pushPayload(users: [user]) + @store.push( + data: + type: 'user', + id: user.id + attributes: user + ) @store.recordForId('user', user.id) receiveMessage: (event) -> diff --git a/app/utils/test-auth.coffee b/app/utils/test-auth.coffee index a0dab1fc..693a0636 100644 --- a/app/utils/test-auth.coffee +++ b/app/utils/test-auth.coffee @@ -14,7 +14,12 @@ Auth = Ember.Object.extend signInForTests: (user) -> @set('state', 'signed-in') if user.constructor.typeKey? != 'user' - @store.pushPayload(users: [user]) + @store.push( + data: + type: 'user', + id: user.id + attributes: user + ) user = @store.recordForId('user', user.id) @set('currentUser', user) diff --git a/app/views/builds.coffee b/app/views/builds.coffee index cdee99f0..b7ad70ee 100644 --- a/app/views/builds.coffee +++ b/app/views/builds.coffee @@ -8,11 +8,11 @@ View = BasicView.extend Polling, store = @get('controller.store') if contentType == 'builds' - store.find('build', { event_type: 'push', repository_id: repositoryId }) + store.query('build', { event_type: 'push', repository_id: repositoryId }) else if contentType == 'pull_requests' store.filter('build', { event_type: 'pull_request', repository_id: repositoryId }) else - store.find 'build', repository_id: repositoryId, branches: true + store.query 'build', repository_id: repositoryId, branches: true `export default View` diff --git a/app/views/repo.coffee b/app/views/repo.coffee index edb5b72a..53d56a09 100644 --- a/app/views/repo.coffee +++ b/app/views/repo.coffee @@ -6,7 +6,7 @@ View = BasicView.extend Polling, popup: Ember.inject.service() - reposBinding: 'controllers.repos' + reposBinding: 'reposController' repoBinding: 'controller.repo' buildBinding: 'controller.build' jobBinding: 'controller.job' From 5cf1cbba6b995d729e22ea27ced4849f8afbbc38 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Mon, 24 Aug 2015 17:05:37 +0200 Subject: [PATCH 02/60] Move ajax and auth into services --- app/adapters/application.coffee | 4 +- app/components/caches-item.coffee | 4 +- app/components/no-builds.coffee | 4 +- app/components/travis-status.coffee | 1 - app/controllers/caches.coffee | 5 +- app/controllers/owner.coffee | 1 - app/controllers/owner/repositories.coffee | 6 +-- app/controllers/owner/running.coffee | 1 - app/initializers/auth.coffee | 15 ++---- app/initializers/pusher.coffee | 7 +-- app/initializers/services.coffee | 5 -- app/initializers/storage.coffee | 58 ----------------------- app/instance-initializers/pusher.coffee | 14 +++++- app/models/build.coffee | 7 +-- app/models/job.coffee | 10 ++-- app/models/log.coffee | 7 +-- app/models/repo.coffee | 9 ++-- app/models/user.coffee | 16 ++++--- app/router.coffee | 2 +- app/routes/caches.coffee | 5 +- app/routes/owner.coffee | 1 - app/routes/owner/repositories.coffee | 1 - app/routes/owner/running.coffee | 1 - app/routes/settings.coffee | 5 +- app/routes/ssh-key.coffee | 5 +- app/{utils => services}/ajax.coffee | 12 +++-- app/{utils => services}/auth.coffee | 38 ++++++++------- app/services/session-storage.coffee | 18 +++++++ app/services/storage.coffee | 22 +++++++++ app/services/store.coffee | 4 +- app/utils/hash-storage.coffee | 17 +++++++ app/utils/pusher.coffee | 10 ++-- app/utils/slider.coffee | 24 ---------- 33 files changed, 161 insertions(+), 178 deletions(-) delete mode 100644 app/initializers/storage.coffee rename app/{utils => services}/ajax.coffee (96%) rename app/{utils => services}/auth.coffee (82%) create mode 100644 app/services/session-storage.coffee create mode 100644 app/services/storage.coffee create mode 100644 app/utils/hash-storage.coffee delete mode 100644 app/utils/slider.coffee diff --git a/app/adapters/application.coffee b/app/adapters/application.coffee index 3ec51701..dea08e11 100644 --- a/app/adapters/application.coffee +++ b/app/adapters/application.coffee @@ -2,6 +2,8 @@ `import config from 'travis/config/environment'` Adapter = DS.ActiveModelAdapter.extend + auth: Ember.inject.service() + host: config.apiEndpoint coalesceFindRequests: true @@ -12,7 +14,7 @@ Adapter = DS.ActiveModelAdapter.extend hash.headers['accept'] = 'application/json; version=2' - if token = Travis.sessionStorage.getItem('travis.token') + if token = @get('auth').token() hash.headers['Authorization'] ||= "token #{token}" hash diff --git a/app/components/caches-item.coffee b/app/components/caches-item.coffee index c6fa0dbf..00c96a9a 100644 --- a/app/components/caches-item.coffee +++ b/app/components/caches-item.coffee @@ -1,7 +1,7 @@ `import Ember from 'ember'` -`import Ajax from 'travis/utils/ajax'` CachesItemComponent = Ember.Component.extend + ajax: Ember.inject.service() tagName: 'li' classNames: ['cache-item'] @@ -20,7 +20,7 @@ CachesItemComponent = Ember.Component.extend deletingDone = => @set('isDeleting', false) repo = @get('repo') - Ajax.ajax("/repos/#{repo.get('id')}/caches", "DELETE", data: data).then(deletingDone, deletingDone).then => + @get('ajax').ajax("/repos/#{repo.get('id')}/caches", "DELETE", data: data).then(deletingDone, deletingDone).then => @get('caches').removeObject(@get('cache')) diff --git a/app/components/no-builds.coffee b/app/components/no-builds.coffee index 57050edf..66e72d8a 100644 --- a/app/components/no-builds.coffee +++ b/app/components/no-builds.coffee @@ -1,10 +1,8 @@ `import Ember from 'ember'` -`import Ajax from 'travis/utils/ajax'` `import config from 'travis/config/environment'` NoBuildsComponent = Ember.Component.extend - - actions: + actions: triggerBuild: () -> @set('isLoading', true) apiEndpoint = config.apiEndpoint diff --git a/app/components/travis-status.coffee b/app/components/travis-status.coffee index 3ae86598..29269e19 100644 --- a/app/components/travis-status.coffee +++ b/app/components/travis-status.coffee @@ -1,5 +1,4 @@ `import Ember from 'ember'` -`import Ajax from 'travis/utils/ajax'` `import config from 'travis/config/environment'` TravisStatusComponent = Ember.Component.extend diff --git a/app/controllers/caches.coffee b/app/controllers/caches.coffee index e0c82195..9827c927 100644 --- a/app/controllers/caches.coffee +++ b/app/controllers/caches.coffee @@ -1,7 +1,8 @@ `import Ember from 'ember'` -`import Ajax from 'travis/utils/ajax'` Controller = Ember.Controller.extend + ajax: Ember.inject.service() + repoController: Ember.inject.controller('repo') repo: Ember.computed.alias('repoController.repo') @@ -21,7 +22,7 @@ Controller = Ember.Controller.extend deletingDone = => @set('isDeleting', false) repo = @get('repo') - Ajax.ajax("/repos/#{@get('repo.id')}/caches", "DELETE").then(deletingDone, deletingDone).then => + @get('ajax').ajax("/repos/#{@get('repo.id')}/caches", "DELETE").then(deletingDone, deletingDone).then => @set('model', {}) `export default Controller` diff --git a/app/controllers/owner.coffee b/app/controllers/owner.coffee index ca59030c..0f3970d3 100644 --- a/app/controllers/owner.coffee +++ b/app/controllers/owner.coffee @@ -1,5 +1,4 @@ `import Ember from 'ember'` -`import Ajax from 'travis/utils/ajax'` Controller = Ember.Controller.extend isLoading: false diff --git a/app/controllers/owner/repositories.coffee b/app/controllers/owner/repositories.coffee index e771a62a..cf07a5b0 100644 --- a/app/controllers/owner/repositories.coffee +++ b/app/controllers/owner/repositories.coffee @@ -1,5 +1,4 @@ `import Ember from 'ember'` -`import Ajax from 'travis/utils/ajax'` Controller = Ember.Controller.extend isLoading: false @@ -13,14 +12,13 @@ Controller = Ember.Controller.extend item ).sortBy('default_branch.last_build.finished_at').reverse() repos - ).property('model') # running: (-> # data = @get('model') - # repos = data.repositories.filter (item, index) -> - # if item.default_branch.last_build != null + # repos = data.repositories.filter (item, index) -> + # if item.default_branch.last_build != null # if item.default_branch.last_build.state == 'started' # item # repos diff --git a/app/controllers/owner/running.coffee b/app/controllers/owner/running.coffee index 33f2ac9f..3b170877 100644 --- a/app/controllers/owner/running.coffee +++ b/app/controllers/owner/running.coffee @@ -1,5 +1,4 @@ `import Ember from 'ember'` -`import Ajax from 'travis/utils/ajax'` Controller = Ember.Controller.extend isLoading: false diff --git a/app/initializers/auth.coffee b/app/initializers/auth.coffee index 5f18a20f..50e34625 100644 --- a/app/initializers/auth.coffee +++ b/app/initializers/auth.coffee @@ -1,16 +1,11 @@ -`import Auth from 'travis/utils/auth'` `import TestAuth from 'travis/utils/test-auth'` initialize = (container, app) -> - app.register 'auth:main', if Ember.testing then TestAuth else Auth - - app.inject('route', 'auth', 'auth:main') - app.inject('controller', 'auth', 'auth:main') - app.inject('application', 'auth', 'auth:main') - app.inject('component', 'auth', 'auth:main') - app.inject('service:flashes', 'auth', 'auth:main') - - app.inject('auth', 'store', 'service:store') + app.inject('route', 'auth', 'service:auth') + app.inject('controller', 'auth', 'service:auth') + app.inject('application', 'auth', 'service:auth') + app.inject('component', 'auth', 'service:auth') + app.inject('service:flashes', 'auth', 'service:auth') AuthInitializer = name: 'auth' diff --git a/app/initializers/pusher.coffee b/app/initializers/pusher.coffee index 857d2d41..920c3e88 100644 --- a/app/initializers/pusher.coffee +++ b/app/initializers/pusher.coffee @@ -2,12 +2,7 @@ `import TravisPusher from 'travis/utils/pusher'` initialize = (registry, application) -> - if config.pusher.key - application.pusher = new TravisPusher(config.pusher) - - application.register 'pusher:main', application.pusher, { instantiate: false } - - application.inject('route', 'pusher', 'pusher:main') + null PusherInitializer = name: 'pusher' diff --git a/app/initializers/services.coffee b/app/initializers/services.coffee index cb283735..ce0f365b 100644 --- a/app/initializers/services.coffee +++ b/app/initializers/services.coffee @@ -1,16 +1,11 @@ -`import Slider from 'travis/utils/slider'` `import Tailing from 'travis/utils/tailing'` `import ToTop from 'travis/utils/to-top'` `import config from 'travis/config/environment'` initialize = (container, application) -> - application.slider = new Slider(application.storage) application.tailing = new Tailing($(window), '#tail', '#log') application.toTop = new ToTop($(window), '.to-top', '#log-container') - application.register 'slider:main', application.slider, { instantiate: false } - application.inject('controller', 'slider', 'slider:main') - Initializer = name: 'services' initialize: initialize diff --git a/app/initializers/storage.coffee b/app/initializers/storage.coffee deleted file mode 100644 index f375e1e3..00000000 --- a/app/initializers/storage.coffee +++ /dev/null @@ -1,58 +0,0 @@ -`import Ember from 'ember'` - -Storage = Em.Object.extend - init: -> - @set('storage', {}) - key: (key) -> - "__#{key.replace('.', '__')}" - getItem: (k) -> - return @get("storage.#{@key(k)}") - setItem: (k,v) -> - @set("storage.#{@key(k)}", v) - removeItem: (k) -> - @setItem(k, null) - clear: -> - @set('storage', {}) - -sessionStorage = (-> - storage = null - try - # firefox will not throw error on access for sessionStorage var, - # you need to actually get something from session - window.sessionStorage.getItem('foo') - storage = window.sessionStorage - catch err - storage = Storage.create() - - storage -)() - -storage = (-> - storage = null - try - storage = window.localStorage || throw('no storage') - catch err - storage = Storage.create() - - storage -)() - -initialize = (container, application) -> - application.register 'storage:main', storage, { instantiate: false } - application.register 'sessionStorage:main', sessionStorage, { instantiate: false } - - application.inject('auth', 'storage', 'storage:main') - application.inject('auth', 'sessionStorage', 'sessionStorage:main') - - # I still use Travis.storage in some places which are not that easy to - # refactor - application.storage = storage - application.sessionStorage = sessionStorage - -StorageInitializer = - name: 'storage' - before: 'services' - initialize: initialize - -`export {initialize}` -`export default StorageInitializer` diff --git a/app/instance-initializers/pusher.coffee b/app/instance-initializers/pusher.coffee index b3e5c38e..a07b55fa 100644 --- a/app/instance-initializers/pusher.coffee +++ b/app/instance-initializers/pusher.coffee @@ -1,5 +1,17 @@ +`import config from 'travis/config/environment'` +`import TravisPusher from 'travis/utils/pusher'` + initialize = (data) -> - data.application.pusher.store = data.container.lookup('service:store') + application = data.application + + if config.pusher.key + application.pusher = new TravisPusher(config.pusher) + + application.register 'pusher:main', application.pusher, { instantiate: false } + + application.inject('route', 'pusher', 'pusher:main') + + application.pusher.store = data.container.lookup('service:store') PusherInitializer = name: 'pusher' diff --git a/app/models/build.coffee b/app/models/build.coffee index 621305bf..10f455ab 100644 --- a/app/models/build.coffee +++ b/app/models/build.coffee @@ -1,11 +1,12 @@ `import { durationFrom, configKeys, compact } from 'travis/utils/helpers'` -`import Ajax from 'travis/utils/ajax'` `import configKeysMap from 'travis/utils/keys-map'` `import Ember from 'ember'` `import Model from 'travis/models/model'` `import DurationCalculations from 'travis/utils/duration-calculations'` Build = Model.extend DurationCalculations, + ajax: Ember.inject.service() + state: DS.attr() number: DS.attr('number') branch: DS.attr('string') @@ -90,11 +91,11 @@ Build = Model.extend DurationCalculations, canRestart: Ember.computed.alias('isFinished') cancel: (-> - Ajax.post "/builds/#{@get('id')}/cancel" + @get('ajax').post "/builds/#{@get('id')}/cancel" ) restart: -> - Ajax.post "/builds/#{@get('id')}/restart" + @get('ajax').post "/builds/#{@get('id')}/restart" formattedFinishedAt: (-> if finishedAt = @get('finishedAt') diff --git a/app/models/job.coffee b/app/models/job.coffee index e72304e8..2c465693 100644 --- a/app/models/job.coffee +++ b/app/models/job.coffee @@ -1,5 +1,4 @@ `import { durationFrom, configKeys, compact } from 'travis/utils/helpers'` -`import Ajax from 'travis/utils/ajax'` `import configKeysMap from 'travis/utils/keys-map'` `import Ember from 'ember'` `import Model from 'travis/models/model'` @@ -7,6 +6,7 @@ `import DurationCalculations from 'travis/utils/duration-calculations'` Job = Model.extend DurationCalculations, + ajax: Ember.inject.service() logId: DS.attr() queue: DS.attr() @@ -30,7 +30,7 @@ Job = Model.extend DurationCalculations, log: ( -> @set('isLogAccessed', true) - Log.create(job: this) + Log.create(job: this, ajax: @get('ajax')) ).property() startedAt: (-> @@ -94,11 +94,11 @@ Job = Model.extend DurationCalculations, canRestart: Ember.computed.alias('isFinished') cancel: (-> - Ajax.post "/jobs/#{@get('id')}/cancel" + @get('ajax').post "/jobs/#{@get('id')}/cancel" ) removeLog: -> - Ajax.patch("/jobs/#{@get('id')}/log").then => + @get('ajax').patch("/jobs/#{@get('id')}/log").then => @reloadLog() reloadLog: -> @@ -106,7 +106,7 @@ Job = Model.extend DurationCalculations, @get('log').fetch() restart: -> - Ajax.post "/jobs/#{@get('id')}/restart" + @get('ajax').post "/jobs/#{@get('id')}/restart" appendLog: (part) -> @get('log').append part diff --git a/app/models/log.coffee b/app/models/log.coffee index f3c8e28c..1e58450f 100644 --- a/app/models/log.coffee +++ b/app/models/log.coffee @@ -9,7 +9,7 @@ Request = Ember.Object.extend accept: 'application/json; chunked=true; version=2, text/plain; version=2' run: -> - Ajax.ajax "/jobs/#{@id}/log?cors_hax=true", 'GET', + @get('ajax').ajax "/jobs/#{@id}/log?cors_hax=true", 'GET', dataType: 'text' headers: @HEADERS success: (body, status, xhr) => Ember.run(this, -> @handle(body, status, xhr)) @@ -50,7 +50,7 @@ Log = Ember.Object.extend data['part_numbers'] = partNumbers if partNumbers data['after'] = after if after - Ajax.ajax "/jobs/#{@get('job.id')}/log", 'GET', + @get('ajax').ajax "/jobs/#{@get('job.id')}/log", 'GET', dataType: 'json' headers: accept: 'application/json; chunked=true; version=2' @@ -81,7 +81,8 @@ Log = Ember.Object.extend @set('removed', true) @loadParts(json['log']['parts']) text: (text) => @loadText(text) - Request.create(id: id, handlers: handlers, log: this).run() if id = @get('job.id') + if id = @get('job.id') + Request.create(id: id, handlers: handlers, log: this, ajax: @get('ajax')).run() clear: -> @clearParts() diff --git a/app/models/repo.coffee b/app/models/repo.coffee index f463dab9..9fc2d8cc 100644 --- a/app/models/repo.coffee +++ b/app/models/repo.coffee @@ -1,12 +1,13 @@ `import ExpandableRecordArray from 'travis/utils/expandable-record-array'` `import Model from 'travis/models/model'` -`import Ajax from 'travis/utils/ajax'` # TODO: Investigate for some weird reason if I use durationFrom here not durationFromHelper, # the function stops being visible inside computed properties. `import { durationFrom as durationFromHelper } from 'travis/utils/helpers'` `import Build from 'travis/models/build'` Repo = Model.extend + ajax: Ember.inject.service() + slug: DS.attr() description: DS.attr() private: DS.attr('boolean') @@ -135,14 +136,14 @@ Repo = Model.extend @notifyPropertyChange 'lastBuildDuration' regenerateKey: (options) -> - Ajax.ajax '/repos/' + @get('id') + '/key', 'post', options + @get('ajax').ajax '/repos/' + @get('id') + '/key', 'post', options fetchSettings: -> - Ajax.ajax('/repos/' + @get('id') + '/settings', 'get', forceAuth: true).then (data) -> + @get('ajax').ajax('/repos/' + @get('id') + '/settings', 'get', forceAuth: true).then (data) -> data['settings'] saveSettings: (settings) -> - Ajax.ajax('/repos/' + @get('id') + '/settings', 'patch', data: { settings: settings }) + @get('ajax').ajax('/repos/' + @get('id') + '/settings', 'patch', data: { settings: settings }) Repo.reopenClass recent: -> diff --git a/app/models/user.coffee b/app/models/user.coffee index 10f11bde..910a6663 100644 --- a/app/models/user.coffee +++ b/app/models/user.coffee @@ -1,9 +1,13 @@ `import Ember from 'ember'` `import Model from 'travis/models/model'` -`import Ajax from 'travis/utils/ajax'` `import config from 'travis/config/environment'` User = Model.extend + ajax: Ember.inject.service() + + # TODO: this totally not should be needed here + sessionStorage: Ember.inject.service() + name: DS.attr() email: DS.attr() login: DS.attr() @@ -27,7 +31,7 @@ User = Model.extend ).property() _rawPermissions: (-> - Ajax.get('/users/permissions') + @get('ajax').get('/users/permissions') ).property() permissions: (-> @@ -72,12 +76,12 @@ User = Model.extend sync: -> self = this - Ajax.post('/users/sync', {}, -> + @get('ajax').post('/users/sync', {}, -> self.setWithSession('isSyncing', true) ) poll: -> - Ajax.get '/users', (data) => + @get('ajax').get '/users', (data) => if data.user.is_syncing self = this setTimeout -> @@ -92,8 +96,8 @@ User = Model.extend setWithSession: (name, value) -> @set(name, value) - user = JSON.parse(Travis.sessionStorage.getItem('travis.user')) + user = JSON.parse(@get('sessionStorage').getItem('travis.user')) user[name.underscore()] = @get(name) - Travis.sessionStorage.setItem('travis.user', JSON.stringify(user)) + @get('sessionStorage').setItem('travis.user', JSON.stringify(user)) `export default User` diff --git a/app/router.coffee b/app/router.coffee index d42fb3f1..fab55d51 100644 --- a/app/router.coffee +++ b/app/router.coffee @@ -13,7 +13,7 @@ Router = Ember.Router.extend # # we should probably think about a more general way to # do this, location should not know about auth status - Location.create(auth: @container.lookup('auth:main')) + Location.create(auth: @container.lookup('service:auth')) ).property() # TODO: this is needed, because in the original version diff --git a/app/routes/caches.coffee b/app/routes/caches.coffee index a792236f..753454f2 100644 --- a/app/routes/caches.coffee +++ b/app/routes/caches.coffee @@ -1,8 +1,9 @@ `import Ember from 'ember'` `import TravisRoute from 'travis/routes/basic'` -`import Ajax from 'travis/utils/ajax'` Route = TravisRoute.extend + ajax: Ember.inject.service() + needsAuth: true setupController: (controller) -> @_super.apply this, arguments @@ -10,7 +11,7 @@ Route = TravisRoute.extend model: -> repo = @modelFor('repo') - Ajax.get("/repos/#{repo.get('id')}/caches").then( (data) -> + @get('ajax').get("/repos/#{repo.get('id')}/caches").then( (data) -> caches = {} data["caches"].forEach (cacheData) -> diff --git a/app/routes/owner.coffee b/app/routes/owner.coffee index 926a6de7..98a6d17a 100644 --- a/app/routes/owner.coffee +++ b/app/routes/owner.coffee @@ -1,6 +1,5 @@ `import Ember from 'ember'` `import TravisRoute from 'travis/routes/basic'` -`import Ajax from 'travis/utils/ajax'` `import config from 'travis/config/environment'` Route = TravisRoute.extend diff --git a/app/routes/owner/repositories.coffee b/app/routes/owner/repositories.coffee index 38707fe1..8a647b9b 100644 --- a/app/routes/owner/repositories.coffee +++ b/app/routes/owner/repositories.coffee @@ -1,6 +1,5 @@ `import Ember from 'ember'` `import TravisRoute from 'travis/routes/basic'` -`import Ajax from 'travis/utils/ajax'` `import config from 'travis/config/environment'` Route = TravisRoute.extend diff --git a/app/routes/owner/running.coffee b/app/routes/owner/running.coffee index 11fca69b..47ed43a3 100644 --- a/app/routes/owner/running.coffee +++ b/app/routes/owner/running.coffee @@ -1,6 +1,5 @@ `import Ember from 'ember'` `import TravisRoute from 'travis/routes/basic'` -`import Ajax from 'travis/utils/ajax'` `import config from 'travis/config/environment'` Route = TravisRoute.extend diff --git a/app/routes/settings.coffee b/app/routes/settings.coffee index 0945c35e..628b4443 100644 --- a/app/routes/settings.coffee +++ b/app/routes/settings.coffee @@ -1,8 +1,9 @@ `import TravisRoute from 'travis/routes/basic'` -`import Ajax from 'travis/utils/ajax'` `import config from 'travis/config/environment'` Route = TravisRoute.extend + ajax: Ember.inject.service() + needsAuth: true setupController: (controller, model) -> @_super.apply(this, arguments) @@ -27,7 +28,7 @@ Route = TravisRoute.extend fetchSshKey: () -> repo = @modelFor('repo') - Ajax.get "/repos/#{repo.get('id')}/key", (data) => + @get('ajax').get "/repos/#{repo.get('id')}/key", (data) => Ember.Object.create(fingerprint: data.fingerprint) fetchRepositoryActiveFlag: -> diff --git a/app/routes/ssh-key.coffee b/app/routes/ssh-key.coffee index f97d323b..0657952d 100644 --- a/app/routes/ssh-key.coffee +++ b/app/routes/ssh-key.coffee @@ -1,8 +1,9 @@ `import Ember from 'ember'` -`import Ajax from 'travis/utils/ajax'` `import TravisRoute from 'travis/routes/basic'` Route = TravisRoute.extend + ajax: Ember.inject.service() + titleToken: 'Ssh Keys' model: (params) -> @@ -17,7 +18,7 @@ Route = TravisRoute.extend afterModel: (model, transition) -> repo = @modelFor('repo') - Ajax.get "/repos/#{repo.get('id')}/key", (data) => + @get('ajax').get "/repos/#{repo.get('id')}/key", (data) => @defaultKey = Ember.Object.create(fingerprint: data.fingerprint) setupController: (controller, model) -> diff --git a/app/utils/ajax.coffee b/app/services/ajax.coffee similarity index 96% rename from app/utils/ajax.coffee rename to app/services/ajax.coffee index dc8457d6..b52b0eb3 100644 --- a/app/utils/ajax.coffee +++ b/app/services/ajax.coffee @@ -7,7 +7,9 @@ default_options = accepts: json: 'application/json; version=2' -ajax = Em.Object.create +Ajax = Ember.Service.extend + auth: Ember.inject.service() + publicEndpoints: [/\/repos\/?.*/, /\/builds\/?.*/, /\/jobs\/?.*/] privateEndpoints: [/\/repos\/\d+\/caches/] @@ -42,8 +44,8 @@ ajax = Em.Object.create endpoint = config.apiEndpoint || '' options = options || {} - token = Travis.sessionStorage.getItem('travis.token') - if token && (ajax.needsAuth(method, url) || options.forceAuth) + token = Ember.get(this, 'auth').token() + if token && (@needsAuth(method, url) || options.forceAuth) options.headers ||= {} options.headers['Authorization'] ||= "token #{token}" @@ -66,9 +68,9 @@ ajax = Em.Object.create error = options.error || (->) options.error = (data, status, xhr) => + console.log "[ERROR] API responded with an error (#{status}): #{JSON.stringify(data)}" Travis.lookup('controller:flash').pushObject(data.flash) if data?.flash delete data.flash if data? - console.log "[ERROR] API responded with an error (#{status}): #{JSON.stringify(data)}" error.apply(this, arguments) options = $.extend(options, default_options) @@ -153,4 +155,4 @@ ajax = Em.Object.create return promise -`export default ajax` +`export default Ajax` diff --git a/app/utils/auth.coffee b/app/services/auth.coffee similarity index 82% rename from app/utils/auth.coffee rename to app/services/auth.coffee index 83f3fc41..416c30b9 100644 --- a/app/utils/auth.coffee +++ b/app/services/auth.coffee @@ -1,7 +1,11 @@ `import config from 'travis/config/environment'` -`import Ajax from 'travis/utils/ajax'` -Auth = Ember.Object.extend +Auth = Ember.Service.extend + store: Ember.inject.service(), + storage: Ember.inject.service(), + sessionStorage: Ember.inject.service(), + ajax: Ember.inject.service() + state: "signed-out" receivingEnd: "#{location.protocol}//#{location.host}" @@ -9,20 +13,20 @@ Auth = Ember.Object.extend window.addEventListener('message', (e) => @receiveMessage(e)) token: -> - Travis.sessionStorage.getItem('travis.token') + @get('sessionStorage').getItem('travis.token') endpoint: (-> config.apiEndpoint ).property(), signOut: -> - @storage.removeItem('travis.user') - @storage.removeItem('travis.token') - @sessionStorage.clear() + @get('storage').removeItem('travis.user') + @get('storage').removeItem('travis.token') + @get('sessionStorage').clear() @set('state', 'signed-out') @set('user', undefined) if user = @get('currentUser') - @store.unloadAll('user') + @get('store').unloadAll('user') @set('currentUser', null) @sendToApp('afterSignOut') Travis.trigger('user:signed_out') @@ -36,7 +40,7 @@ Auth = Ember.Object.extend $('