From 23ff951ac619aaa1078688d9bdcc229e4f450e6a Mon Sep 17 00:00:00 2001 From: Jad Date: Wed, 29 Jan 2025 09:45:01 -0800 Subject: [PATCH 1/5] hide created and new status if revision required --- .../PackageStatusChipStack.tsx | 33 +++++++++++++++++-- submit-web/src/models/Package.ts | 2 +- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx b/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx index 45bcf5f1..cf999023 100644 --- a/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx +++ b/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx @@ -1,10 +1,12 @@ import { NON_CANONICAL_PACKAGE_STATUS, + PACKAGE_STATUS, + PackageStatus, SubmissionPackage, } from "@/models/Package"; import { Box, Stack } from "@mui/material"; import PackageStatusChip from "."; -import { When } from "react-if"; +import { Unless, When } from "react-if"; import { UPDATE_REQUEST_STATUS, UPDATE_REQUEST_TYPE, @@ -47,11 +49,38 @@ export const PackageStatusChipStack = ({ ); }, [submissionPackage.update_requests]); + const hideStatus = (status: PackageStatus) => { + const isNewOrCreated = [ + PACKAGE_STATUS.CREATED.value, + PACKAGE_STATUS.NEW_SUBMISSION.value, + ].includes(status); + + if (isNewOrCreated && isRevisionRequired) { + return true; + } + const notFirstVersion = submissionPackage.version.version > 1; + const alreadySubmitted = Boolean(submissionPackage.submitted_on); + if (isNewOrCreated && (notFirstVersion || alreadySubmitted)) { + return true; + } + return false; + }; + + const hideStatusMap: Record = useMemo(() => { + const entries = submissionPackage.status.map((status) => [ + status, + hideStatus(status), + ]); + return Object.fromEntries(entries); + }, [isRevisionRequired, isUpdateRequested]); + return ( {status.map((value) => ( - + + + ))} ; export type PackageVersion = { id: number; package_id: number; - version: string; + version: number; original_package_id: number; }; From 94bae2599aa5c5e4e59ef075ab90c5d834af564c Mon Sep 17 00:00:00 2001 From: Jad Date: Wed, 29 Jan 2025 09:47:25 -0800 Subject: [PATCH 2/5] insert missing useMemo dependency --- .../src/components/PackageStatusChip/PackageStatusChipStack.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx b/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx index cf999023..9d8b3c48 100644 --- a/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx +++ b/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx @@ -72,7 +72,7 @@ export const PackageStatusChipStack = ({ hideStatus(status), ]); return Object.fromEntries(entries); - }, [isRevisionRequired, isUpdateRequested]); + }, [isRevisionRequired, isUpdateRequested, submissionPackage.status]); return ( From 3307fec67fa3f7f3be8c22a5baf11206cd660539 Mon Sep 17 00:00:00 2001 From: Jad Date: Wed, 29 Jan 2025 09:52:00 -0800 Subject: [PATCH 3/5] Add missing dependency --- .../PackageStatusChip/PackageStatusChipStack.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx b/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx index 9d8b3c48..c4f2ea85 100644 --- a/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx +++ b/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx @@ -72,7 +72,12 @@ export const PackageStatusChipStack = ({ hideStatus(status), ]); return Object.fromEntries(entries); - }, [isRevisionRequired, isUpdateRequested, submissionPackage.status]); + }, [ + isRevisionRequired, + isUpdateRequested, + submissionPackage.status, + hideStatus, + ]); return ( From 5bc2f04111510f0f5db98b28f7cdeac7b971a90e Mon Sep 17 00:00:00 2001 From: Jad Date: Wed, 29 Jan 2025 09:54:13 -0800 Subject: [PATCH 4/5] remove unnecessary dependencies --- .../PackageStatusChip/PackageStatusChipStack.tsx | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx b/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx index c4f2ea85..485f155e 100644 --- a/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx +++ b/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx @@ -72,12 +72,7 @@ export const PackageStatusChipStack = ({ hideStatus(status), ]); return Object.fromEntries(entries); - }, [ - isRevisionRequired, - isUpdateRequested, - submissionPackage.status, - hideStatus, - ]); + }, [submissionPackage.status, hideStatus]); return ( From b72fd112e3508e1e10faa0f8e19b820a1fd0176f Mon Sep 17 00:00:00 2001 From: Jad Date: Wed, 29 Jan 2025 09:59:26 -0800 Subject: [PATCH 5/5] wrap function with useCallback --- .../PackageStatusChipStack.tsx | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx b/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx index 485f155e..6445fe14 100644 --- a/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx +++ b/submit-web/src/components/PackageStatusChip/PackageStatusChipStack.tsx @@ -11,7 +11,7 @@ import { UPDATE_REQUEST_STATUS, UPDATE_REQUEST_TYPE, } from "@/models/UpdateRequest"; -import { useMemo } from "react"; +import { useCallback, useMemo } from "react"; import { filterOpenUpdateRequests } from "@/utils"; type PackageStatusChipStackProps = { @@ -49,22 +49,29 @@ export const PackageStatusChipStack = ({ ); }, [submissionPackage.update_requests]); - const hideStatus = (status: PackageStatus) => { - const isNewOrCreated = [ - PACKAGE_STATUS.CREATED.value, - PACKAGE_STATUS.NEW_SUBMISSION.value, - ].includes(status); + const hideStatus = useCallback( + (status: PackageStatus) => { + const isNewOrCreated = [ + PACKAGE_STATUS.CREATED.value, + PACKAGE_STATUS.NEW_SUBMISSION.value, + ].includes(status); - if (isNewOrCreated && isRevisionRequired) { - return true; - } - const notFirstVersion = submissionPackage.version.version > 1; - const alreadySubmitted = Boolean(submissionPackage.submitted_on); - if (isNewOrCreated && (notFirstVersion || alreadySubmitted)) { - return true; - } - return false; - }; + if (isNewOrCreated && isRevisionRequired) { + return true; + } + const notFirstVersion = submissionPackage.version.version > 1; + const alreadySubmitted = Boolean(submissionPackage.submitted_on); + if (isNewOrCreated && (notFirstVersion || alreadySubmitted)) { + return true; + } + return false; + }, + [ + submissionPackage.submitted_on, + submissionPackage.version.version, + isRevisionRequired, + ], + ); const hideStatusMap: Record = useMemo(() => { const entries = submissionPackage.status.map((status) => [