import React from 'react' import { useSelector, useDispatch } from 'react-redux' import { setStyle } from '../redux/reducers/styleSlice'; import axios from 'axios'; const RegisterScreen = () => { const dispatch = useDispatch(); const styleState = useSelector(state => state.style); function onChangeUsername(e) { dispatch(setStyle({ ...styleState.style, registerScreenInfo: { ...styleState.style.registerScreenInfo, username: e.target.value, } })) } function onChangeDisplayName(e) { dispatch(setStyle({ ...styleState.style, registerScreenInfo: { ...styleState.style.registerScreenInfo, displayName: e.target.value, } })) } function onChangePassword(e) { dispatch(setStyle({ ...styleState.style, registerScreenInfo: { ...styleState.style.registerScreenInfo, password: e.target.value, } })) } function closeForm() { dispatch(setStyle({ ...styleState.style, displayRegisterScreen: false, registerScreenInfo: { username: '', displayName: '', password: '', }, inlineAlertText: '', })); } function register() { dispatch(setStyle({ ...styleState.style, displayLoadingScreen: true, })) axios.post('/api/postgre', { action: 'register', username: styleState.style.registerScreenInfo.username, displayName: styleState.style.registerScreenInfo.displayName, password: styleState.style.registerScreenInfo.password, }) .then(res => { if (res.data?.success) { dispatch(setStyle({ ...styleState.style, displayRegisterScreen: false, })); dispatch(setStyle({ ...styleState.style, displayLoadingScreen: false, displayRegisterScreen: false, displayLoginScreen: true, registerScreenInfo: { username: '', displayName: '', password: '', }, notification: { show: true, text: 'Successfully registered! Please Log In now.', status: 'success', }, })); } else { dispatch(setStyle({ ...styleState.style, displayRegisterScreen: true, inlineAlertText: res.data?.message, })); } }) } return (
{styleState.style.inlineAlertText.length > 0 && {styleState.style.inlineAlertText}}
Username: {onChangeUsername(e)}} value={styleState.style.registerScreenInfo.username}/> Display Name: {onChangeDisplayName(e)}} value={styleState.style.registerScreenInfo.displayName}/> Password: {onChangePassword(e)}} value={styleState.style.registerScreenInfo.password}/>
) } export default RegisterScreen