ChandimaPrabath commited on
Commit
a41c870
·
1 Parent(s): 5a8937c
Files changed (2) hide show
  1. frontend/app/Auth.js +39 -7
  2. frontend/app/layout.js +1 -16
frontend/app/Auth.js CHANGED
@@ -13,14 +13,46 @@ const Auth = ({
13
  setError,
14
  isSignup,
15
  setIsSignup,
16
- connectAndAuthenticate
17
  }) => {
18
  const [usernameValid, setUsernameValid] = useState(false);
19
  const [passwordValid, setPasswordValid] = useState(false);
20
  const [passwordsMatch, setPasswordsMatch] = useState(false);
21
  const [showPassword, setShowPassword] = useState(false);
22
  const [showConfirmPassword, setShowConfirmPassword] = useState(false);
 
23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  const validateSignup = () => {
25
  if (!username || !password || !confirmPassword) {
26
  setError('Please fill in all fields');
@@ -30,7 +62,7 @@ const Auth = ({
30
  setError('Username must be at least 4 characters');
31
  return false;
32
  }
33
- if (password.length < 8) { // Password must be at least 8 characters long
34
  setError('Password must be at least 8 characters');
35
  return false;
36
  }
@@ -41,22 +73,22 @@ const Auth = ({
41
  return true;
42
  };
43
 
 
44
  const handleSignup = () => {
45
  if (!validateSignup()) return;
46
 
47
- setIsLoading(true);
48
- const signupData = JSON.stringify({ username, password, action: 'signup' }); // Ensure 'signup' action is passed
49
  connectAndAuthenticate(signupData);
50
  };
51
 
 
52
  const handleLogin = () => {
53
  if (!username || !password) {
54
  setError('Please enter both username and password');
55
  return;
56
  }
57
 
58
- setIsLoading(true);
59
- const loginData = JSON.stringify({ username, password, action: 'login' }); // Ensure 'login' action is passed
60
  connectAndAuthenticate(loginData);
61
  };
62
 
@@ -68,7 +100,7 @@ const Auth = ({
68
 
69
  const checkPassword = (value) => {
70
  setPassword(value);
71
- setPasswordValid(value.length >= 8); // Updated to check for minimum 8 characters
72
  };
73
 
74
  const checkPasswordsMatch = (value) => {
 
13
  setError,
14
  isSignup,
15
  setIsSignup,
 
16
  }) => {
17
  const [usernameValid, setUsernameValid] = useState(false);
18
  const [passwordValid, setPasswordValid] = useState(false);
19
  const [passwordsMatch, setPasswordsMatch] = useState(false);
20
  const [showPassword, setShowPassword] = useState(false);
21
  const [showConfirmPassword, setShowConfirmPassword] = useState(false);
22
+ const [ws, setWs] = useState(null); // WebSocket connection state
23
 
24
+ // Initialize WebSocket
25
+ const initializeWebSocket = () => {
26
+ const socket = new WebSocket('ws://your-websocket-server-url'); // Replace with actual WebSocket URL
27
+ socket.onopen = () => {
28
+ console.log('WebSocket connection established');
29
+ };
30
+ socket.onclose = () => {
31
+ console.log('WebSocket connection closed');
32
+ };
33
+ setWs(socket);
34
+ };
35
+
36
+ // Handle login and signup requests
37
+ const connectAndAuthenticate = (data) => {
38
+ setError('');
39
+ if (!username || !password) {
40
+ setError('Please enter both username and password');
41
+ return;
42
+ }
43
+
44
+ setIsLoading(true);
45
+
46
+ // Send authentication data over WebSocket if connection is open
47
+ if (ws && ws.readyState === WebSocket.OPEN) {
48
+ ws.send(data);
49
+ } else {
50
+ setError('WebSocket connection is not established');
51
+ setIsLoading(false);
52
+ }
53
+ };
54
+
55
+ // Validation for signup form
56
  const validateSignup = () => {
57
  if (!username || !password || !confirmPassword) {
58
  setError('Please fill in all fields');
 
62
  setError('Username must be at least 4 characters');
63
  return false;
64
  }
65
+ if (password.length < 8) {
66
  setError('Password must be at least 8 characters');
67
  return false;
68
  }
 
73
  return true;
74
  };
75
 
76
+ // Signup handler
77
  const handleSignup = () => {
78
  if (!validateSignup()) return;
79
 
80
+ const signupData = JSON.stringify({ username, password, action: 'signup' });
 
81
  connectAndAuthenticate(signupData);
82
  };
83
 
84
+ // Login handler
85
  const handleLogin = () => {
86
  if (!username || !password) {
87
  setError('Please enter both username and password');
88
  return;
89
  }
90
 
91
+ const loginData = JSON.stringify({ username, password, action: 'login' });
 
92
  connectAndAuthenticate(loginData);
93
  };
94
 
 
100
 
101
  const checkPassword = (value) => {
102
  setPassword(value);
103
+ setPasswordValid(value.length >= 8);
104
  };
105
 
106
  const checkPasswordsMatch = (value) => {
frontend/app/layout.js CHANGED
@@ -78,21 +78,6 @@ function WebSocketLayout({
78
  const { ws, status } = useWebSocket();
79
  const router = useRouter();
80
 
81
- const connectAndAuthenticate = () => {
82
- setError('');
83
- if (!username || !password) {
84
- setError('Please enter both username and password');
85
- return;
86
- }
87
-
88
- setIsLoading(true);
89
-
90
- const requestData = JSON.stringify({ username, password });
91
- if (ws && ws.readyState === WebSocket.OPEN) {
92
- ws.send(requestData);
93
- }
94
- };
95
-
96
  const handleUserSelect = (recipient) => {
97
  router.push(`/u/${recipient}`);
98
  };
@@ -144,7 +129,7 @@ function WebSocketLayout({
144
  setError={setError}
145
  isSignup={isSignup}
146
  setIsSignup={setIsSignup}
147
- connectAndAuthenticate={connectAndAuthenticate}
148
  />
149
  </div>
150
  )}
 
78
  const { ws, status } = useWebSocket();
79
  const router = useRouter();
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  const handleUserSelect = (recipient) => {
82
  router.push(`/u/${recipient}`);
83
  };
 
129
  setError={setError}
130
  isSignup={isSignup}
131
  setIsSignup={setIsSignup}
132
+
133
  />
134
  </div>
135
  )}