diff --git a/furniture-3d-system/src/app/intake/non-integrated/NonIntegratedDetailClient.tsx b/furniture-3d-system/src/app/intake/non-integrated/NonIntegratedDetailClient.tsx index fef98b1e..140c1d6b 100644 --- a/furniture-3d-system/src/app/intake/non-integrated/NonIntegratedDetailClient.tsx +++ b/furniture-3d-system/src/app/intake/non-integrated/NonIntegratedDetailClient.tsx @@ -423,6 +423,9 @@ import { PRODUCT_PHOTO_PANEL_ORDER, QUALITY_STANDARD_FILE_ACCEPT, areProductPhotoSelectionsEqual, + createInitialDocumentWorkspaceApprovedAt, + createInitialDocumentWorkspaceConfirmations, + createInitialDocumentWorkspaceNotes, buildDocumentWorkspaceRevisionFileEntries, buildProductPhotoMetadata, getDocumentWorkspaceCategoryLabel, @@ -4395,52 +4398,6 @@ function buildOpeningReferenceFormValues( }; } -function createInitialDocumentWorkspaceNotes( - product: NonIntegratedProductRecord | null, -) { - return UPLOAD_CATEGORY_PANEL_ORDER.reduce< - Record - >( - (current, category) => { - current[category] = product?.documentWorkspaceNotes?.[category] ?? ""; - return current; - }, - { ...EMPTY_DOCUMENT_WORKSPACE_NOTES }, - ); -} - -function createInitialDocumentWorkspaceConfirmations( - product: NonIntegratedProductRecord | null, -): NonIntegratedDocumentWorkspaceConfirmationMap { - const confirmations = product?.documentWorkspaceConfirmations - ? { ...product.documentWorkspaceConfirmations } - : createDefaultDocumentWorkspaceConfirmations(false); - - if (getProjectReviewApprovedAtFallback(product)) { - confirmations[PROJECT_REVIEW_WORKSPACE_CATEGORY] = true; - } - - return confirmations; -} - -function createInitialDocumentWorkspaceApprovedAt( - product: NonIntegratedProductRecord | null, -): NonIntegratedDocumentWorkspaceApprovalMap { - const approvedAt = product?.documentWorkspaceApprovedAt - ? { ...product.documentWorkspaceApprovedAt } - : {}; - - const projectReviewApprovedAt = getProjectReviewApprovedAtFallback(product); - if ( - projectReviewApprovedAt && - !approvedAt[PROJECT_REVIEW_WORKSPACE_CATEGORY] - ) { - approvedAt[PROJECT_REVIEW_WORKSPACE_CATEGORY] = projectReviewApprovedAt; - } - - return approvedAt; -} - const NON_INTEGRATED_IMAGE_UPLOAD_MAX_DIMENSION = 2048; function nonIntegratedImageUploadFileName(file: File) { @@ -5542,14 +5499,26 @@ export default function NonIntegratedDetailClient({ ); const [documentWorkspaceNotes, setDocumentWorkspaceNotes] = useState< Record - >(() => createInitialDocumentWorkspaceNotes(existingProduct)); + >(() => + createInitialDocumentWorkspaceNotes( + existingProduct, + UPLOAD_CATEGORY_PANEL_ORDER, + EMPTY_DOCUMENT_WORKSPACE_NOTES, + ), + ); const [documentWorkspaceConfirmations, setDocumentWorkspaceConfirmations] = useState(() => - createInitialDocumentWorkspaceConfirmations(existingProduct), + createInitialDocumentWorkspaceConfirmations( + existingProduct, + PROJECT_REVIEW_WORKSPACE_CATEGORY, + ), ); const [documentWorkspaceApprovedAt, setDocumentWorkspaceApprovedAt] = useState(() => - createInitialDocumentWorkspaceApprovedAt(existingProduct), + createInitialDocumentWorkspaceApprovedAt( + existingProduct, + PROJECT_REVIEW_WORKSPACE_CATEGORY, + ), ); const [selectedWorkspaceFileId, setSelectedWorkspaceFileId] = useState(""); const [activeProductDataGroup, setActiveProductDataGroup] = diff --git a/furniture-3d-system/src/app/intake/non-integrated/documentWorkspaceHelpers.ts b/furniture-3d-system/src/app/intake/non-integrated/documentWorkspaceHelpers.ts index c30e3e51..c9902812 100644 --- a/furniture-3d-system/src/app/intake/non-integrated/documentWorkspaceHelpers.ts +++ b/furniture-3d-system/src/app/intake/non-integrated/documentWorkspaceHelpers.ts @@ -1,10 +1,15 @@ import { + createDefaultDocumentWorkspaceConfirmations, getNonIntegratedDocumentWorkspaceCategoryLabel, type NonIntegratedDetectionAssetType, + type NonIntegratedDocumentWorkspaceApprovalMap, + type NonIntegratedDocumentWorkspaceConfirmationMap, type NonIntegratedDocumentWorkspaceCategory, + type NonIntegratedProductRecord, type NonIntegratedUploadFile, type NonIntegratedWorkflowNodeCategory, } from "./nonIntegratedStorage"; +import { getProjectReviewApprovedAtFallback } from "./openingReferenceHelpers"; import { getDefaultProductPhotoStyleKey, getFileNameWithoutExtension, @@ -109,6 +114,56 @@ export function buildDocumentWorkspaceRevisionFileEntries( })); } +export function createInitialDocumentWorkspaceNotes( + product: NonIntegratedProductRecord | null, + uploadCategoryPanelOrder: DocumentWorkspaceCategory[], + emptyDocumentWorkspaceNotes: Record, +) { + return uploadCategoryPanelOrder.reduce< + Record + >( + (current, category) => { + current[category] = product?.documentWorkspaceNotes?.[category] ?? ""; + return current; + }, + { ...emptyDocumentWorkspaceNotes }, + ); +} + +export function createInitialDocumentWorkspaceConfirmations( + product: NonIntegratedProductRecord | null, + projectReviewWorkspaceCategory: DocumentWorkspaceCategory, +): NonIntegratedDocumentWorkspaceConfirmationMap { + const confirmations = product?.documentWorkspaceConfirmations + ? { ...product.documentWorkspaceConfirmations } + : createDefaultDocumentWorkspaceConfirmations(false); + + if (getProjectReviewApprovedAtFallback(product)) { + confirmations[projectReviewWorkspaceCategory] = true; + } + + return confirmations; +} + +export function createInitialDocumentWorkspaceApprovedAt( + product: NonIntegratedProductRecord | null, + projectReviewWorkspaceCategory: DocumentWorkspaceCategory, +): NonIntegratedDocumentWorkspaceApprovalMap { + const approvedAt = product?.documentWorkspaceApprovedAt + ? { ...product.documentWorkspaceApprovedAt } + : {}; + + const projectReviewApprovedAt = getProjectReviewApprovedAtFallback(product); + if ( + projectReviewApprovedAt && + !approvedAt[projectReviewWorkspaceCategory] + ) { + approvedAt[projectReviewWorkspaceCategory] = projectReviewApprovedAt; + } + + return approvedAt; +} + export const QUALITY_STANDARD_FILE_ACCEPT = ".xls,.xlsx,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";