diff --git a/CHANGELOG.md b/CHANGELOG.md index 742294445..94f9aa97c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog - v3 +## [v3.16.3] (Apr 3 2025) +### Fixes: +- Fixed an issue where the connection is still alive after `SendbirdProvider` have been unmounted. +- Fixed an undefined error of `emojiCategory`. + ## [v3.16.2] (Mar 28 2025) ### Features: - Added `tel` and `mailto` protocol support for the markup link diff --git a/package.json b/package.json index c3a77e410..0ca04b870 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@sendbird/uikit-react", - "version": "3.16.2", + "version": "3.16.3", "description": "Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.", "keywords": [ "sendbird", diff --git a/src/modules/GroupChannel/context/__tests__/useMessageListScroll.spec.tsx b/src/modules/GroupChannel/context/__tests__/useMessageListScroll.spec.tsx index 5fd37c1d2..9f528de89 100644 --- a/src/modules/GroupChannel/context/__tests__/useMessageListScroll.spec.tsx +++ b/src/modules/GroupChannel/context/__tests__/useMessageListScroll.spec.tsx @@ -146,7 +146,7 @@ describe('useMessageListScroll', () => { }); describe('scroll', () => { - it('should do nothing if scrollRef is null', async () => { + it('should call resolve() even if scrollRef is null', async () => { const { result } = renderHook(() => useMessageListScroll('auto')); const resolveMock = jest.fn(); @@ -154,7 +154,9 @@ describe('useMessageListScroll', () => { result.current.scrollPubSub.publish('scroll', { resolve: resolveMock }); }); - expect(resolveMock).not.toHaveBeenCalled(); + await waitFor(() => { + expect(resolveMock).toHaveBeenCalled(); + }); }); it('should use scrollTop if scroll method is not defined', async () => { diff --git a/src/modules/GroupChannel/context/hooks/useMessageListScroll.tsx b/src/modules/GroupChannel/context/hooks/useMessageListScroll.tsx index 084b288c7..7a2bccfb4 100644 --- a/src/modules/GroupChannel/context/hooks/useMessageListScroll.tsx +++ b/src/modules/GroupChannel/context/hooks/useMessageListScroll.tsx @@ -72,12 +72,15 @@ export function useMessageListScroll(behavior: 'smooth' | 'auto', deps: Dependen unsubscribes.push( scrollPubSub.subscribe('scroll', ({ top, animated, lazy, resolve }) => { runCallback(() => { - if (!scrollRef.current) return; + if (!scrollRef.current || typeof top !== 'number') { + resolve?.(); + return; + } const { scrollTop, scrollHeight, clientHeight } = scrollRef.current; if (scrollRef.current.scroll) { scrollRef.current.scroll({ top, behavior: getScrollBehavior(behavior, animated) }); - } else if (typeof top === 'number') { + } else { scrollRef.current.scrollTop = top; } @@ -85,7 +88,7 @@ export function useMessageListScroll(behavior: 'smooth' | 'auto', deps: Dependen scrollDistanceFromBottomRef.current = Math.max(0, scrollHeight - scrollTop - clientHeight); setIsScrollBottomReached(scrollDistanceFromBottomRef.current === 0); - if (resolve) resolve(); + resolve?.(); }, lazy); }), );