From 557e8ddfc9d4276ed449c5f6afddf487d0b3aab0 Mon Sep 17 00:00:00 2001 From: Vishesh 'ironeagle' Bangotra Date: Tue, 11 Nov 2025 18:56:48 +0530 Subject: [PATCH] working login and register page --- src/blog/Blog.tsx | 33 ++++++++++++++++++++++++++------- src/blog/components/Login.tsx | 32 +++++++++++++++++++++++++------- 2 files changed, 51 insertions(+), 14 deletions(-) diff --git a/src/blog/Blog.tsx b/src/blog/Blog.tsx index d3b3e9c..a98268a 100644 --- a/src/blog/Blog.tsx +++ b/src/blog/Blog.tsx @@ -9,6 +9,7 @@ import Article from './components/Article'; import Latest from './components/Latest'; import Footer from './components/Footer'; import Login from './components/Login'; +import Register from './components/Register'; import { useArticles } from './providers/Article'; import { useAuth } from './providers/Author'; @@ -18,6 +19,7 @@ export default function Blog(props: { disableCustomTheme?: boolean }) { const [selectedArticle, setSelectedArticle] = React.useState(null); const [showLogin, setShowLogin] = React.useState(false); + const [showRegister, setShowRegister] = React.useState(false); const handleSelectArticle = (index: number) => { setSelectedArticle(index); @@ -87,16 +89,35 @@ export default function Blog(props: { disableCustomTheme?: boolean }) { flexDirection: 'column', my: 4, gap: 4, - pb: selectedArticle === null && !showLogin ? 24 : 0, + pb: selectedArticle === null && !showLogin && !showRegister ? 24 : 0, // ✅ adjusted footer padding }} > - {showLogin ? ( - - ) : selectedArticle === null ? ( + {showRegister ? ( + { + setShowRegister(false); + setShowLogin(false); + }} + /> + ) : showLogin ? ( + setShowLogin(false)} + onRegister={() => { + setShowLogin(false); + setShowRegister(true); + }} + /> + ) : selectedArticle !== null ? ( +
+ ) : ( <> {!currentUser && ( - @@ -109,8 +130,6 @@ export default function Blog(props: { disableCustomTheme?: boolean }) { onLoadMore={async () => {}} /> - ) : ( -
)} diff --git a/src/blog/components/Login.tsx b/src/blog/components/Login.tsx index a601752..3c04765 100644 --- a/src/blog/components/Login.tsx +++ b/src/blog/components/Login.tsx @@ -1,13 +1,14 @@ import * as React from 'react'; -import { Box, TextField, Button, Typography, IconButton, CircularProgress } from '@mui/material'; +import { Box, TextField, Button, Typography, IconButton, CircularProgress, Link } from '@mui/material'; import ArrowBackRoundedIcon from '@mui/icons-material/ArrowBackRounded'; import { useAuth } from '../providers/Author'; interface LoginProps { onBack: () => void; + onRegister: () => void; } -export default function Login({ onBack }: LoginProps) { +export default function Login({ onBack, onRegister }: LoginProps) { const { login, loading, error, currentUser } = useAuth(); const [username, setUsername] = React.useState(''); const [password, setPassword] = React.useState(''); @@ -17,11 +18,10 @@ export default function Login({ onBack }: LoginProps) { await login(username, password); }; - if (currentUser) { - // ✅ if logged in, auto-return to the article list - onBack(); - return null; - } + // ✅ Auto-return if already logged in + React.useEffect(() => { + if (currentUser) onBack(); + }, [currentUser]); return ( : 'Login'} + + + Don’t have an account?{' '} + + Register + + ); }