summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/vue_merge_request_widget/components/widget/widget.vue
diff options
context:
space:
mode:
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.vue32
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']) {