From c6d30e8cb8b9762992262e0f08d2383dc60fffd8 Mon Sep 17 00:00:00 2001 From: zubiden <19638254+zubiden@users.noreply.github.com> Date: Fri, 6 Dec 2024 19:44:01 +0400 Subject: [PATCH] Pinned Message: Fix disappearing on chat change (#5270) --- src/components/middle/hooks/usePinnedMessage.ts | 13 ++++++++----- .../middle/panes/HeaderPinnedMessage.module.scss | 2 ++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/components/middle/hooks/usePinnedMessage.ts b/src/components/middle/hooks/usePinnedMessage.ts index 875b855a2..be7410aa7 100644 --- a/src/components/middle/hooks/usePinnedMessage.ts +++ b/src/components/middle/hooks/usePinnedMessage.ts @@ -45,7 +45,7 @@ export default function usePinnedMessage( if (currentPinnedIndex >= pinnedLength) { setPinnedIndexByKey({ ...getPinnedIndexByKey(), - [key]: Math.max(0, pinnedLength - 1), + [key]: clampIndex(pinnedLength - 1), }); } }, [getPinnedIndexByKey, key, pinnedIds?.length, setPinnedIndexByKey]); @@ -68,7 +68,7 @@ export default function usePinnedMessage( const newPinnedIndex = pinnedIds.indexOf(loadingPinnedId); setPinnedIndexByKey({ ...getPinnedIndexByKey(), - [key]: newPinnedIndex, + [key]: clampIndex(newPinnedIndex), }); setLoadingPinnedId(undefined); } @@ -87,11 +87,10 @@ export default function usePinnedMessage( if (focusedMessageId) { const pinnedIndexAboveFocused = pinnedIds.findIndex((id) => id < focusedMessageId); - const newIndex = pinnedIndexAboveFocused !== -1 ? pinnedIndexAboveFocused : 0; setPinnedIndexByKey({ ...getPinnedIndexByKey(), - [key]: newIndex, + [key]: clampIndex(pinnedIndexAboveFocused), }); } else if (viewportPinnedIds.length) { const maxViewportPinnedId = Math.max(...viewportPinnedIds); @@ -99,7 +98,7 @@ export default function usePinnedMessage( setPinnedIndexByKey({ ...getPinnedIndexByKey(), - [key]: newIndex, + [key]: clampIndex(newIndex), }); } }); @@ -137,3 +136,7 @@ export default function usePinnedMessage( getLoadingPinnedId, }; } + +function clampIndex(id: number) { + return Math.max(0, id); +} diff --git a/src/components/middle/panes/HeaderPinnedMessage.module.scss b/src/components/middle/panes/HeaderPinnedMessage.module.scss index ee46bc16d..6cb256dff 100644 --- a/src/components/middle/panes/HeaderPinnedMessage.module.scss +++ b/src/components/middle/panes/HeaderPinnedMessage.module.scss @@ -49,6 +49,8 @@ .fullWidth { @include mixins.header-pane; + height: 3.5rem; + .pinnedMessage { margin-top: 0; margin-bottom: 0;