summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/error_tracking/components/error_tracking_list.vue
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/error_tracking/components/error_tracking_list.vue')
-rw-r--r--app/assets/javascripts/error_tracking/components/error_tracking_list.vue12
1 files changed, 11 insertions, 1 deletions
diff --git a/app/assets/javascripts/error_tracking/components/error_tracking_list.vue b/app/assets/javascripts/error_tracking/components/error_tracking_list.vue
index a07428dafea..de4b11699fc 100644
--- a/app/assets/javascripts/error_tracking/components/error_tracking_list.vue
+++ b/app/assets/javascripts/error_tracking/components/error_tracking_list.vue
@@ -22,12 +22,16 @@ import AccessorUtils from '~/lib/utils/accessor';
import { __ } from '~/locale';
import Tracking from '~/tracking';
import TimeAgo from '~/vue_shared/components/time_ago_tooltip.vue';
+import { sanitizeUrl } from '~/lib/utils/url_utility';
import { trackErrorListViewsOptions, trackErrorStatusUpdateOptions } from '../utils';
import { I18N_ERROR_TRACKING_LIST } from '../constants';
import ErrorTrackingActions from './error_tracking_actions.vue';
export const tableDataClass = 'table-col d-flex d-md-table-cell align-items-center';
+const isValidErrorId = (errorId) => {
+ return /^[0-9]+$/.test(errorId);
+};
export default {
FIRST_PAGE: 1,
PREV_PAGE: 1,
@@ -202,6 +206,9 @@ export default {
this.searchByQuery(text);
},
getDetailsLink(errorId) {
+ if (!isValidErrorId(errorId)) {
+ return 'about:blank';
+ }
return `error_tracking/${errorId}/details`;
},
goToNextPage() {
@@ -222,7 +229,10 @@ export default {
return filter === this.statusFilter;
},
getIssueUpdatePath(errorId) {
- return `/${this.projectPath}/-/error_tracking/${errorId}.json`;
+ if (!isValidErrorId(errorId)) {
+ return 'about:blank';
+ }
+ return sanitizeUrl(`/${this.projectPath}/-/error_tracking/${errorId}.json`);
},
filterErrors(status, label) {
this.filterValue = label;