Fix favourites

This commit is contained in:
2025-08-10 22:20:58 +00:00
parent 3b0f0dd4e1
commit 72689e10ad
2 changed files with 35 additions and 12 deletions

View File

@@ -4,8 +4,7 @@ import { useEffect, useState } from 'react';
import Link from 'next/link';
import Image from 'next/image';
import { useRouter } from 'next/navigation';
import { favoritesAPI } from '@/lib/favoritesApi';
import { getImageUrl } from '@/lib/neoApi';
import { neoApi, getImageUrl } from '@/lib/neoApi';
import { Loader2, HeartCrack } from 'lucide-react';
interface Favorite {
@@ -25,19 +24,22 @@ export default function FavoritesPage() {
const fetchFavorites = async () => {
const token = localStorage.getItem('token');
if (!token) {
router.push('/login');
router.replace('/login');
return;
}
try {
const response = await favoritesAPI.getFavorites();
const response = await neoApi.get('/api/v1/favorites');
setFavorites(response.data);
} catch (error) {
} catch (error: any) {
console.error('Failed to fetch favorites:', error);
localStorage.removeItem('token');
localStorage.removeItem('userName');
localStorage.removeItem('userEmail');
router.push('/login');
// Редиректим только при явном 401
if (error?.response?.status === 401) {
localStorage.removeItem('token');
localStorage.removeItem('userName');
localStorage.removeItem('userEmail');
router.replace('/login');
}
} finally {
setLoading(false);
}

View File

@@ -2,6 +2,27 @@
import { ThemeProvider } from 'styled-components';
import { theme } from '@/styles/theme';
export function Providers({ children }: { children: React.ReactNode }) {
return <ThemeProvider theme={theme}>{children}</ThemeProvider>;
import { useEffect } from 'react';
import { neoApi } from '@/lib/neoApi';
function TokenBootstrap() {
useEffect(() => {
try {
const token = localStorage.getItem('token');
if (token) {
neoApi.defaults.headers.common['Authorization'] = `Bearer ${token}`;
window.dispatchEvent(new Event('auth-changed'));
}
} catch {}
}, []);
return null;
}
export function Providers({ children }: { children: React.ReactNode }) {
return (
<>
<TokenBootstrap />
<ThemeProvider theme={theme}>{children}</ThemeProvider>
</>
);
}