fixed code v3
This commit is contained in:
47
src/App.js
47
src/App.js
@@ -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;
|
||||
Reference in New Issue
Block a user