rep defect 42,questioinnaire defect 67, enf defect 16

This commit is contained in:
2025-01-21 16:04:52 +00:00
parent 89c7525ce9
commit 32a3542f79
5 changed files with 87 additions and 6 deletions
+3 -1
View File
@@ -9,7 +9,7 @@ import { formValueSelector, reduxForm } from "redux-form";
import { signIn, useSession } from "next-auth/react";
import { generateRepPDF, sendEmail, uploadRepFiles } from "../../../actions";
import { formatDates } from "../../../components/utils";
import { formatDates, updateLinks } from "../../../components/utils";
import {
setRepresentationCapacity,
setRepresentationMessageSent,
@@ -1100,6 +1100,8 @@ let MakeRepresentation = (props) => {
? cleanFilesList(values)
: values;
values = updateLinks(values);
// get filelists from values object
let fileListObj = _.filter(values, function (v, key) {
return _.includes(key, "representationDocuments");
@@ -16,7 +16,16 @@ import {
getFilesFromBlobproxy,
} from "../../../actions";
const ReactQuill = dynamic(() => import("react-quill-new"), { ssr: false });
const LoadingMessage = () => <div>Loading the editor...</div>;
// Dynamically import ReactQuill with a proper loading state
const ReactQuill = dynamic(
() => import("react-quill-new").then((mod) => mod.default),
{
ssr: false,
loading: () => <LoadingMessage />, // This is valid as long as it's a valid React component
}
);
import { useDispatch } from "react-redux"; // Import the useDispatch hook
import {
+7 -3
View File
@@ -258,9 +258,13 @@ const CaseSummary = (props) => {
: t("case:summary-applicant-label")}
</dt>
<dd className="govuk-summary-list__value">
{detailsObj[
"_pinswg_appellant_value@OData.Community.Display.V1.FormattedValue"
] || "not entered"}
{casesObj.pinswg_appellantagent == 846040001
? casesObj.pinswg_appellantfirstname +
" " +
casesObj.pinswg_appellantlastname
: detailsObj[
"_pinswg_appellant_value@OData.Community.Display.V1.FormattedValue"
] || "not entered"}
</dd>
</div>
{detailsObj.pinswg_agentcontactname != null &&
+3 -1
View File
@@ -13,7 +13,7 @@ import {
setNewAppealProgress,
setFileCount,
} from "../../store/appealType/action";
import { getFormCollectionByID, getProgressObj } from "../utils";
import { getFormCollectionByID, getProgressObj, updateLinks } from "../utils";
import BuildRow from "./buildrow";
import { FieldsTranslations } from "../elements";
@@ -141,6 +141,8 @@ let BuildSection = (props) => {
let buildAppealFilesArray = [];
//console.log("attached docs: - ", buildAppealFilesArray);
values = updateLinks(values);
let filesUploadObj = Object.keys(values)
.filter(function (k) {
return k.indexOf("pinswg_fileUpload") == 0;
+64
View File
@@ -550,3 +550,67 @@ export const getDocumentTypeFromFilename = (filename) => {
return doctypeCode;
};
export const updateLinks = (jsonObject) => {
const wrapPlainUrlsInAnchorTags = (htmlString) => {
return htmlString
.replace(
/(?<=^|>|\s)(?=\S)(?:https?:\/\/)?(?:www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(?:\/[^\s]*)?(?=\s|<|$)/g,
(match) => {
// If the match is already wrapped in <a> tag, return it as is
if (match.includes('<a href="') || match.includes("<a ")) {
return match;
}
// Check if the URL starts with http:// or https://, else prepend http://
const url =
match.startsWith("http://") ||
match.startsWith("https://")
? match
: "https://" + match;
// Return the URL wrapped in <a> tag
return `<a href="${url}" rel="noopener noreferrer" target="_blank">${match}</a>`;
}
)
.replace(
/<a [^>]*><a [^>]*>(.*?)<\/a><\/a>/g,
(match, innerContent) => {
return `<a href="${innerContent}" rel="noopener noreferrer" target="_blank">${innerContent}</a>`;
}
);
};
// Helper function to ensure that any href attributes in <a> tags have https/http
const ensureHttpsInLinks = (inputString) => {
// Match <a> tags with href attributes and check if they lack a scheme (http:// or https://)
return inputString.replace(
/<a [^>]*href=["']([^"']*)["'][^>]*>/g,
(match, url) => {
// If the URL doesn't already have a scheme (http:// or https://), add https://
if (!/^https?:\/\//.test(url)) {
const newUrl = `https://${url}`;
return match.replace(url, newUrl);
}
return match; // Return the unchanged anchor tag if it already has a scheme
}
);
};
// Iterate through all properties of the JSON object
Object.keys(jsonObject).forEach((key) => {
const value = jsonObject[key];
// If the value is a string and contains plain URLs that are not wrapped
if (typeof value === "string") {
// Step 1: Wrap plain URLs in anchor tags if not already wrapped
let updatedValue = wrapPlainUrlsInAnchorTags(value);
// Step 2: Ensure that hrefs in anchor tags have https:// or http://
updatedValue = ensureHttpsInLinks(updatedValue);
// Assign the updated value back to the key
jsonObject[key] = updatedValue;
}
});
return jsonObject;
};