From b62fa443d35e225150ba34317b41b9a85b2eafe1 Mon Sep 17 00:00:00 2001 From: Aaron Plave Date: Thu, 24 Oct 2024 17:07:38 -0700 Subject: [PATCH] Allow users to begin merge request even if the supplying plan has been deleted --- .../modals/PlanMergeRequestsModal.svelte | 19 ++++---- src/utilities/effects.ts | 6 +-- src/utilities/permissions.ts | 44 ++++++++++--------- 3 files changed, 36 insertions(+), 33 deletions(-) diff --git a/src/components/modals/PlanMergeRequestsModal.svelte b/src/components/modals/PlanMergeRequestsModal.svelte index a8b65a9052..d9227d4cc4 100644 --- a/src/components/modals/PlanMergeRequestsModal.svelte +++ b/src/components/modals/PlanMergeRequestsModal.svelte @@ -77,11 +77,7 @@ } async function onReviewOrWithdraw(planMergeRequest: PlanMergeRequest) { - if (!planMergeRequest.plan_snapshot_supplying_changes.plan || !planMergeRequest.plan_receiving_changes) { - return; - } - - if (planMergeRequest.type === 'incoming') { + if (planMergeRequest.type === 'incoming' && planMergeRequest.plan_receiving_changes) { planMergeRequest.pending = true; filteredPlanMergeRequests = [...filteredPlanMergeRequests]; const success = await effects.planMergeBegin( @@ -94,7 +90,7 @@ dispatch('close'); goto(`${base}/plans/${planMergeRequest.plan_receiving_changes.id}/merge`); } - } else if (planMergeRequest.type === 'outgoing') { + } else if (planMergeRequest.type === 'outgoing' && planMergeRequest.plan_snapshot_supplying_changes.plan) { await effects.planMergeRequestWithdraw( planMergeRequest.id, planMergeRequest.plan_snapshot_supplying_changes.plan, @@ -121,7 +117,10 @@ } function hasPermission(planMergeRequest: PlanMergeRequest) { - if (!planMergeRequest.plan_snapshot_supplying_changes.plan || !planMergeRequest.plan_receiving_changes) { + const model = + planMergeRequest.plan_snapshot_supplying_changes.plan?.model || planMergeRequest.plan_receiving_changes?.model; + + if (!model) { return false; } @@ -130,14 +129,14 @@ user, planMergeRequest.plan_snapshot_supplying_changes.plan, planMergeRequest.plan_receiving_changes, - planMergeRequest.plan_snapshot_supplying_changes.plan.model, + model, ); } return featurePermissions.planBranch.canReviewRequest( user, planMergeRequest.plan_snapshot_supplying_changes.plan, planMergeRequest.plan_receiving_changes, - planMergeRequest.plan_snapshot_supplying_changes.plan.model, + model, ); } @@ -212,7 +211,7 @@ - {#if planMergeRequest.status === 'pending' && planMergeRequest.plan_snapshot_supplying_changes.plan} + {#if planMergeRequest.status === 'pending'}