From 1ed3ca51d8fc375039befad166f6b67b266a8b49 Mon Sep 17 00:00:00 2001 From: fahad-aot Date: Sat, 14 Dec 2024 22:16:56 -0800 Subject: [PATCH 1/3] bugfix/fwf-4022:Added tenantkey prefix editable in path --- .../src/components/Form/EditForm/FormEdit.js | 6 ++- .../components/Form/EditForm/FormSettings.js | 48 +++++++++++++++++-- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/forms-flow-web/src/components/Form/EditForm/FormEdit.js b/forms-flow-web/src/components/Form/EditForm/FormEdit.js index da5130c4e..facfb6c59 100644 --- a/forms-flow-web/src/components/Form/EditForm/FormEdit.js +++ b/forms-flow-web/src/components/Form/EditForm/FormEdit.js @@ -63,6 +63,7 @@ import { generateUniqueId, isFormComponentsChanged } from "../../../helper/helpe import { useMutation } from "react-query"; import NavigateBlocker from "../../CustomComponents/NavigateBlocker"; import { setProcessData, setFormPreviosData, setFormProcessesData } from "../../../actions/processActions.js"; +import { addTenantkey } from "../../../helper/helper"; // constant values const DUPLICATE = "DUPLICATE"; @@ -522,11 +523,14 @@ const EditComponent = () => { : [], }, }; + const updatepath = MULTITENANCY_ENABLED + ? addTenantkey(formDetails.path, tenantKey) + : formDetails.path; const formData = { title: formDetails.title, display: formDetails.display, - path: formDetails.path, + path: updatepath, submissionAccess: accessDetails.submissionAccess, access: accessDetails.formAccess, }; diff --git a/forms-flow-web/src/components/Form/EditForm/FormSettings.js b/forms-flow-web/src/components/Form/EditForm/FormSettings.js index 2c43025d9..de712ef70 100644 --- a/forms-flow-web/src/components/Form/EditForm/FormSettings.js +++ b/forms-flow-web/src/components/Form/EditForm/FormSettings.js @@ -15,6 +15,8 @@ import { } from "@formsflow/components"; import MultiSelectComponent from "../../CustomComponents/MultiSelect"; +import { MULTITENANCY_ENABLED } from "../../../constants/constants"; +import { addTenantkey } from "../../../helper/helper"; import { useDispatch, useSelector } from "react-redux"; import { getUserRoles } from "../../../apiManager/services/authorizationService"; import { useTranslation } from "react-i18next"; @@ -65,8 +67,10 @@ const FormSettings = forwardRef((props, ref) => { const [submissionAccessCopy, setSubmissionAccessCopy] = useState( _cloneDeep(submissionAccess) ); + const tenantKey = useSelector((state) => state.tenants?.tenantId); const publicUrlPath = `${window.location.origin}/public/form/`; + const [urlPath,setUrlPath] = useState(publicUrlPath); const setSelectedOption = (roles, option)=> roles.length ? "specifiedRoles" : option; /* ------------------------- authorization variables ------------------------ */ const [rolesState, setRolesState] = useState({ @@ -89,6 +93,41 @@ const FormSettings = forwardRef((props, ref) => { }); + /* --------Updating path if multitenant enabled-------------------------- */ + useEffect(()=>{ + if(MULTITENANCY_ENABLED){ + const updatedDisplayPath = removeTenantKeyFromPath(formDetails.path,tenantKey); + setFormDetails((prev) => { + return { + ...prev, + path: updatedDisplayPath + }; + }); + const updatedUrlPath = addTenantkeyAsSuffix(publicUrlPath,tenantKey); + setUrlPath(updatedUrlPath); + } + },[MULTITENANCY_ENABLED]); + + const addTenantkeyAsSuffix = (value, tenantkey) => { + if (value.toLowerCase().endsWith(`-${tenantkey}`)) { + return value.toLowerCase(); + } else { + return `${value.toLowerCase()}${tenantkey}-`; + } + }; + + const removeTenantKeyFromPath = (value, tenantkey) => { + const tenantKeyCheck = value.match(`${tenantkey}-`); + if ( + tenantKeyCheck && + tenantKeyCheck.length && + tenantKeyCheck[0].toLowerCase() === `${tenantkey.toLowerCase()}-` + ) { + return value.replace(`${tenantkey.toLowerCase()}-`, ""); + } else { + return value; + } + }; /* ------------------------- validating form name and path ------------------------ */ const validateField = async (field, value) => { @@ -132,7 +171,10 @@ const FormSettings = forwardRef((props, ref) => { }; const handleBlur = (field, value) => { - validateField(field, value); + const updatedValue = MULTITENANCY_ENABLED + ? addTenantkey(value, tenantKey) + : value; + validateField(field, updatedValue); }; @@ -184,7 +226,7 @@ const FormSettings = forwardRef((props, ref) => { const copyPublicUrl = async () => { try { - await copyText(`${publicUrlPath}${formDetails.path}`); + await copyText(`${urlPath}${formDetails.path}`); setCopied(true); setTimeout(() => { setCopied(false); @@ -387,7 +429,7 @@ const FormSettings = forwardRef((props, ref) => { {t("URL Path")} - {publicUrlPath} + {urlPath} Date: Sun, 15 Dec 2024 00:20:15 -0800 Subject: [PATCH 2/3] fixed sonar issues --- .../src/components/Form/EditForm/FormEdit.js | 3 +-- .../components/Form/EditForm/FormSettings.js | 17 ++++++----------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/forms-flow-web/src/components/Form/EditForm/FormEdit.js b/forms-flow-web/src/components/Form/EditForm/FormEdit.js index facfb6c59..1b50c7ed4 100644 --- a/forms-flow-web/src/components/Form/EditForm/FormEdit.js +++ b/forms-flow-web/src/components/Form/EditForm/FormEdit.js @@ -59,11 +59,10 @@ import NewVersionModal from "../../Modals/NewVersionModal"; import { currentFormReducer } from "../../../modules/formReducer.js"; import { toast } from "react-toastify"; import userRoles from "../../../constants/permissions.js"; -import { generateUniqueId, isFormComponentsChanged } from "../../../helper/helper.js"; +import { generateUniqueId, isFormComponentsChanged, addTenantkey } from "../../../helper/helper.js"; import { useMutation } from "react-query"; import NavigateBlocker from "../../CustomComponents/NavigateBlocker"; import { setProcessData, setFormPreviosData, setFormProcessesData } from "../../../actions/processActions.js"; -import { addTenantkey } from "../../../helper/helper"; // constant values const DUPLICATE = "DUPLICATE"; diff --git a/forms-flow-web/src/components/Form/EditForm/FormSettings.js b/forms-flow-web/src/components/Form/EditForm/FormSettings.js index de712ef70..ec52e5796 100644 --- a/forms-flow-web/src/components/Form/EditForm/FormSettings.js +++ b/forms-flow-web/src/components/Form/EditForm/FormSettings.js @@ -116,18 +116,13 @@ const FormSettings = forwardRef((props, ref) => { } }; - const removeTenantKeyFromPath = (value, tenantkey) => { - const tenantKeyCheck = value.match(`${tenantkey}-`); - if ( - tenantKeyCheck && - tenantKeyCheck.length && - tenantKeyCheck[0].toLowerCase() === `${tenantkey.toLowerCase()}-` - ) { - return value.replace(`${tenantkey.toLowerCase()}-`, ""); - } else { - return value; - } + const removeTenantKeyFromPath = (value, tenantKey) => { + const tenantKeyCheck = value.match(`${tenantKey}-`)?.[0]; + return tenantKeyCheck?.toLowerCase() === `${tenantKey.toLowerCase()}-` + ? value.replace(`${tenantKey.toLowerCase()}-`, "") + : value; }; + /* ------------------------- validating form name and path ------------------------ */ const validateField = async (field, value) => { From 6892ae66b5bd7b0a4f27a30188418851b50ec8c7 Mon Sep 17 00:00:00 2001 From: fahad-aot Date: Mon, 16 Dec 2024 00:57:39 -0800 Subject: [PATCH 3/3] Moved functions to helper --- .../components/Form/EditForm/FormSettings.js | 17 +---------------- forms-flow-web/src/helper/helper.js | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/forms-flow-web/src/components/Form/EditForm/FormSettings.js b/forms-flow-web/src/components/Form/EditForm/FormSettings.js index ec52e5796..ee0961b99 100644 --- a/forms-flow-web/src/components/Form/EditForm/FormSettings.js +++ b/forms-flow-web/src/components/Form/EditForm/FormSettings.js @@ -16,7 +16,7 @@ import { import MultiSelectComponent from "../../CustomComponents/MultiSelect"; import { MULTITENANCY_ENABLED } from "../../../constants/constants"; -import { addTenantkey } from "../../../helper/helper"; +import { addTenantkey, addTenantkeyAsSuffix,removeTenantKeyFromPath } from "../../../helper/helper"; import { useDispatch, useSelector } from "react-redux"; import { getUserRoles } from "../../../apiManager/services/authorizationService"; import { useTranslation } from "react-i18next"; @@ -108,21 +108,6 @@ const FormSettings = forwardRef((props, ref) => { } },[MULTITENANCY_ENABLED]); - const addTenantkeyAsSuffix = (value, tenantkey) => { - if (value.toLowerCase().endsWith(`-${tenantkey}`)) { - return value.toLowerCase(); - } else { - return `${value.toLowerCase()}${tenantkey}-`; - } - }; - - const removeTenantKeyFromPath = (value, tenantKey) => { - const tenantKeyCheck = value.match(`${tenantKey}-`)?.[0]; - return tenantKeyCheck?.toLowerCase() === `${tenantKey.toLowerCase()}-` - ? value.replace(`${tenantKey.toLowerCase()}-`, "") - : value; - }; - /* ------------------------- validating form name and path ------------------------ */ const validateField = async (field, value) => { diff --git a/forms-flow-web/src/helper/helper.js b/forms-flow-web/src/helper/helper.js index 88dae6402..17ea59160 100644 --- a/forms-flow-web/src/helper/helper.js +++ b/forms-flow-web/src/helper/helper.js @@ -105,5 +105,21 @@ const isFormComponentsChanged = ({restoredFormData, restoredFormId, formData, fo ); }; +// Adding tenantKey as suffix +const addTenantkeyAsSuffix = (value, tenantkey) => { + if (value.toLowerCase().endsWith(`-${tenantkey}`)) { + return value.toLowerCase(); + } else { + return `${value.toLowerCase()}${tenantkey}-`; + } +}; +//removing Tenantkey from path if there is tenantkey ekse return the value +const removeTenantKeyFromPath = (value, tenantKey) => { + const tenantKeyCheck = value.match(`${tenantKey}-`)?.[0]; + return tenantKeyCheck?.toLowerCase() === `${tenantKey.toLowerCase()}-` + ? value.replace(`${tenantKey.toLowerCase()}-`, "") + : value; +}; + export { generateUniqueId, replaceUrl, addTenantkey, removeTenantKey, textTruncate, renderPage, - filterSelectOptionByLabel, isFormComponentsChanged}; + filterSelectOptionByLabel, isFormComponentsChanged, removeTenantKeyFromPath,addTenantkeyAsSuffix};