From 9e44073941f2085be61b93ffeb3089aadea3dc2a Mon Sep 17 00:00:00 2001 From: Prateek Shourya Date: Mon, 8 Jan 2024 16:16:45 +0530 Subject: [PATCH] fix: estimate order not maintained in create/ update modal. (#3326) * fix: estimate order not maintained in create/ update modal. * fix: estimate points mutation on update. --- web/components/estimates/estimates-list.tsx | 8 +++++++- web/store/estimate.store.ts | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/web/components/estimates/estimates-list.tsx b/web/components/estimates/estimates-list.tsx index 05b174461d2..e226e17e02b 100644 --- a/web/components/estimates/estimates-list.tsx +++ b/web/components/estimates/estimates-list.tsx @@ -14,6 +14,8 @@ import { EmptyState } from "components/common"; import emptyEstimate from "public/empty-state/estimate.svg"; // types import { IEstimate } from "@plane/types"; +// helpers +import { orderArrayBy } from "helpers/array.helper"; export const EstimatesList: React.FC = observer(() => { // states @@ -31,7 +33,11 @@ export const EstimatesList: React.FC = observer(() => { const editEstimate = (estimate: IEstimate) => { setEstimateFormOpen(true); - setEstimateToUpdate(estimate); + // Order the points array by key before updating the estimate to update state + setEstimateToUpdate({ + ...estimate, + points: orderArrayBy(estimate.points, "key"), + }); }; const disableEstimates = () => { diff --git a/web/store/estimate.store.ts b/web/store/estimate.store.ts index 19a05b5441b..0dd90671f14 100644 --- a/web/store/estimate.store.ts +++ b/web/store/estimate.store.ts @@ -172,7 +172,7 @@ export class EstimateStore implements IEstimateStore { updateEstimate = async (workspaceSlug: string, projectId: string, estimateId: string, data: IEstimateFormData) => await this.estimateService.patchEstimate(workspaceSlug, projectId, estimateId, data).then((response) => { const updatedEstimates = (this.estimates?.[projectId] ?? []).map((estimate) => - estimate.id === estimateId ? { ...estimate, ...data.estimate } : estimate + estimate.id === estimateId ? { ...estimate, ...data.estimate, points: [...data.estimate_points] } : estimate ); runInAction(() => { set(this.estimates, projectId, updatedEstimates);