@@ -14,9 +14,11 @@ import { setError, setLoading, setPageIndex } from '../../reducers/MainReducer/A
1414import { MainContext } from '../../contexts/MainContextProvider' ;
1515import { PasswordContext } from '../../contexts/PasswordContextProvider' ;
1616import {
17- generatePasswordArray , getFullCharacterSet ,
17+ generatePasswordArray ,
18+ getFullCharacterSet ,
1819 setAllowDuplicates ,
19- setCharacterSet , setPasswords ,
20+ setCharacterSet ,
21+ setPasswords ,
2022 setUseAdvanced ,
2123} from '../../reducers/PasswordReducer/Actions' ;
2224import LoadingBar from '../../components/LoadingBar' ;
@@ -38,22 +40,25 @@ const Advanced = () => {
3840 const navigate = useNavigate ( ) ;
3941 const worker = useWorker ( createWorker ) ;
4042
43+ const simpleCharacterSet = getFullCharacterSet (
44+ characterSet ,
45+ useAdvanced ,
46+ smallLetters ,
47+ capitalLetters ,
48+ spaces ,
49+ numbers ,
50+ specialCharacters ,
51+ brackets ,
52+ ) ;
53+
54+ const cannotGenerate = ! simpleCharacterSet || simpleCharacterSet . length === 0
55+ || min > max || max < min ;
56+
4157 /**
4258 * Generate passwords
4359 */
4460 const generatePasswords = ( ) => {
45- const simpleCharacterSet = getFullCharacterSet (
46- characterSet ,
47- useAdvanced ,
48- smallLetters ,
49- capitalLetters ,
50- spaces ,
51- numbers ,
52- specialCharacters ,
53- brackets ,
54- ) ;
55-
56- if ( ! simpleCharacterSet || simpleCharacterSet . length === 0 || min > max || max < min ) {
61+ if ( cannotGenerate ) {
5762 return ;
5863 }
5964
@@ -71,6 +76,37 @@ const Advanced = () => {
7176 } ) ;
7277 } ;
7378
79+ /**
80+ * Change whether duplicates are allowed or not
81+ * @param event The event argument
82+ */
83+ const handleDuplicateChange = ( event ) => {
84+ d2 ( setAllowDuplicates ( event . target . checked ) ) ;
85+ } ;
86+
87+ /**
88+ * Change wether advanced options are being used or not
89+ * @param event The event argument
90+ */
91+ const handleAdvancedChange = ( event ) => {
92+ d2 ( setUseAdvanced ( event . target . checked ) ) ;
93+ } ;
94+
95+ /**
96+ * Change the character set
97+ * @param event The event argument
98+ */
99+ const handleCharacterSetChange = ( event ) => {
100+ d2 ( setCharacterSet ( event . target . value ) ) ;
101+ } ;
102+
103+ /**
104+ * Go to the home page
105+ */
106+ const goHome = ( ) => {
107+ navigate ( '/' ) ;
108+ } ;
109+
74110 useEffect ( ( ) => {
75111 d1 ( setPageIndex ( 1 ) ) ;
76112 } , [ ] ) ;
@@ -92,7 +128,7 @@ const Advanced = () => {
92128 control = { (
93129 < Checkbox
94130 checked = { allowDuplicates }
95- onChange = { ( e ) => d2 ( setAllowDuplicates ( e . target . checked ) ) }
131+ onChange = { handleDuplicateChange }
96132 />
97133 ) }
98134 label = { language . allowDuplicates }
@@ -101,7 +137,7 @@ const Advanced = () => {
101137 control = { (
102138 < Checkbox
103139 checked = { useAdvanced }
104- onChange = { ( e ) => d2 ( setUseAdvanced ( e . target . checked ) ) }
140+ onChange = { handleAdvancedChange }
105141 />
106142 ) }
107143 label = { language . useCustomCharacterSet }
@@ -114,7 +150,7 @@ const Advanced = () => {
114150 disabled = { ! useAdvanced }
115151 value = { characterSet }
116152 fullWidth
117- onChange = { ( e ) => d2 ( setCharacterSet ( e . target . value ) ) }
153+ onChange = { handleCharacterSetChange }
118154 />
119155 </ Grid >
120156 </ Grid >
@@ -125,7 +161,7 @@ const Advanced = () => {
125161 color = "primary"
126162 style = { { float : 'left' } }
127163 sx = { { mt : 2 } }
128- onClick = { ( ) => navigate ( '/' ) }
164+ onClick = { goHome }
129165 >
130166 { language . general }
131167 </ Button >
@@ -134,6 +170,7 @@ const Advanced = () => {
134170 color = "primary"
135171 style = { { float : 'right' } }
136172 sx = { { mt : 2 } }
173+ disabled = { cannotGenerate }
137174 onClick = { generatePasswords }
138175 >
139176 { language . generate }
0 commit comments