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);