알림 전체닫기 오류 수정
This commit is contained in:
@@ -233,6 +233,17 @@ export const TradeNotificationProvider: React.FC<ProviderProps> = ({
|
||||
|
||||
useEffect(() => {
|
||||
if (!settingsLoaded) return;
|
||||
/**
|
||||
* 앱 설정이 DB 에서 로드 완료된 시점에 readIds 를 즉시 동기화한다.
|
||||
* STOMP 가 앱 시작 직후 구독 시 readIds 가 아직 빈 상태여서 이미 닫은
|
||||
* 알림이 다시 팝업으로 뜨는 타이밍 버그를 방지한다.
|
||||
*/
|
||||
const dbRead = loadReadIds();
|
||||
if (dbRead.size > 0) {
|
||||
const merged = new Set([...readIdsRef.current, ...dbRead]);
|
||||
readIdsRef.current = merged;
|
||||
setReadIds(merged);
|
||||
}
|
||||
setToastNotifications([]);
|
||||
void refreshHistory({ serverOnly: true, rawServerList: true });
|
||||
}, [refreshHistory, settingsLoaded, settingsSessionKey]);
|
||||
@@ -262,7 +273,9 @@ export const TradeNotificationProvider: React.FC<ProviderProps> = ({
|
||||
* STOMP 재연결 시 동일 신호가 재수신되거나 20 초 폴링에서 새로 발견되어도
|
||||
* 사용자가 명시적으로 닫은 알림은 다시 열리지 않는다.
|
||||
*/
|
||||
const alreadyRead = readIdsRef.current.has(id);
|
||||
// readIdsRef.current (인메모리) 와 DB 캐시(loadReadIds) 모두 확인.
|
||||
// 앱 시작 초기 설정 로드 전 STOMP 신호 수신 시에도 읽음 상태를 올바르게 판단한다.
|
||||
const alreadyRead = readIdsRef.current.has(id) || loadReadIds().has(id);
|
||||
|
||||
setAllNotifications(prev => {
|
||||
const existing = prev.find(n => n.id === id);
|
||||
|
||||
Reference in New Issue
Block a user