fix: wait for auth loading before redirecting in admin pages
Some checks are pending
Deploy Elmeg / deploy (push) Waiting to run

This commit is contained in:
fullsizemalt 2025-12-24 13:22:40 -08:00
parent 83d9e18497
commit 1199023a52
5 changed files with 17 additions and 10 deletions

View file

@ -29,7 +29,7 @@ interface Artist {
} }
export default function AdminArtistsPage() { export default function AdminArtistsPage() {
const { user, token } = useAuth() const { user, token, loading: authLoading } = useAuth()
const router = useRouter() const router = useRouter()
const [artists, setArtists] = useState<Artist[]>([]) const [artists, setArtists] = useState<Artist[]>([])
const [loading, setLoading] = useState(true) const [loading, setLoading] = useState(true)
@ -38,6 +38,7 @@ export default function AdminArtistsPage() {
const [saving, setSaving] = useState(false) const [saving, setSaving] = useState(false)
useEffect(() => { useEffect(() => {
if (authLoading) return
if (!user) { if (!user) {
router.push("/login") router.push("/login")
return return
@ -47,7 +48,7 @@ export default function AdminArtistsPage() {
return return
} }
fetchArtists() fetchArtists()
}, [user, router]) }, [user, router, authLoading])
const fetchArtists = async () => { const fetchArtists = async () => {
if (!token) return if (!token) return

View file

@ -50,7 +50,7 @@ interface UserItem {
} }
export default function AdminPage() { export default function AdminPage() {
const { user, token } = useAuth() const { user, token, loading: authLoading } = useAuth()
const router = useRouter() const router = useRouter()
const [stats, setStats] = useState<PlatformStats | null>(null) const [stats, setStats] = useState<PlatformStats | null>(null)
const [users, setUsers] = useState<UserItem[]>([]) const [users, setUsers] = useState<UserItem[]>([])
@ -59,6 +59,9 @@ export default function AdminPage() {
const [editingUser, setEditingUser] = useState<UserItem | null>(null) const [editingUser, setEditingUser] = useState<UserItem | null>(null)
useEffect(() => { useEffect(() => {
// Wait for auth to finish loading before checking
if (authLoading) return
if (!user) { if (!user) {
router.push("/login") router.push("/login")
return return
@ -68,7 +71,7 @@ export default function AdminPage() {
return return
} }
fetchData() fetchData()
}, [user, router]) }, [user, router, authLoading])
const fetchData = async () => { const fetchData = async () => {
if (!token) return if (!token) return

View file

@ -33,7 +33,7 @@ interface Show {
} }
export default function AdminShowsPage() { export default function AdminShowsPage() {
const { user, token } = useAuth() const { user, token, loading: authLoading } = useAuth()
const router = useRouter() const router = useRouter()
const [shows, setShows] = useState<Show[]>([]) const [shows, setShows] = useState<Show[]>([])
const [loading, setLoading] = useState(true) const [loading, setLoading] = useState(true)
@ -42,6 +42,7 @@ export default function AdminShowsPage() {
const [saving, setSaving] = useState(false) const [saving, setSaving] = useState(false)
useEffect(() => { useEffect(() => {
if (authLoading) return
if (!user) { if (!user) {
router.push("/login") router.push("/login")
return return
@ -51,7 +52,7 @@ export default function AdminShowsPage() {
return return
} }
fetchShows() fetchShows()
}, [user, router]) }, [user, router, authLoading])
const fetchShows = async () => { const fetchShows = async () => {
if (!token) return if (!token) return

View file

@ -31,7 +31,7 @@ interface Song {
} }
export default function AdminSongsPage() { export default function AdminSongsPage() {
const { user, token } = useAuth() const { user, token, loading: authLoading } = useAuth()
const router = useRouter() const router = useRouter()
const [songs, setSongs] = useState<Song[]>([]) const [songs, setSongs] = useState<Song[]>([])
const [loading, setLoading] = useState(true) const [loading, setLoading] = useState(true)
@ -40,6 +40,7 @@ export default function AdminSongsPage() {
const [saving, setSaving] = useState(false) const [saving, setSaving] = useState(false)
useEffect(() => { useEffect(() => {
if (authLoading) return
if (!user) { if (!user) {
router.push("/login") router.push("/login")
return return
@ -49,7 +50,7 @@ export default function AdminSongsPage() {
return return
} }
fetchSongs() fetchSongs()
}, [user, router]) }, [user, router, authLoading])
const fetchSongs = async () => { const fetchSongs = async () => {
if (!token) return if (!token) return

View file

@ -30,7 +30,7 @@ interface Venue {
} }
export default function AdminVenuesPage() { export default function AdminVenuesPage() {
const { user, token } = useAuth() const { user, token, loading: authLoading } = useAuth()
const router = useRouter() const router = useRouter()
const [venues, setVenues] = useState<Venue[]>([]) const [venues, setVenues] = useState<Venue[]>([])
const [loading, setLoading] = useState(true) const [loading, setLoading] = useState(true)
@ -39,6 +39,7 @@ export default function AdminVenuesPage() {
const [saving, setSaving] = useState(false) const [saving, setSaving] = useState(false)
useEffect(() => { useEffect(() => {
if (authLoading) return
if (!user) { if (!user) {
router.push("/login") router.push("/login")
return return
@ -48,7 +49,7 @@ export default function AdminVenuesPage() {
return return
} }
fetchVenues() fetchVenues()
}, [user, router]) }, [user, router, authLoading])
const fetchVenues = async () => { const fetchVenues = async () => {
if (!token) return if (!token) return