diff --git a/web/modals/account/user-settings-modal.react.js b/web/modals/account/user-settings-modal.react.js --- a/web/modals/account/user-settings-modal.react.js +++ b/web/modals/account/user-settings-modal.react.js @@ -29,6 +29,7 @@ import Button from '../../components/button.react'; import { useSelector } from '../../redux/redux-utils'; import Input from '../input.react'; +import { ModalContext } from '../modal-provider.react'; import Modal from '../modal.react'; import css from './user-settings-modal.css'; @@ -58,11 +59,7 @@ }; } -type BaseProps = { - +setModal: (modal: ?React.Node) => void, -}; type Props = { - ...BaseProps, +currentUserInfo: ?CurrentUserInfo, +preRequestUserState: PreRequestUserState, +inputDisabled: boolean, @@ -73,6 +70,8 @@ ) => Promise, +changeUserPassword: (passwordUpdate: PasswordUpdate) => Promise, +logOut: (preRequestUserState: PreRequestUserState) => Promise, + +setModal: (modal: ?React.Node) => void, + +clearModal: () => void, }; type State = { +newPassword: string, @@ -115,7 +114,7 @@ logOut = async () => { await this.props.logOut(this.props.preRequestUserState); - this.clearModal(); + this.props.clearModal(); }; render() { @@ -206,7 +205,7 @@ } return ( - +
    { - this.props.setModal(null); - }; } const deleteAccountLoadingStatusSelector = createLoadingStatusSelector( @@ -413,33 +408,35 @@ changeUserPasswordActionTypes, ); -const ConnectedUserSettingsModal: React.ComponentType = React.memo( - function ConnectedUserSettingsModal(props) { - const currentUserInfo = useSelector(state => state.currentUserInfo); - const preRequestUserState = useSelector(preRequestUserStateSelector); - const inputDisabled = useSelector( - state => - deleteAccountLoadingStatusSelector(state) === 'loading' || - changeUserPasswordLoadingStatusSelector(state) === 'loading', - ); - const callDeleteAccount = useServerCall(deleteAccount); - const callChangeUserPassword = useServerCall(changeUserPassword); - const dispatchActionPromise = useDispatchActionPromise(); - const boundLogOut = useServerCall(logOut); - - return ( - - ); - }, -); +function ConnectedUserSettingsModal(): React.Node { + const currentUserInfo = useSelector(state => state.currentUserInfo); + const preRequestUserState = useSelector(preRequestUserStateSelector); + const inputDisabled = useSelector( + state => + deleteAccountLoadingStatusSelector(state) === 'loading' || + changeUserPasswordLoadingStatusSelector(state) === 'loading', + ); + const callDeleteAccount = useServerCall(deleteAccount); + const callChangeUserPassword = useServerCall(changeUserPassword); + const dispatchActionPromise = useDispatchActionPromise(); + const boundLogOut = useServerCall(logOut); + + const modalContext = React.useContext(ModalContext); + invariant(modalContext, 'modalContext not set'); + + return ( + + ); +} export default ConnectedUserSettingsModal; diff --git a/web/sidebar/community-picker.react.js b/web/sidebar/community-picker.react.js --- a/web/sidebar/community-picker.react.js +++ b/web/sidebar/community-picker.react.js @@ -13,7 +13,7 @@ const { setModal } = props; const setModalToUserSettings = React.useCallback(() => { - setModal(); + setModal(); }, [setModal]); return (