diff --git a/src/app/favorites/page.tsx b/src/app/favorites/page.tsx
index 5e03ec0..713bbde 100644
--- a/src/app/favorites/page.tsx
+++ b/src/app/favorites/page.tsx
@@ -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);
}
@@ -117,4 +119,4 @@ export default function FavoritesPage() {
);
-}
+}
\ No newline at end of file
diff --git a/src/components/Providers.tsx b/src/components/Providers.tsx
index 45a2869..ec621e8 100644
--- a/src/components/Providers.tsx
+++ b/src/components/Providers.tsx
@@ -2,6 +2,27 @@
import { ThemeProvider } from 'styled-components';
import { theme } from '@/styles/theme';
-export function Providers({ children }: { children: React.ReactNode }) {
- return {children};
+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 (
+ <>
+
+ {children}
+ >
+ );
+}
\ No newline at end of file