From 27d5fe474160943e13523d1668cae2b77968ed4f Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Thu, 30 Nov 2023 16:39:08 +0300 Subject: [PATCH] apps/web: simplify combineDocuments function --- apps/web/api/ius/tools.ts | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/apps/web/api/ius/tools.ts b/apps/web/api/ius/tools.ts index 60011b6..544847d 100644 --- a/apps/web/api/ius/tools.ts +++ b/apps/web/api/ius/tools.ts @@ -1,5 +1,4 @@ import type { Document, DocumentType } from './types'; -import { unique } from 'radash'; export function combineDocuments({ documentTypes, @@ -12,20 +11,24 @@ export function combineDocuments({ return documentTypes.map((x) => ({ ...(x as Document), canUpload: true })); } - const res = unique(documents, ({ documentTypeId }) => documentTypeId).map((document) => ({ - ...document, - canUpload: documentTypes.some( - (documentType) => documentType.documentTypeId === document.documentTypeId - ), - })); + const nonUploadableDocuments = documents + .filter( + (document) => + !documentTypes.some( + (documentType) => documentType.documentTypeId === document.documentTypeId + ) + ) + .map((document) => ({ ...document, canUpload: false })); - documentTypes.forEach((documentType) => { - if (!res.some((document) => document.documentTypeId === documentType.documentTypeId)) { - res.push({ ...documentType, canUpload: true }); - } - }); + return documentTypes + .map((documentType) => { + const targetDocument = documents.find( + (document) => document.documentTypeId === documentType.documentTypeId + ); - return res; + return { ...documentType, ...targetDocument, canUpload: true }; + }) + .concat(nonUploadableDocuments); } export type CombinedDocuments = ReturnType;