fixed code v3

This commit is contained in:
SlimusMinus
2026-08-12 23:28:35 +03:00
parent 2ed8f440dd
commit 2b9cb62c72
5 changed files with 79 additions and 28 deletions

View File

@@ -1,7 +1,10 @@
// src/App.jsx
import { useEffect, useRef } from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import { AuthProvider } from './context/AuthContext';
import { ThemeProvider } from './context/ThemeContext';
import { useAuthContext } from './context/AuthContext';
import { useUnread } from './context/UnreadContext';
import { useUnreadSocket } from './hooks/useUnreadSocket';
import LandingPage from './pages/NakhodkaLanding';
import MainFeed from './pages/MainFeed';
@@ -12,6 +15,19 @@ import './styles/chat.css';
function UnreadListener() {
const { user } = useAuthContext();
const { resetUnread } = useUnread();
const prevUserIdRef = useRef(user?.id);
// Сбрасываем накопленный unreadMap при смене пользователя (логин под другим
// аккаунтом или логаут → user становится null) — иначе счётчики непрочитанных
// от предыдущей сессии останутся висеть в бейдже до первого WS-обновления.
useEffect(() => {
if (prevUserIdRef.current !== user?.id) {
resetUnread();
prevUserIdRef.current = user?.id;
}
}, [user?.id, resetUnread]);
useUnreadSocket(user?.id);
return null;
}
@@ -19,20 +35,21 @@ function UnreadListener() {
function App() {
return (
<ThemeProvider>
<AuthProvider>
<UnreadListener />
<BrowserRouter>
<Routes>
<Route path="/" element={<LandingPage />} />
<Route path="/feed" element={<MainFeed />} />
<Route path="/reviews" element={<ReviewsPage />} />
<Route path="/chats" element={<ChatListPage />} />
<Route path="/chats/:chatId" element={<ChatPage />} />
</Routes>
</BrowserRouter>
<AuthProvider>
<UnreadListener />
<BrowserRouter>
<Routes>
<Route path="/" element={<LandingPage />} />
<Route path="/feed" element={<MainFeed />} />
<Route path="/reviews" element={<ReviewsPage />} />
<Route path="/chats" element={<ChatListPage />} />
<Route path="/chats/:chatId" element={<ChatPage />} />
<Route path="*" element={<LandingPage />} />
</Routes>
</BrowserRouter>
</AuthProvider>
</ThemeProvider>
);
}
export default App;
);
}
export default App;