-
-
- {/* Show password button */}
-
+ <>
+
+
+ >
);
};
diff --git a/frontend/appflowy_tauri/src/appflowy_app/components/auth/SignUp/SignUp.hooks.ts b/frontend/appflowy_tauri/src/appflowy_app/components/auth/SignUp/SignUp.hooks.ts
index 8a89f469d0..3fcf26378b 100644
--- a/frontend/appflowy_tauri/src/appflowy_app/components/auth/SignUp/SignUp.hooks.ts
+++ b/frontend/appflowy_tauri/src/appflowy_app/components/auth/SignUp/SignUp.hooks.ts
@@ -2,13 +2,40 @@ import { useState } from 'react';
import { useAppDispatch, useAppSelector } from '../../../stores/store';
import { currentUserActions } from '../../../stores/reducers/current-user/slice';
import { useNavigate } from 'react-router-dom';
+import { useAuth } from '../auth.hooks';
export const useSignUp = () => {
+ const [email, _setEmail] = useState('');
+ const [displayName, _setDisplayName] = useState('');
+ const [password, _setPassword] = useState('');
+ const [repeatedPassword, _setRepeatedPassword] = useState('');
const [showPassword, setShowPassword] = useState(false);
const [showConfirmPassword, setShowConfirmPassword] = useState(false);
const appDispatch = useAppDispatch();
const currentUser = useAppSelector((state) => state.currentUser);
const navigate = useNavigate();
+ const { register } = useAuth();
+ const [authError, setAuthError] = useState(false);
+
+ const setEmail = (v: string) => {
+ setAuthError(false);
+ _setEmail(v);
+ };
+
+ const setDisplayName = (v: string) => {
+ setAuthError(false);
+ _setDisplayName(v);
+ };
+
+ const setPassword = (v: string) => {
+ setAuthError(false);
+ _setPassword(v);
+ };
+
+ const setRepeatedPassword = (v: string) => {
+ setAuthError(false);
+ _setRepeatedPassword(v);
+ };
function onTogglePassword() {
setShowPassword(!showPassword);
@@ -18,15 +45,39 @@ export const useSignUp = () => {
setShowConfirmPassword(!showConfirmPassword);
}
- function onSignUpClick() {
- appDispatch(
- currentUserActions.updateUser({
- ...currentUser,
- isAuthenticated: true,
- })
- );
- navigate('/');
+ async function onSignUpClick() {
+ try {
+ const result = await register(email, password, displayName);
+ const { id, token } = result;
+ appDispatch(
+ currentUserActions.updateUser({
+ id,
+ token,
+ email,
+ displayName,
+ isAuthenticated: true,
+ })
+ );
+ navigate('/');
+ } catch (e) {
+ setAuthError(true);
+ }
}
- return { showPassword, onTogglePassword, showConfirmPassword, onToggleConfirmPassword, onSignUpClick };
+ return {
+ email,
+ setEmail,
+ displayName,
+ setDisplayName,
+ password,
+ setPassword,
+ repeatedPassword,
+ setRepeatedPassword,
+ showPassword,
+ onTogglePassword,
+ showConfirmPassword,
+ onToggleConfirmPassword,
+ onSignUpClick,
+ authError,
+ };
};
diff --git a/frontend/appflowy_tauri/src/appflowy_app/components/auth/SignUp/SignUp.tsx b/frontend/appflowy_tauri/src/appflowy_app/components/auth/SignUp/SignUp.tsx
index 7bdd8f355d..6b6a24ae9f 100644
--- a/frontend/appflowy_tauri/src/appflowy_app/components/auth/SignUp/SignUp.tsx
+++ b/frontend/appflowy_tauri/src/appflowy_app/components/auth/SignUp/SignUp.tsx
@@ -5,25 +5,66 @@ import { EyeOpened } from '../../_shared/svg/EyeOpenSvg';
import { useSignUp } from './SignUp.hooks';
import { Link } from 'react-router-dom';
import { Button } from '../../_shared/Button';
+import { EarthSvg } from '../../_shared/svg/EarthSvg';
+import { LanguageSelectPopup } from '../../_shared/LanguageSelectPopup';
+import { useTranslation } from 'react-i18next';
+import { useState } from 'react';
export const SignUp = () => {
- const { showPassword, onTogglePassword, showConfirmPassword, onToggleConfirmPassword, onSignUpClick } = useSignUp();
+ const {
+ showPassword,
+ onTogglePassword,
+ showConfirmPassword,
+ onToggleConfirmPassword,
+ onSignUpClick,
+ email,
+ setEmail,
+ displayName,
+ setDisplayName,
+ password,
+ setPassword,
+ repeatedPassword,
+ setRepeatedPassword,
+ authError,
+ } = useSignUp();
+ const { t } = useTranslation('');
+ const [showLanguagePopup, setShowLanguagePopup] = useState(false);
return (