Fix pinned messages state syncing

This commit is contained in:
Jamie
2025-12-29 11:36:07 -08:00
committed by GitHub
parent b405e3d83d
commit 963c94a2a2
25 changed files with 388 additions and 437 deletions

View File

@@ -4,14 +4,15 @@
import React, { memo, useCallback } from 'react';
import { useSelector } from 'react-redux';
import { getIntl } from '../selectors/user.std.js';
import { getConversationByIdSelector } from '../selectors/conversations.dom.js';
import {
getConversationByIdSelector,
getPinnedMessages,
} from '../selectors/conversations.dom.js';
import { strictAssert } from '../../util/assert.std.js';
import { PinnedMessagesPanel } from '../../components/conversation/pinned-messages/PinnedMessagesPanel.dom.js';
import type { SmartTimelineItemProps } from './TimelineItem.preload.js';
import { SmartTimelineItem } from './TimelineItem.preload.js';
import { getPinnedMessages } from '../selectors/pinnedMessages.dom.js';
import { canPinMessages as getCanPinMessages } from '../selectors/message.preload.js';
import { usePinnedMessagesActions } from '../ducks/pinnedMessages.preload.js';
import { useConversationsActions } from '../ducks/conversations.preload.js';
export type SmartPinnedMessagesPanelProps = Readonly<{
@@ -28,7 +29,8 @@ export const SmartPinnedMessagesPanel = memo(function SmartPinnedMessagesPanel(
const i18n = useSelector(getIntl);
const conversationSelector = useSelector(getConversationByIdSelector);
const conversation = conversationSelector(props.conversationId);
const { popPanelForConversation } = useConversationsActions();
const { onPinnedMessageRemove, popPanelForConversation } =
useConversationsActions();
strictAssert(
conversation,
@@ -38,11 +40,9 @@ export const SmartPinnedMessagesPanel = memo(function SmartPinnedMessagesPanel(
const pinnedMessages = useSelector(getPinnedMessages);
const canPinMessages = getCanPinMessages(conversation);
const { onPinnedMessageRemove } = usePinnedMessagesActions();
const handlePinnedMessageRemoveAll = useCallback(() => {
popPanelForConversation();
for (const { pinnedMessage } of pinnedMessages) {
for (const pinnedMessage of pinnedMessages) {
onPinnedMessageRemove(pinnedMessage.messageId);
}
}, [popPanelForConversation, pinnedMessages, onPinnedMessageRemove]);