[MM-57708] Convert ./components/copy_url_context_menu/copy_url_context_menu.tsx from Class Component to Function Component (#26716)

* Convert `./components/copy_url_context_menu/copy_url_context_menu.tsx` from Class Component to Function Component

* 🎨 Improve code quality
Этот коммит содержится в:
Syed Ali Abbas Zaidi
2024-04-22 15:39:33 +05:00
коммит произвёл GitHub
родитель 3dae305dc7
Коммит 7b90b7c2e0

Просмотреть файл

@@ -1,7 +1,7 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information. // See LICENSE.txt for license information.
import React from 'react'; import React, {memo, useCallback} from 'react';
import {ContextMenu, ContextMenuTrigger, MenuItem} from 'react-contextmenu'; import {ContextMenu, ContextMenuTrigger, MenuItem} from 'react-contextmenu';
import {FormattedMessage} from 'react-intl'; import {FormattedMessage} from 'react-intl';
@@ -29,23 +29,28 @@ type Props = {
}; };
} }
export default class CopyUrlContextMenu extends React.PureComponent<Props> { const CopyUrlContextMenu = ({
copy = () => { link,
let link = this.props.link; siteURL,
actions,
menuId,
children,
}: Props) => {
const copy = useCallback(() => {
let siteLink = link;
// Transform relative links to absolute ones for copy and paste. // Transform relative links to absolute ones for copy and paste.
if (link.indexOf('http://') === -1 && link.indexOf('https://') === -1) { if (siteLink.indexOf('http://') === -1 && siteLink.indexOf('https://') === -1) {
link = this.props.siteURL + link; siteLink = siteURL + link;
} }
this.props.actions.copyToClipboard(link); actions.copyToClipboard(siteLink);
}; }, [actions, link, siteURL]);
render(): JSX.Element {
const contextMenu = ( const contextMenu = (
<ContextMenu id={'copy-url-context-menu' + this.props.menuId}> <ContextMenu id={`copy-url-context-menu${menuId}`}>
<MenuItem <MenuItem
onClick={this.copy} onClick={copy}
> >
<FormattedMessage <FormattedMessage
id='copy_url_context_menu.getChannelLink' id='copy_url_context_menu.getChannelLink'
@@ -57,10 +62,10 @@ export default class CopyUrlContextMenu extends React.PureComponent<Props> {
const contextMenuTrigger = ( const contextMenuTrigger = (
<ContextMenuTrigger <ContextMenuTrigger
id={'copy-url-context-menu' + this.props.menuId} id={`copy-url-context-menu${menuId}`}
holdToDisplay={-1} holdToDisplay={-1}
> >
{this.props.children} {children}
</ContextMenuTrigger> </ContextMenuTrigger>
); );
@@ -70,5 +75,6 @@ export default class CopyUrlContextMenu extends React.PureComponent<Props> {
{contextMenuTrigger} {contextMenuTrigger}
</span> </span>
); );
} };
}
export default memo(CopyUrlContextMenu);