From 10332b796aa7b1617e4cffae26133bb07bff9bcc Mon Sep 17 00:00:00 2001
From: Thomas Randolph <trandolph@gitlab.com>
Date: Tue, 13 Feb 2024 03:34:01 +0000
Subject: [PATCH] Attempt to fix Sentry errors

Issues:

- No replication steps
- No consistent errors (associated Sentry link in issue is not found)
- MRs not even primary cause of this type of error (it's mostly the Issuable Popover in Issues reading `issue`, not `mergeRequest`)

Given the exact error that _had been_ reported ("Cannot read properties of null (reading 'mergeRequest')", these tweaks may help prevent a handful (literally: 5-10 over two weeks) of errors.
---
 .../javascripts/issuable/popover/components/issue_popover.vue   | 2 +-
 .../javascripts/issuable/popover/components/mr_popover.vue      | 2 +-
 .../vue_merge_request_widget/components/merge_checks.vue        | 2 +-
 .../components/states/mr_widget_conflicts.vue                   | 2 +-
 .../components/states/ready_to_merge.vue                        | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/app/assets/javascripts/issuable/popover/components/issue_popover.vue b/app/assets/javascripts/issuable/popover/components/issue_popover.vue
index 12d76ec4b548f..236a0a947715b 100644
--- a/app/assets/javascripts/issuable/popover/components/issue_popover.vue
+++ b/app/assets/javascripts/issuable/popover/components/issue_popover.vue
@@ -64,7 +64,7 @@ export default {
   apollo: {
     issue: {
       query,
-      update: (data) => data.project.issue,
+      update: (data) => data.project?.issue || {},
       variables() {
         const { namespacePath, iid } = this;
 
diff --git a/app/assets/javascripts/issuable/popover/components/mr_popover.vue b/app/assets/javascripts/issuable/popover/components/mr_popover.vue
index 25a40f63de3e6..dee7d8309e83c 100644
--- a/app/assets/javascripts/issuable/popover/components/mr_popover.vue
+++ b/app/assets/javascripts/issuable/popover/components/mr_popover.vue
@@ -74,7 +74,7 @@ export default {
   apollo: {
     mergeRequest: {
       query,
-      update: (data) => data.project.mergeRequest,
+      update: (data) => data.project?.mergeRequest || {},
       variables() {
         const { namespacePath, iid } = this;
 
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/merge_checks.vue b/app/assets/javascripts/vue_merge_request_widget/components/merge_checks.vue
index 4578aa941cdcf..976226328fcb8 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/merge_checks.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/merge_checks.vue
@@ -100,7 +100,7 @@ export default {
       );
     },
     checks() {
-      return this.state.mergeabilityChecks || [];
+      return this.state?.mergeabilityChecks || [];
     },
     sortedChecks() {
       const order = ['FAILED', 'SUCCESS'];
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue
index d2c1c91402893..244d2846bc611 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue
@@ -22,7 +22,7 @@ export default {
       variables() {
         return this.mergeRequestQueryVariables;
       },
-      update: (data) => data.project?.mergeRequest.userPermissions || {},
+      update: (data) => data.project?.mergeRequest?.userPermissions || {},
     },
     state: {
       query: conflictsStateQuery,
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue
index af7453d84d637..5b58f426cbeaa 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue
@@ -65,7 +65,7 @@ export default {
       },
       manual: true,
       result({ data }) {
-        if (!data.project) {
+        if (!data?.project?.mergeRequest) {
           return;
         }
 
-- 
GitLab