Skip to content

Commit 52b0598

Browse files
committed
Improved home page and login
1 parent 9c86e0d commit 52b0598

8 files changed

Lines changed: 57 additions & 19 deletions

File tree

src/components/LoginPopup.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, { useEffect } from 'react';
2+
import { useNavigate } from 'react-router-dom';
23
import { useAuth } from '../contexts/AuthContext';
34
import '../css/login.css';
45

@@ -9,12 +10,14 @@ type Props = {
910

1011
export default function LoginPopup({ isOpen, onClose }: Props) {
1112
const { login, user } = useAuth();
13+
const navigate = useNavigate();
1214

1315
useEffect(() => {
1416
if (user && isOpen) {
1517
onClose();
18+
navigate('/');
1619
}
17-
}, [user, isOpen, onClose]);
20+
}, [user, isOpen, onClose, navigate]);
1821

1922
if (!isOpen) return null;
2023

src/contexts/AuthContext.tsx

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,25 +35,30 @@ export const AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {
3535
headers: {
3636
Accept: 'application/json',
3737
},
38+
credentials: "include"
3839
});
3940

4041
if (response.ok) {
4142
const data: User = await response.json();
4243
setUser(data);
43-
} else {
44+
}
45+
else {
4446
setUser(null);
4547
}
46-
} catch (err: unknown) {
48+
}
49+
catch (err: unknown) {
4750
if (err instanceof Error) {
4851
console.error('Failed to fetch user:', err);
4952
setError(err.message);
50-
} else {
53+
}
54+
else {
5155
console.error('Unknown error:', err);
5256
setError('Unknown error');
5357
}
5458

5559
setUser(null);
56-
} finally {
60+
}
61+
finally {
5762
setLoading(false);
5863
}
5964
};
@@ -79,7 +84,8 @@ export const AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {
7984
setUser(data);
8085
clearInterval(pollInterval);
8186
}
82-
} catch (err: unknown) {
87+
}
88+
catch (err: unknown) {
8389
if (err instanceof Error) {
8490
console.error('Polling failed:', err.message);
8591
}
@@ -99,7 +105,8 @@ export const AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {
99105
setUser(null);
100106

101107
window.location.href = '/app/';
102-
} catch (err: unknown) {
108+
}
109+
catch (err: unknown) {
103110
if (err instanceof Error) {
104111
console.error('Logout failed:', err.message);
105112
}

src/css/app-layout.css

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
.app-content {
1010
padding: 3rem;
11-
width: 100%;
1211
position: relative;
1312
overflow: hidden;
1413
transition:

src/css/carousel.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
}
1212

1313
.carousel {
14-
width: 100%;
14+
width: 72rem;
1515
background: var(--carousel-bg);
1616
height: 18rem;
1717
border-radius: 2rem;

src/css/home.css

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
.home-grid {
2+
display: grid;
3+
width: 50rem;
4+
grid-template-columns: 24rem 24rem;
5+
gap: 2rem;
6+
}
7+
8+
.home-grid-panel {
9+
height: 20rem;
10+
background: #e8e8e8;
11+
border-radius: 3rem;
12+
padding: 2rem;
13+
}

src/css/login.css

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
.register-btn {
2+
color: var(--standard-bw-text);
3+
cursor: pointer;
4+
padding: 0.5rem;
5+
border-radius: 1rem;
6+
border: 1px solid black;
7+
}
8+
19
.popup-overlay {
210
position: fixed;
311
inset: 0;
@@ -38,10 +46,6 @@
3846
font-size: 14px;
3947
}
4048

41-
.popup-button:hover {
42-
background-color: #f0f0f0;
43-
}
44-
4549
.popup-close-x {
4650
position: absolute;
4751
top: 8px;

src/pages/Home.tsx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,29 @@
11
import { useState } from 'react';
22
import LoginPopup from '../components/LoginPopup.tsx';
33
import '../css/login.css';
4+
import '../css/home.css';
5+
import { useAuth } from '../contexts/AuthContext';
46

57
export default function Home() {
68
const [showLogin, setShowLogin] = useState(false);
9+
const { user } = useAuth();
710
return (
811
<>
9-
<div>
10-
<h1>Home</h1>
11-
<a onClick={() => setShowLogin(true)}>Register</a>
12-
<LoginPopup isOpen={showLogin} onClose={() => setShowLogin(false)} />
12+
<div className="home-grid">
13+
<div className="home-grid-panel">
14+
<a className="register-btn" onClick={() => setShowLogin(true)}>Register</a>
15+
<LoginPopup isOpen={showLogin} onClose={() => setShowLogin(false)} />
16+
<p style={{color:"black"}}>UserId: <span style={{ color: user?.id ? "green" : "red" }}>{user?.id ?? "Not logged in"}</span></p>
17+
</div>
18+
<div className="home-grid-panel">
19+
20+
</div>
21+
<div className="home-grid-panel">
22+
23+
</div>
24+
<div className="home-grid-panel">
25+
26+
</div>
1327
</div>
1428
</>
1529
);

src/pages/Testing.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import { useState } from 'react';
21
import DarkModeToggle from '../components/DarkModeToggle.tsx';
3-
import LoginPopup from '../components/LoginPopup.tsx';
42

53
export default function Testing() {
64
return (

0 commit comments

Comments
 (0)