refactor(newappeal): extract file merge and dedupe helpers (Slice 2b)

This commit is contained in:
2026-04-13 10:07:58 +01:00
parent ddbf2116f5
commit 7c4ce131bf
4 changed files with 45 additions and 30 deletions
+10 -22
View File
@@ -21,6 +21,10 @@ import {
updateLinks,
getDocLink
} from "../utils";
import {
dedupeFilesListByName,
removeDuplicatesByKey
} from "../../lib/newappeal/fileListHelpers";
let BuildCheckSection = (props) => {
useEffect(() => {
@@ -97,20 +101,10 @@ let BuildCheckSection = (props) => {
});
//console.log(buildAppealFilesArray);
function removeDuplicates(arr, key) {
const seen = new Set();
return arr.filter((item) => {
const value = item[key];
if (seen.has(value)) {
return false; // Duplicate found
} else {
seen.add(value); // Add value to the set
return true; // Keep the item
}
});
}
buildAppealFilesArray = removeDuplicates(buildAppealFilesArray, "name");
buildAppealFilesArray = removeDuplicatesByKey(
buildAppealFilesArray,
"name"
);
let pdfObj = props.props.form.appealForm.values;
@@ -152,10 +146,7 @@ let BuildCheckSection = (props) => {
const finaliseAppeal = async () => {
//console.log("finalising appeal:", pdfObj);
const uniqueArray = pdfObj.filesList.filter(
(value, index, self) =>
index === self.findIndex((t) => t.name === value.name)
);
const uniqueArray = dedupeFilesListByName(pdfObj.filesList);
pdfObj.filesList = uniqueArray;
pdfObj.locale = locale;
@@ -197,10 +188,7 @@ let BuildCheckSection = (props) => {
try {
setDownloadInProgress(true);
const uniqueArray = pdfObj.filesList.filter(
(value, index, self) =>
index === self.findIndex((t) => t.name === value.name)
);
const uniqueArray = dedupeFilesListByName(pdfObj.filesList);
pdfObj.filesList = uniqueArray;
pdfObj.locale = locale;
+5 -6
View File
@@ -6,6 +6,7 @@ import { connect } from "react-redux";
import { formValueSelector, reduxForm } from "redux-form";
import { uploadFiles } from "../../actions/services/documentService";
import { sendEmail } from "../../actions/services/notifyService";
import { mergeWithExistingFilesList } from "../../lib/newappeal/fileListHelpers";
import {
normalizeYesNoBooleans,
removeNullKeys,
@@ -166,12 +167,10 @@ let BuildSection = (props) => {
//console.log(buildAppealFilesArray);
buildAppealFilesArray = values.hasOwnProperty("filesList")
? (buildAppealFilesArray.concat(values.filesList),
buildAppealFilesArray.filter(function (item, idx) {
return item.name;
}))
: buildAppealFilesArray;
buildAppealFilesArray = mergeWithExistingFilesList(
buildAppealFilesArray,
values
);
Object.assign(values, { "filesList": buildAppealFilesArray });
+2 -2
View File
@@ -4,7 +4,7 @@ Base branch for this tracker: `refactor`
## Status
Current slice: Slice 2bFile Merge/Dedupe Helpers
Current slice: Slice 3Side Effect Facade
Status: READY TO START
---
@@ -32,7 +32,7 @@ Status: COMPLETE
### Slice 2b — File Merge/Dedupe Helpers
Status: NOT STARTED
Status: COMPLETE
- Extract file list merge logic
- Extract dedupe logic
+28
View File
@@ -0,0 +1,28 @@
export const mergeWithExistingFilesList = (buildAppealFilesArray, values) => {
return values.hasOwnProperty("filesList")
? (buildAppealFilesArray.concat(values.filesList),
buildAppealFilesArray.filter(function (item, idx) {
return item.name;
}))
: buildAppealFilesArray;
};
export const removeDuplicatesByKey = (arr, key) => {
const seen = new Set();
return arr.filter((item) => {
const value = item[key];
if (seen.has(value)) {
return false; // Duplicate found
} else {
seen.add(value); // Add value to the set
return true; // Keep the item
}
});
};
export const dedupeFilesListByName = (filesList) => {
return filesList.filter(
(value, index, self) =>
index === self.findIndex((t) => t.name === value.name)
);
};