Changeset dc30259


Ignore:
Timestamp:
02/07/26 15:34:33 (5 months ago)
Author:
Filip Gavrilovski <filipgavrilovski28@…>
Branches:
main
Children:
8a47b30
Parents:
ebdd3d4
Message:

add loading spinner; don't show sidebar for unauthenticated users

Location:
frontend/src
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • frontend/src/App.tsx

    rebdd3d4 rdc30259  
    1 import { useState } from "react";
    2 import { createBrowserRouter, Outlet, RouterProvider } from "react-router-dom";
     1import { useEffect, useState } from "react";
     2import {
     3        createBrowserRouter,
     4        Outlet,
     5        RouterProvider,
     6        useLocation,
     7} from "react-router-dom";
    38import { ToastContainer } from "react-toastify";
    49import "react-toastify/dist/ReactToastify.css";
     10import LoadingSpinner from "./components/LoadingSpinner";
    511import Sidebar from "./components/Sidebar";
    612import { useAuth } from "./context/authContext";
     
    1521const MainLayout = () => {
    1622        const { user } = useAuth();
    17         const [isSidebarOpen, setIsSidebarOpen] = useState(!!user);
     23        const location = useLocation();
     24        // show sidebar only if user is logged in and is on the landing page
     25        const isLandingPage = location.pathname === "/";
     26        const [isSidebarOpen, setIsSidebarOpen] = useState(!!user && isLandingPage);
     27
     28        // Open sidebar when user logs in and navigates to landing page
     29        useEffect(() => {
     30                if (user && isLandingPage) {
     31                        setIsSidebarOpen(true);
     32                }
     33        }, [user, isLandingPage]);
    1834
    1935        return (
     
    5167
    5268        if (isAuthLoading) {
    53                 return (
    54                         <div className="flex h-screen items-center justify-center bg-[#121212]">
    55                                 <div className="w-12 h-12 border-4 border-white/10 border-t-[#1db954] rounded-full animate-spin"></div>
    56                         </div>
    57                 );
     69                return <LoadingSpinner />;
    5870        }
    5971
  • frontend/src/pages/AllUsers.tsx

    rebdd3d4 rdc30259  
    22import { useNavigate } from "react-router-dom";
    33import axiosInstance from "../api/axiosInstance";
     4import LoadingSpinner from "../components/LoadingSpinner";
    45
    56interface User {
     
    3940        };
    4041
    41         if (users.length == 0) return <div className="p-6">Loading...</div>;
     42        if (users.length == 0) {
     43                return <LoadingSpinner />;
     44        }
    4245        if (error) {
    4346                return (
  • frontend/src/pages/MusicalCollection.tsx

    rebdd3d4 rdc30259  
    22import { useNavigate, useParams } from "react-router-dom";
    33import axiosInstance from "../api/axiosInstance";
     4import LoadingSpinner from "../components/LoadingSpinner";
    45import type { Song, Album, Playlist } from "../utils/types";
    56import { handleError } from "../utils/error";
     
    7172
    7273  if (isLoading) {
    73     return <div className="p-6">Loading...</div>;
     74    return <LoadingSpinner />;
    7475  }
    7576
  • frontend/src/pages/Nav.tsx

    rebdd3d4 rdc30259  
    5252                >
    5353                        <div className="flex items-center gap-4">
    54                                 {onToggleSidebar && (
     54                                {onToggleSidebar && user && (
    5555                                        <button
    5656                                                onClick={onToggleSidebar}
  • frontend/src/pages/UserDetail.tsx

    rebdd3d4 rdc30259  
    22import { useNavigate, useParams } from "react-router-dom";
    33import axiosInstance from "../api/axiosInstance";
     4import LoadingSpinner from "../components/LoadingSpinner";
    45import ArtistView from "../components/userProfile/ArtistView";
    56import ListenerView from "../components/userProfile/ListenerView";
     
    174175        }
    175176
    176         if (!user) return <div className="p-6">Loading...</div>;
     177        if (!user) {
     178                return <LoadingSpinner />;
     179        }
    177180
    178181        return (
Note: See TracChangeset for help on using the changeset viewer.