Skip to content

Commit ccf250e

Browse files
committed
update hook for preserving form values on language change
1 parent be3d961 commit ccf250e

File tree

4 files changed

+26
-23
lines changed

4 files changed

+26
-23
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { useEffect } from 'react';
2+
3+
// Usage: useSyncFormTranslations(formRef, language)
4+
// This hook ensures that form values are preserved when the language changes.
5+
// Pass a ref to the form instance and the current language as arguments.
6+
const useSyncFormTranslations = (formRef, language) => {
7+
useEffect(() => {
8+
const form = formRef.current;
9+
if (!form) return;
10+
11+
const { values } = form.getState();
12+
form.reset();
13+
14+
Object.keys(values).forEach((field) => {
15+
if (values[field]) {
16+
form.change(field, values[field]);
17+
}
18+
});
19+
}, [language]);
20+
};
21+
22+
export default useSyncFormTranslations;

client/modules/IDE/hooks/custom-hooks.js

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -68,22 +68,3 @@ export const useEventListener = (
6868
document.addEventListener(event, callback, useCapture);
6969
return () => document.removeEventListener(event, callback, useCapture);
7070
}, list);
71-
72-
// Usage: usePreserveFormValuesOnLanguageChange(formRef, language)
73-
// This hook ensures that form values are preserved when the language changes.
74-
// Pass a ref to the form instance and the current language as arguments.
75-
export const usePreserveFormValuesOnLanguageChange = (formRef, language) => {
76-
useEffect(() => {
77-
const form = formRef.current;
78-
if (!form) return;
79-
80-
const { values } = form.getState();
81-
form.reset();
82-
83-
Object.keys(values).forEach((field) => {
84-
if (values[field]) {
85-
form.change(field, values[field]);
86-
}
87-
});
88-
}, [language]);
89-
};

client/modules/User/components/LoginForm.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { AiOutlineEye, AiOutlineEyeInvisible } from 'react-icons/ai';
66
import Button from '../../../common/Button';
77
import { validateLogin } from '../../../utils/reduxFormUtils';
88
import { validateAndLoginUser } from '../actions';
9-
import { usePreserveFormValuesOnLanguageChange } from '../../IDE/hooks/custom-hooks';
9+
import { useSyncFormTranslations } from '../../../common/useSyncFormTranslations';
1010

1111
function LoginForm() {
1212
const { t, i18n } = useTranslation();
@@ -22,7 +22,7 @@ function LoginForm() {
2222
setShowPassword(!showPassword);
2323
};
2424

25-
usePreserveFormValuesOnLanguageChange(formRef, i18n.language);
25+
useSyncFormTranslations(formRef, i18n.language);
2626

2727
return (
2828
<Form

client/modules/User/components/SignupForm.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { validateSignup } from '../../../utils/reduxFormUtils';
77
import { validateAndSignUpUser } from '../actions';
88
import Button from '../../../common/Button';
99
import apiClient from '../../../utils/apiClient';
10-
import { usePreserveFormValuesOnLanguageChange } from '../../IDE/hooks/custom-hooks';
10+
import { useSyncFormTranslations } from '../../../common/useSyncFormTranslations';
1111

1212
function asyncValidate(fieldToValidate, value) {
1313
if (!value || value.trim().length === 0) {
@@ -50,7 +50,7 @@ function SignupForm() {
5050
const handleConfirmVisibility = () => {
5151
setShowConfirmPassword(!showConfirmPassword);
5252
};
53-
usePreserveFormValuesOnLanguageChange(formRef, i18n.language);
53+
useSyncFormTranslations(formRef, i18n.language);
5454

5555
return (
5656
<Form

0 commit comments

Comments
 (0)