@@ -10,12 +10,8 @@ import Popover from "@material-ui/core/Popover";
1010import useViewer from "hooks/viewer/useViewer" ;
1111import ViewerInfo from "@reactioncommerce/components/ViewerInfo/v1" ;
1212import Link from "components/Link" ;
13- import Modal from "@material-ui/core/Modal" ;
14- import Login from "../Entry/Login" ;
15- import SignUp from "../Entry/SignUp" ;
16- import ChangePassword from "../Entry/ChangePassword" ;
17- import ForgotPassword from "../Entry/ForgotPassword" ;
18- import ResetPassword from "../Entry/ResetPassword" ;
13+ import useStores from "hooks/useStores" ;
14+ import EntryModal from "../Entry/EntryModal" ;
1915import getAccountsHandler from "../../lib/accountsServer.js" ;
2016
2117const useStyles = makeStyles ( ( theme ) => ( {
@@ -25,52 +21,30 @@ const useStyles = makeStyles((theme) => ({
2521 } ,
2622 marginBottom : {
2723 marginBottom : theme . spacing ( 2 )
28- } ,
29- paper : {
30- position : "absolute" ,
31- width : 380 ,
32- backgroundColor : theme . palette . background . paper ,
33- border : "2px solid #000" ,
34- boxShadow : theme . shadows [ 5 ] ,
35- padding : theme . spacing ( 2 , 4 , 3 ) ,
36- top : "50%" ,
37- left : "50%" ,
38- transform : "translate(-50%, -50%)" ,
39- display : "flex" ,
40- alignItems : "center" ,
41- justifyContent : "center"
4224 }
4325} ) ) ;
4426
4527const AccountDropdown = ( ) => {
4628 const router = useRouter ( ) ;
29+ const { uiStore } = useStores ( ) ;
30+ const { setEntryModal } = uiStore ;
4731 const resetToken = router ?. query ?. resetToken ;
4832 const classes = useStyles ( ) ;
49- const [ open , setOpen ] = React . useState ( false ) ;
5033 const [ anchorElement , setAnchorElement ] = useState ( null ) ;
51- const [ modalValue , setModalValue ] = useState ( "" ) ;
5234 const [ viewer , , refetch ] = useViewer ( ) ;
5335 const { accountsClient } = getAccountsHandler ( ) ;
5436 const isAuthenticated = viewer && viewer . _id ;
5537
56- const onClose = ( ) => {
57- setAnchorElement ( null ) ;
58- } ;
59-
6038 useEffect ( ( ) => {
61- if ( ! resetToken ) return ;
62- setOpen ( true ) ;
63- setModalValue ( "reset-password" ) ;
39+ // Open the modal in case of reset-password link
40+ if ( ! resetToken ) {
41+ return ;
42+ }
43+ setEntryModal ( "reset-password" ) ;
6444 } , [ resetToken ] ) ;
6545
66- const openModal = ( value ) => {
67- setModalValue ( value ) ;
68- setOpen ( true ) ;
69- onClose ( ) ;
70- } ;
71-
72- const closeModal = ( ) => {
73- setOpen ( false ) ;
46+ const onClose = ( ) => {
47+ setAnchorElement ( null ) ;
7448 } ;
7549
7650 const handleSignOut = async ( ) => {
@@ -83,25 +57,9 @@ const AccountDropdown = () => {
8357 setAnchorElement ( event . currentTarget ) ;
8458 } ;
8559
86- const getModalComponent = ( ) => {
87- let comp = Login ;
88- if ( modalValue === "signup" ) {
89- comp = SignUp ;
90- } else if ( modalValue === "change-password" ) {
91- comp = ChangePassword ;
92- } else if ( modalValue === "forgot-password" ) {
93- comp = ForgotPassword ;
94- } else if ( modalValue === "reset-password" ) {
95- comp = ResetPassword ;
96- }
97- return React . createElement ( comp , { closeModal, openModal, resetToken } ) ;
98- } ;
99-
10060 return (
10161 < Fragment >
102- < Modal open = { open } onClose = { closeModal } aria-labelledby = "entry-modal" aria-describedby = "entry-modal" >
103- < div className = { classes . paper } > { getModalComponent ( ) } </ div >
104- </ Modal >
62+ < EntryModal onClose = { onClose } resetToken = { resetToken } />
10563 { isAuthenticated ? (
10664 < ButtonBase onClick = { toggleOpen } >
10765 < ViewerInfo viewer = { viewer } />
@@ -132,7 +90,7 @@ const AccountDropdown = () => {
13290 </ Link >
13391 </ div >
13492 < div className = { classes . marginBottom } >
135- < Button color = "primary" fullWidth onClick = { ( ) => openModal ( "change-password" ) } >
93+ < Button color = "primary" fullWidth onClick = { ( ) => setEntryModal ( "change-password" ) } >
13694 Change Password
13795 </ Button >
13896 </ div >
@@ -143,11 +101,11 @@ const AccountDropdown = () => {
143101 ) : (
144102 < Fragment >
145103 < div className = { classes . authContent } >
146- < Button color = "primary" fullWidth variant = "contained" onClick = { ( ) => openModal ( "login" ) } >
104+ < Button color = "primary" fullWidth variant = "contained" onClick = { ( ) => setEntryModal ( "login" ) } >
147105 Sign In
148106 </ Button >
149107 </ div >
150- < Button color = "primary" fullWidth onClick = { ( ) => openModal ( "signup" ) } >
108+ < Button color = "primary" fullWidth onClick = { ( ) => setEntryModal ( "signup" ) } >
151109 Create Account
152110 </ Button >
153111 </ Fragment >
0 commit comments