chore: seed migration objects batch 2
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
// Context Menu: popup/dropdown menu.
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import { injectIntl, defineMessages } from 'react-intl';
|
||||
|
||||
import { REM_SIZE } from '../config.js';
|
||||
import HashNavigation from '../lib/navigation.js';
|
||||
|
||||
const messages = defineMessages({
|
||||
info: {
|
||||
@@ -47,6 +45,16 @@ const messages = defineMessages({
|
||||
defaultMessage: 'Unmute',
|
||||
description: 'Turn notifications on'
|
||||
},
|
||||
reply: {
|
||||
id: 'menu_item_reply',
|
||||
defaultMessage: 'Reply',
|
||||
description: 'Reply to message'
|
||||
},
|
||||
forward: {
|
||||
id: 'menu_item_forward',
|
||||
defaultMessage: 'Forward',
|
||||
description: 'Forward message'
|
||||
},
|
||||
topic_delete: {
|
||||
id: 'menu_item_delete_topic',
|
||||
defaultMessage: 'Delete',
|
||||
@@ -109,6 +117,8 @@ class ContextMenu extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
this.selfRef = React.createRef();
|
||||
|
||||
const {formatMessage} = props.intl;
|
||||
|
||||
this.handlePageClick = this.handlePageClick.bind(this);
|
||||
@@ -171,6 +181,18 @@ class ContextMenu extends React.Component {
|
||||
return this.retryMessage(params, errorHandler);
|
||||
}
|
||||
},
|
||||
'menu_item_reply': {
|
||||
id: 'menu_item_reply',
|
||||
title: formatMessage(messages.reply),
|
||||
handler: (params, errorHandler) => {
|
||||
return this.replyToMessage(params, errorHandler);
|
||||
}
|
||||
},
|
||||
'menu_item_forward': {
|
||||
id: 'menu_item_forward',
|
||||
title: formatMessage(messages.forward),
|
||||
handler: () => {} /* the action is taken directly in tinode-web */
|
||||
},
|
||||
'topic_unmute': {
|
||||
id: 'topic_unmute',
|
||||
title: formatMessage(messages.unmute),
|
||||
@@ -318,7 +340,7 @@ class ContextMenu extends React.Component {
|
||||
}
|
||||
|
||||
handlePageClick(e) {
|
||||
if (ReactDOM.findDOMNode(this).contains(e.target)) {
|
||||
if (this.selfRef.current.contains(e.target)) {
|
||||
return;
|
||||
}
|
||||
e.preventDefault();
|
||||
@@ -342,7 +364,7 @@ class ContextMenu extends React.Component {
|
||||
}
|
||||
|
||||
if (!item) {
|
||||
console.log("Invalid menu item ID", e.currentTarget.dataset.id);
|
||||
console.error("Invalid menu item ID", e.currentTarget.dataset.id);
|
||||
} else {
|
||||
this.props.onAction(
|
||||
item.id,
|
||||
@@ -411,9 +433,13 @@ class ContextMenu extends React.Component {
|
||||
return result;
|
||||
}
|
||||
|
||||
replyToMessage(params, errorHandler) {
|
||||
params.pickReply(params.seq, params.content, params.forwarded, params.userFrom, params.userName, errorHandler);
|
||||
}
|
||||
|
||||
render() {
|
||||
const menu = [];
|
||||
let count = 0;
|
||||
let menu = [];
|
||||
this.props.items.map((item) => {
|
||||
if (typeof item == 'string') {
|
||||
item = this.MenuItems[item];
|
||||
@@ -445,7 +471,7 @@ class ContextMenu extends React.Component {
|
||||
};
|
||||
|
||||
return (
|
||||
<ul className="menu" style={position}>
|
||||
<ul className="menu" style={position} ref={this.selfRef}>
|
||||
{menu}
|
||||
</ul>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user