Files
pedwfrontend/components/account/registerComplete.js
T
2024-02-08 14:28:40 +00:00

180 lines
5.8 KiB
JavaScript

import _ from "lodash";
import Link from "next/link";
import React, { useEffect, useState } from "react";
import { useRouter } from "next/router";
import useTranslation from "next-translate/useTranslation";
import { JSONPath as jsonpath } from "jsonpath-plus";
import {
Field,
reduxForm,
formValueSelector,
getFormSubmitErrors,
} from "redux-form";
import {
useDispatch,
useSelector,
shallowEqual,
connect,
setRegisterFormComplete,
setAccountCreatedComplete,
} from "react-redux";
import { setAccCr, setLogout } from "../../store/accountDetails/action";
import { useSession, signIn, signOut } from "next-auth/react";
import { parseCookies, setCookie, destroyCookie } from "nookies";
import { getEmailAccountCheck, createAccount } from "../../actions";
const RegisterComplete = (props) => {
const {
footerLinks,
pages,
handleSubmit,
value,
setRegisterFormComplete,
setAccountCreatedComplete,
setAccCr,
} = props;
let { t, lang } = useTranslation();
const router = useRouter();
const { locale } = router;
const [accountCreated, setAccountCreated] = useState(false);
useEffect(() => {
let accountBody = props.props.props.form.accountRegisterForm.values;
let emailAddress =
props.props.props.form.accountRegisterForm.values.emailaddress1;
Object.assign(accountBody, {
"pinswg_typeofinvolvement": 846040001,
});
accountBody = _.omit(accountBody, ["custom_password_check"]);
let checkEmailObj = {};
console.log("props.accountDetails.accCr :", props.accountDetails.accCr);
switch (props.accountDetails.accCr) {
case "created":
case "exists":
break;
default:
let emailExists = getEmailAccountCheck(
accountBody.emailaddress1
).then((data) => {
data["@odata.count"] > 0
? setAccCr("exists")
: (checkEmailObj = createAccount(accountBody).then(
(data) => {
//console.log(data);
setAccCr("created");
}
));
});
break;
}
});
var registerBody = "";
switch (props.accountDetails.accCr) {
case "created":
return (registerBody = (
<>
<p className="govuk-body">
{t("account:register-new-account-confirmation-email")}
</p>
<h2 className="govuk-heading-m">
{t(
"account:register-new-account-sub-heading-what-next"
)}
</h2>
<p className="govuk-body">
{t("account:register-new-account-paragraph-what-next")}
</p>
<p className="govuk-body">
<Link
href="/"
className="govuk-link"
// onClick={() => {
// console.info(
// "////////////\n" +
// "logout" +
// "\n////////////"
// );
// window.localStorage.clear(),
// destroyCookie(null, "next-auth.csrf-token"),
// destroyCookie(
// null,
// "next-auth.callback-url"
// ),
// destroyCookie(null, "pedw_locale"),
// destroyCookie(null, "pinsUser"),
// signOut({ callbackUrl: "/logout" });
// }}
>
{t("account:register-new-account-my-portal-link")}
</Link>
</p>
</>
));
break;
case "exists":
return (registerBody = (
<>
<h2 className="govuk-heading-m">
{t("account:register-new-account-account-failed")}
</h2>
<p className="govuk-body">
<a
onClick={() => {
setRegisterFormComplete(false),
setAccountCreatedComplete(false),
setAccCr(false);
}}
className="govuk-link"
>
Try registering again
</a>
</p>
</>
));
default:
return (registerBody = "");
break;
}
return registerBody;
};
const mapStateToProps = (state) => {
return {
search: state.search,
searchResultsObj: state.searchResultsObj,
formData: state.formData,
appealType: state.appealType,
accountDetails: state.accountDetails,
//form: state.form,
};
};
const mapDispatchToProps = (dispatch) => {
return {
setAccCr: (accountCreated) => {
dispatch(setAccCr(accountCreated));
},
setLogout: () => {
dispatch(setLogout());
},
};
};
export default connect(mapStateToProps, mapDispatchToProps)(RegisterComplete);