diff --git a/app/coffee/modules/base/repository.coffee b/app/coffee/modules/base/repository.coffee index 2155c846..05ca4846 100644 --- a/app/coffee/modules/base/repository.coffee +++ b/app/coffee/modules/base/repository.coffee @@ -134,9 +134,10 @@ class RepositoryService extends taiga.Service return @http.get(url, params, httpOptions).then (data) => return data.data - queryPaginated: (name, params) -> + queryPaginated: (name, params, options={}) -> url = @urls.resolve(name) - return @http.get(url, params).then (data) => + httpOptions = _.merge({headers: {}}, options) + return @http.get(url, params, httpOptions).then (data) => headers = data.headers() result = {} result.models = _.map(data.data, (x) => @model.make_model(name, x)) diff --git a/app/coffee/modules/issues/list.coffee b/app/coffee/modules/issues/list.coffee index acd31682..b2aab722 100644 --- a/app/coffee/modules/issues/list.coffee +++ b/app/coffee/modules/issues/list.coffee @@ -229,7 +229,12 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi @.markSelectedFilters(@scope.filters, urlfilters) @rootscope.$broadcast("filters:loaded", @scope.filters) - loadIssues: -> + # We need to guarantee that the last petition done here is the finally used + # When searching by text loadIssues can be called fastly with different parameters and + # can be resolved in a different order than generated + # We count the requests made and only if the callback is for the last one data is updated + loadIssuesRequests: 0 + loadIssues: => @scope.urlFilters = @.getUrlFilters() # Convert stored filters to http parameters @@ -255,11 +260,15 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi name = "type" @scope.httpParams[name] = values - return @rs.issues.list(@scope.projectId, @scope.httpParams).then (data) => - @scope.issues = data.models - @scope.page = data.current - @scope.count = data.count - @scope.paginatedBy = data.paginatedBy + promise = @rs.issues.list(@scope.projectId, @scope.httpParams) + @.loadIssuesRequests += 1 + promise.index = @.loadIssuesRequests + promise.then (data) => + if promise.index == @.loadIssuesRequests + @scope.issues = data.models + @scope.page = data.current + @scope.count = data.count + @scope.paginatedBy = data.paginatedBy return data loadInitialData: -> diff --git a/app/coffee/modules/resources/issues.coffee b/app/coffee/modules/resources/issues.coffee index fca4caa3..46c5bc78 100644 --- a/app/coffee/modules/resources/issues.coffee +++ b/app/coffee/modules/resources/issues.coffee @@ -35,11 +35,11 @@ resourceProvider = ($repo, $http, $urls, $storage, $q) -> params.project = projectId return $repo.queryOne("issues", issueId, params) - service.list = (projectId, filters) -> + service.list = (projectId, filters, options) -> params = {project: projectId} params = _.extend({}, params, filters or {}) service.storeQueryParams(projectId, params) - return $repo.queryPaginated("issues", params) + return $repo.queryPaginated("issues", params, options) service.bulkCreate = (projectId, data) -> url = $urls.resolve("bulk-create-issues")