Skip to content

Commit

Permalink
Add loading spinner in signup form; redirect if token expired
Browse files Browse the repository at this point in the history
  • Loading branch information
nina-dk committed Apr 9, 2024
1 parent adb8a15 commit 7718bf5
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 7 deletions.
2 changes: 1 addition & 1 deletion apps/frontend/src/components/LoginForm/LoginForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export default function LoginForm({
</Row>
</Container>
</Form.Group>
<div className="d-grid gap-2 buttonsDiv">
<div className="d-grid gap-2">
{isLoading && <SpinWheel className={styles.spinner}></SpinWheel>}
<CustomBtn variant="primary" type="submit" onClick={changeLoadState}>
Submit
Expand Down
5 changes: 5 additions & 0 deletions apps/frontend/src/components/SignUpForm/SignUpForm.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
color: #ff2a70;
}

.spinner {
margin: auto;
margin-bottom: 1rem;
}

@media screen and (max-width: 992px) {
.signUpForm {
min-width: 87%;
Expand Down
15 changes: 13 additions & 2 deletions apps/frontend/src/components/SignUpForm/SignUpForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,20 @@ import { Form, Col } from 'react-bootstrap';
import { Form as FormRouter, useNavigate } from 'react-router-dom';
import CustomBtn from '../CustomBtn/CustomBtn';
import styles from './SignUpForm.module.css';
import SpinWheel from '../SpinWheel/SpinWheel';

export default function SignUpForm({ className }: { className: string }) {
export default function SignUpForm({
className,
isLoading,
setIsLoading,
}: {
className: string;
isLoading: boolean;
setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;
}) {
const navigate = useNavigate();
const redirectToLogin = () => navigate('/login');
const changeLoadState = () => setIsLoading(true);

return (
<Col lg={6} className={className}>
Expand Down Expand Up @@ -43,7 +53,8 @@ export default function SignUpForm({ className }: { className: string }) {
</Form.Text>
</Form.Group>
<div className="d-grid gap-2">
<CustomBtn variant="primary" type="submit">
{isLoading && <SpinWheel className={styles.spinner}></SpinWheel>}
<CustomBtn variant="primary" type="submit" onClick={changeLoadState}>
Submit
</CustomBtn>
<CustomBtn variant="outline-dark" onClick={redirectToLogin}>
Expand Down
5 changes: 4 additions & 1 deletion apps/frontend/src/pages/SignUpPage/SignUpPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,14 @@ export async function action({ request }: { request: Request }) {

export default function SignUpPage() {
const [error, setError] = useState<ErrorObj | null>(null);
const [isLoading, setIsLoading] = useState(false);

const signUpRes = useActionData() as Response | ErrorObj;

useEffect(() => {
if (signUpRes && 'error' in signUpRes) {
setError(signUpRes);
setIsLoading(false);
}

setTimeout(() => {
Expand All @@ -45,7 +48,7 @@ export default function SignUpPage() {
<AlertBox className={styles.alertBox} text={error.error} variant="danger"></AlertBox>
)}
<WelcomeImgBox className={`${styles.customCol} ${styles.imgCol}`}></WelcomeImgBox>
<SignUpForm className={`${styles.customCol} ${styles.formWrapper}`}></SignUpForm>
<SignUpForm isLoading={isLoading} setIsLoading={setIsLoading} className={`${styles.customCol} ${styles.formWrapper}`}></SignUpForm>
</Row>
</Container>
);
Expand Down
4 changes: 1 addition & 3 deletions apps/frontend/src/utils/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,7 @@ export function checkAuthLoader() {
const decodedToken = jwtDecode(user.token);

const isTokenExpired = decodedToken.exp ? Date.now() >= decodedToken.exp * 1000 : null;
console.log(isTokenExpired);

// if (isTokenExpired) return redirect('/login');
if (isTokenExpired) return redirect('/login');

return null;
}
Expand Down

0 comments on commit 7718bf5

Please sign in to comment.