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,3 +1,4 @@
// src/context/UnreadContext.jsx
import { createContext, useContext, useState, useCallback, useMemo } from 'react';
const UnreadContext = createContext(null);
@@ -46,13 +47,24 @@ export function UnreadProvider({ children }) {
});
}, []);
/**
* Полностью сбрасывает unreadMap — вызывается при смене пользователя
* (логин/логаут), чтобы счётчики предыдущей сессии не "протекали"
* в новую. UnreadProvider не вложен внутрь AuthProvider, поэтому
* реагировать на logout() напрямую не может — это делает компонент
* ниже по дереву, имеющий доступ к обоим контекстам (см. UnreadListener в App.jsx).
*/
const resetUnread = useCallback(() => {
setUnreadMap({});
}, []);
const totalUnread = useMemo(() =>
Object.values(unreadMap).reduce((sum, c) => sum + c, 0),
[unreadMap]
);
return (
<UnreadContext.Provider value={{ unreadMap, totalUnread, setChatUnread, clearChatUnread, updateFromChats }}>
<UnreadContext.Provider value={{ unreadMap, totalUnread, setChatUnread, clearChatUnread, updateFromChats, resetUnread }}>
{children}
</UnreadContext.Provider>
);