`import DS from 'ember-data'` `import config from 'travis/config/environment'` Store = DS.Store.extend defaultAdapter: 'application' adapter: 'application' receivePusherEvent: (event, data) -> [name, type] = event.split(':') auth = @container.lookup('auth:main') if !@get('isRecentTabOpen') && event != 'job:log' && auth.get('signedIn') && !config.pro && !config.enterprise # if recent repos hasn't been opened yet, we can safely # drop any events that doesn't belong to repos owned by # the logged in user and that aren't related to any # repositories that are already opened permissions = auth.get('permissions') if name == 'job' id = data.job.repository_id else if name == 'build' id = data.repository.id return if !@hasRecordForId('repo', id) && !permissions.contains(id) if name == 'job' && data.job?.commit @pushPayload(commits: [data.job.commit]) if name == 'build' && data.build?.commit # TODO: commit should be a sideload record on build, not mixed with it build = data.build commit = { id: build.commit_id author_email: build.author_email author_name: build.author_name branch: build.branch committed_at: build.committed_at committer_email: build.committer_email committer_name: build.committer_name compare_url: build.compare_url message: build.message sha: build.commit } delete(data.build.commit) @pushPayload(commits: [commit]) if event == 'job:log' data = data.job job = @recordForId('job', data.id) job.appendLog(number: parseInt(data.number), content: data._log, final: data.final) else if data[name] @_loadOne(name, data) else throw "can't load data for #{name}" unless type _loadOne: (type, json) -> payload = {} payload[type.pluralize()] = [json[type]] @pushPayload(payload) # we get other types of records only in a few situations and # it's not always needed to update data, so I'm specyfing which # things I want to update here: if type == 'build' && (json.repository || json.repo) data = json.repository || json.repo @pushPayload(repos: [data]) `export default Store`