diff --git a/src/hooks/rooms/widgets/useAvatarInfoWidget.ts b/src/hooks/rooms/widgets/useAvatarInfoWidget.ts index 189f34a..6ee6a6d 100644 --- a/src/hooks/rooms/widgets/useAvatarInfoWidget.ts +++ b/src/hooks/rooms/widgets/useAvatarInfoWidget.ts @@ -361,7 +361,7 @@ const useAvatarInfoWidgetState = () => { let index = nameBubbles.findIndex(bubble => (bubble.roomIndex === event.id)); - if(index > -1) setNameBubbles(prevValue => prevValue.filter(bubble => (bubble.roomIndex === event.id))); + if(index > -1) setNameBubbles(prevValue => prevValue.filter(bubble => (bubble.roomIndex !== event.id))); index = productBubbles.findIndex(bubble => (bubble.id === event.id)); diff --git a/src/hooks/rooms/widgets/useChatWidget.ts b/src/hooks/rooms/widgets/useChatWidget.ts index ed0b9ed..2853f41 100644 --- a/src/hooks/rooms/widgets/useChatWidget.ts +++ b/src/hooks/rooms/widgets/useChatWidget.ts @@ -148,7 +148,7 @@ const useChatWidgetState = () => if(chatType === RoomSessionChatEvent.CHAT_TYPE_PET_REBREED_FERTILIZE) { - textKey = 'widget.chatbubble.petrefertilized;'; + textKey = 'widget.chatbubble.petrefertilized'; } else if(chatType === RoomSessionChatEvent.CHAT_TYPE_PET_SPEED_FERTILIZE) @@ -162,7 +162,7 @@ const useChatWidgetState = () => if(newRoomObject) { - const newUserData = roomSession.userDataManager.getUserDataByIndex(roomObject.id); + const newUserData = roomSession.userDataManager.getUserDataByIndex(newRoomObject.id); if(newUserData) targetUserName = newUserData.name; } diff --git a/src/hooks/rooms/widgets/useWordQuizWidget.ts b/src/hooks/rooms/widgets/useWordQuizWidget.ts index bb48327..aef3cf6 100644 --- a/src/hooks/rooms/widgets/useWordQuizWidget.ts +++ b/src/hooks/rooms/widgets/useWordQuizWidget.ts @@ -112,19 +112,21 @@ const useWordQuizWidgetState = () => { setUserAnswers(prevValue => { - const keysToRemove: number[] = []; + if(prevValue.size === 0) return prevValue; - prevValue.forEach((value, key) => + // Build new value objects + a new Map — don't decrement + // secondsLeft on the objects still referenced by prevValue + // (in-place mutation breaks memoization / StrictMode replay). + const next = new Map(prevValue); + + next.forEach((value, key) => { - value.secondsLeft--; + const secondsLeft = value.secondsLeft - 1; - if(value.secondsLeft <= 0) keysToRemove.push(key); + if(secondsLeft <= 0) next.delete(key); + else next.set(key, { ...value, secondsLeft }); }); - if(keysToRemove.length === 0) return prevValue; - - const next = new Map(prevValue); - keysToRemove.forEach(key => next.delete(key)); return next; }); };