diff --git a/webapp/channels/src/components/channel_header_dropdown/__snapshots__/channel_header_dropdown.test.tsx.snap b/webapp/channels/src/components/channel_header_dropdown/__snapshots__/channel_header_dropdown.test.tsx.snap index 4ca71b954f..255850ed45 100644 --- a/webapp/channels/src/components/channel_header_dropdown/__snapshots__/channel_header_dropdown.test.tsx.snap +++ b/webapp/channels/src/components/channel_header_dropdown/__snapshots__/channel_header_dropdown.test.tsx.snap @@ -71,7 +71,7 @@ exports[`components/ChannelHeaderDropdown should match snapshot with no plugin i isFavorite={false} show={false} /> - - { }; it('should match snapshot', () => { - const wrapper = shallow(); + const wrapper = shallow(); expect(wrapper).toMatchSnapshot(); }); it('should runs closeRightHandSide function if has any pinned posts', () => { - const wrapper = shallow(); + const wrapper = shallow(); wrapper.find(Menu.ItemAction).simulate('click', { preventDefault: jest.fn(), @@ -40,7 +40,7 @@ describe('components/ChannelHeaderDropdown/MenuItem.ViewPinnedPosts', () => { ...baseProps, hasPinnedPosts: false, }; - const wrapper = shallow(); + const wrapper = shallow(); wrapper.find(Menu.ItemAction).simulate('click', { preventDefault: jest.fn(), diff --git a/webapp/channels/src/components/channel_header_dropdown/menu_items/view_pinned_posts/view_pinned_posts.tsx b/webapp/channels/src/components/channel_header_dropdown/menu_items/view_pinned_posts/view_pinned_posts.tsx index 769ae9cd7a..316234ba02 100644 --- a/webapp/channels/src/components/channel_header_dropdown/menu_items/view_pinned_posts/view_pinned_posts.tsx +++ b/webapp/channels/src/components/channel_header_dropdown/menu_items/view_pinned_posts/view_pinned_posts.tsx @@ -1,14 +1,14 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import React from 'react'; +import React, {useCallback, memo} from 'react'; +import type {MouseEvent} from 'react'; +import {useIntl} from 'react-intl'; import type {GetStateFunc, DispatchFunc} from 'mattermost-redux/types/actions'; import Menu from 'components/widgets/menu/menu'; -import {localizeMessage} from 'utils/utils'; - type Props = { show?: boolean; channel: any; @@ -19,33 +19,33 @@ type Props = { }; } -export default class ViewPinnedPosts extends React.PureComponent { - private handleClick = (e: React.MouseEvent) => { +const ViewPinnedPosts = ({ + channel, + hasPinnedPosts, + actions: { + closeRightHandSide, + showPinnedPosts, + }, + show, +}: Props) => { + const intl = useIntl(); + const handleClick = useCallback((e: MouseEvent) => { e.preventDefault(); - const { - channel, - hasPinnedPosts, - actions: { - closeRightHandSide, - showPinnedPosts, - }, - } = this.props; - if (hasPinnedPosts) { closeRightHandSide(); } else { showPinnedPosts(channel.id); } - }; + }, [channel.id, closeRightHandSide, showPinnedPosts, hasPinnedPosts]); - render() { - return ( - - ); - } -} + return ( + + ); +}; + +export default memo(ViewPinnedPosts);