diff options
Diffstat (limited to 'app/assets/javascripts/vue_shared/security_reports/security_reports_app.vue')
-rw-r--r-- | app/assets/javascripts/vue_shared/security_reports/security_reports_app.vue | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/app/assets/javascripts/vue_shared/security_reports/security_reports_app.vue b/app/assets/javascripts/vue_shared/security_reports/security_reports_app.vue index d5696e3c8cf..89253cc7116 100644 --- a/app/assets/javascripts/vue_shared/security_reports/security_reports_app.vue +++ b/app/assets/javascripts/vue_shared/security_reports/security_reports_app.vue @@ -3,6 +3,7 @@ import { GlIcon, GlLink, GlSprintf } from '@gitlab/ui'; import ReportSection from '~/reports/components/report_section.vue'; import { status } from '~/reports/constants'; import { s__ } from '~/locale'; +import { normalizeHeaders, parseIntPagination } from '~/lib/utils/common_utils'; import Flash from '~/flash'; import Api from '~/api'; @@ -52,12 +53,27 @@ export default { }); }, methods: { - checkHasSecurityReports(reportTypes) { - return Api.pipelineJobs(this.projectId, this.pipelineId).then(({ data: jobs }) => - jobs.some(({ artifacts = [] }) => + async checkHasSecurityReports(reportTypes) { + let page = 1; + while (page) { + // eslint-disable-next-line no-await-in-loop + const { data: jobs, headers } = await Api.pipelineJobs(this.projectId, this.pipelineId, { + per_page: 100, + page, + }); + + const hasSecurityReports = jobs.some(({ artifacts = [] }) => artifacts.some(({ file_type }) => reportTypes.includes(file_type)), - ), - ); + ); + + if (hasSecurityReports) { + return true; + } + + page = parseIntPagination(normalizeHeaders(headers)).nextPage; + } + + return false; }, activatePipelinesTab() { if (window.mrTabs) { |