import React, { useState } from "react";
import { useNavigate } from "react-router-dom";
import { Form, Button, Alert } from "react-bootstrap";
import "./login.css";
import BackgroundImage from "../../images/login_background.png";
import Logo from "../../images/JourneyPoint.png";
import Navbar from "../Navbar"
import Footer from "../footer"
const Login = () => {
const [inputUsername, setInputUsername] = useState("");
const [inputPassword, setInputPassword] = useState("");
const [show, setShow] = useState(false);
const [loading, setLoading] = useState(false);
const navigate = useNavigate();
const handleSubmit = async (event) => {
event.preventDefault();
setLoading(true);
setShow(false); // Hide previous error message
try {
const response = await fetch("https://jp-backend-kc80.onrender.com/auth/login", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
username: inputUsername,
password: inputPassword,
}),
});
const data = await response.json(); // Parse response JSON
if (response.ok) {
console.log("Login successful:", data);
// Store token if authentication is successful
localStorage.setItem("token", data.token); // Adjust based on API response
localStorage.setItem("username", inputUsername);
localStorage.setItem("login", "true"); // Store login status
// Redirect user or update UI
navigate("/")
} else {
console.error("Login failed:", data);
setShow(true); // Show error message
}
} catch (error) {
console.error("Network error:", error);
setShow(true); // Show error message
} finally {
setLoading(false);
}
};
const handlePassword = () => { };
function delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
return (
<div>
<Navbar />
<div
className="sign-in__wrapper"
style={{ backgroundImage: `url(${BackgroundImage})` }}
>
{/* Overlay */}
<div className="sign-in__backdrop"></div>
{/* Form */}
<Form className="shadow p-4 bg-white rounded" onSubmit={handleSubmit}>
{/* Header */}
<img
className="img-thumbnail mx-auto d-block mb-2"
src={Logo}
alt="logo"
/>
<div className="h4 mb-2 text-center">Sign In</div>
{/* ALert */}
{show ? (
<Alert
className="mb-2"
variant="danger"
onClose={() => setShow(false)}
dismissible
>
Incorrect username or password.
</Alert>
) : (
<div />
)}
<Form.Group className="mb-2" controlId="username">
<Form.Label>Username</Form.Label>
<Form.Control
type="text"
value={inputUsername}
placeholder="Username"
onChange={(e) => setInputUsername(e.target.value)}
required
/>
</Form.Group>
<Form.Group className="mb-2" controlId="password">
<Form.Label>Password</Form.Label>
<Form.Control
type="password"
value={inputPassword}
placeholder="Password"
onChange={(e) => setInputPassword(e.target.value)}
required
/>
</Form.Group>
{!loading ? (
<Button className="w-100" variant="primary" type="submit">
Log In
</Button>
) : (
<Button className="w-100" variant="primary" type="submit" disabled>
Logging In...
</Button>
)}
</Form>
</div>
{/* <Footer /> */}
</div>
);
};
export default Login;