\n \n {MetaTitle}\n \n \n }\n footer={\n \n setChecked(e.target.checked)}>\n Accept Terms & Conditions\n \n \n
\n }\n >\n {loading ? (\n \n ) : (\n \n {Body}\n
\n )}\n \n );\n};\n\nTermsConditionModal.propTypes = {\n visible: PropTypes.bool.isRequired,\n};\n\nexport default TermsConditionModal;\n","import { useAuth0 } from '@auth0/auth0-react';\nimport Router from 'next/router';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport Error from '@/pages/_error';\nimport TermsConditionModal from '@/src/forum/components/TermsConditionModal';\nimport Layout from '@/src/shared/components/Layout';\nimport LoadingPage from '@/src/shared/components/LoadingPage/LoadingPage';\nimport { checkAccess, COMPLIANCE_ACCESS } from '@/src/shared/constants';\nimport request from '@/utils/axios';\n\nimport { setForumTermsDue } from '../../redux/forumReducer';\n\nconst withForumTermsWrap = ForumPageComponent => {\n return function ForumWrap(props) {\n const dispatch = useDispatch();\n const { isLoading, loginWithRedirect } = useAuth0();\n\n const { isLoggedIn, role } = useSelector(state => state.auth);\n const stateLoading = useSelector(state => state.auth.isLoading);\n const personId = useSelector(state => state.auth.userinfo.PersonID);\n const emailAddress = useSelector(state => state.auth.userinfo.emailaddress);\n const { termsDue } = useSelector(state => state.forum);\n\n const [termsData, setTermsData] = useState({});\n const [termsLoading, setTermsLoading] = useState(true);\n const [error, setError] = useState(false);\n\n const setTermsDue = payload => {\n dispatch(setForumTermsDue(payload));\n };\n\n const hasAccess = checkAccess(COMPLIANCE_ACCESS.MARKET_CONDUCT, role);\n const isAuthorized = personId && Array.isArray(role) && hasAccess;\n const errorCode = isLoggedIn && !hasAccess ? 401.4 : 401;\n\n if (!stateLoading && !isLoggedIn) {\n loginWithRedirect({\n appState: {\n returnTo: Router.pathname,\n },\n });\n }\n\n useEffect(() => {\n if (emailAddress) {\n (async () => {\n if (termsDue !== null) {\n setTermsLoading(false);\n return;\n }\n const { data } = await request({\n url: 'marketconduct/IsTermsAndConditionsDue',\n params: { emailAddress },\n });\n if (data.Success === 'true') {\n setTermsDue(data.termsDue);\n if (data.termsDue) {\n const {\n data: { Body, MetaTitle },\n } = await request({\n url: 'cms/contentpage',\n params: {\n corePageId: 607,\n },\n });\n setTermsData({ Body, MetaTitle });\n }\n } else {\n setError(true);\n }\n setTermsLoading(false);\n })();\n }\n }, [emailAddress, termsDue]);\n\n const handleAccept = async () => {\n const { data } = await request({\n url: 'marketconduct/AcceptedTerms',\n method: 'POST',\n params: { emailAddress },\n });\n if (data.Success === 'true') {\n setTermsDue(false);\n }\n };\n\n if (!stateLoading && isLoggedIn && !isAuthorized) return