import React, { useEffect, useState } from "react";
import { Container, Col, Row } from "react-bootstrap";
import { FcGoogle } from "react-icons/fc";
import axios from "axios";
import md5 from "md5";
import { ToastContainer, toast } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
function AuthPage() {
const [formData, setFormData] = useState({
username: "",
email: "",
password: "",
});
const [signin, setSignin] = useState(false);
const notifyError = (message) => {
toast.error(message);
};
function ToggleSign(event) {
event.preventDefault();
setSignin(!signin);
setFormData({
username: "",
email: "",
password: "",
});
}
function handleInputChange(event) {
const { name, value } = event.target;
setFormData((prevData) => ({
...prevData,
[name]: value,
}));
}
async function handleSubmit(event) {
event.preventDefault();
if (!formData.username.trim() && signin) {
notifyError("Username cannot be empty");
return;
}
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
if (!emailRegex.test(formData.email)) {
notifyError("Enter a valid email address");
return;
}
// Check password length
if (formData.password.length < 8) {
notifyError("Password must be at least 8 characters long");
return;
}
try {
const response = await axios.post(
`http://localhost:8080/api/${!signin ? "login" : "register"}`,
formData,
{ withCredentials: true }
);
if (response.status === 200) {
const { user } = response.data;
delete user.password;
const gravatarUrl = `https://www.gravatar.com/avatar/${md5(
user.email
)}?d=identicon`;
user.profilePicture = gravatarUrl;
localStorage.setItem("user", JSON.stringify(user));
window.location.href = "/Welcome";
}
} catch (error) {
console.error("Authentication error:", error);
notifyError(error.response?.data.message || "An error occurred");
}
}
const handleGoogleLogin = (event) => {
event.preventDefault();
window.location.href = "http://localhost:8080/auth/google";
};
return (
<>
Already Have an Account?
Don't have an account? Create one