diff options
Diffstat (limited to 'app/assets/javascripts/vue_merge_request_widget/components/widget/widget.vue')
-rw-r--r-- | app/assets/javascripts/vue_merge_request_widget/components/widget/widget.vue | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/widget/widget.vue b/app/assets/javascripts/vue_merge_request_widget/components/widget/widget.vue index 7343c98938c..73129a86877 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/widget/widget.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/widget/widget.vue @@ -2,6 +2,7 @@ import { GlButton, GlLink, GlTooltipDirective, GlLoadingIcon } from '@gitlab/ui'; import * as Sentry from '@sentry/browser'; import { normalizeHeaders } from '~/lib/utils/common_utils'; +import { logError } from '~/lib/logger'; import SafeHtml from '~/vue_shared/directives/safe_html'; import { sprintf, __ } from '~/locale'; import Poll from '~/lib/utils/poll'; @@ -17,8 +18,12 @@ import ActionButtons from './action_buttons.vue'; const FETCH_TYPE_COLLAPSED = 'collapsed'; const FETCH_TYPE_EXPANDED = 'expanded'; const WIDGET_PREFIX = 'Widget'; +const MISSING_RESPONSE_HEADERS = + 'MR Widget: raesponse object should contain status and headers object. Make sure to include that in your `fetchCollapsedData` and `fetchExpandedData` functions.'; export default { + MISSING_RESPONSE_HEADERS, + components: { ActionButtons, StatusIcon, @@ -92,6 +97,23 @@ export default { type: Boolean, required: true, }, + /** + * A button is composed of the following properties: + * + * { + * "id": string, + * "href": string, + * "dataMethod": string, + * "dataClipboardText": string, + * "icon": string, + * "variant": string, + * "loading": boolean, + * "testId":string, + * "text": string, + * "class": string | Object, + * "trackFullReportClicked": boolean, + * } + */ actionButtons: { type: Array, required: false, @@ -182,7 +204,7 @@ export default { }, methods: { onActionClick(action) { - if (action.fullReport) { + if (action.trackFullReportClicked) { this.telemetryHub?.fullReportClicked(); } }, @@ -225,6 +247,14 @@ export default { }, method: 'fetchData', successCallback: (response) => { + if ( + typeof response.status === 'undefined' || + typeof response.headers === 'undefined' + ) { + logError(MISSING_RESPONSE_HEADERS); + throw new Error(MISSING_RESPONSE_HEADERS); + } + const headers = normalizeHeaders(response.headers); if (headers['POLL-INTERVAL']) { |