diff --git a/src/messages.json b/src/messages.json index bce98464..ba88262f 100644 --- a/src/messages.json +++ b/src/messages.json @@ -285,6 +285,7 @@ "menu_item_info": "Info", "menu_item_member_delete": "Remove", "menu_item_mute": "Mute", + "menu_item_reply": "Reply", "menu_item_send_retry": "Retry", "menu_item_unblock": "Unblock", "menu_item_unmute": "Unmute", diff --git a/src/widgets/chat-message.jsx b/src/widgets/chat-message.jsx index 180ae730..1d4051fa 100644 --- a/src/widgets/chat-message.jsx +++ b/src/widgets/chat-message.jsx @@ -60,6 +60,10 @@ export default class ChatMessage extends React.Component { e.preventDefault(); e.stopPropagation(); const menuItems = this.props.received == Tinode.MESSAGE_STATUS_FAILED ? ['menu_item_send_retry'] : []; + if (this.props.received >= Tinode.MESSAGE_STATUS_FAILED && + this.props.received < Tinode.MESSAGE_STATUS_DEL_RANGE) { + menuItems.push('menu_item_reply'); + } this.props.showContextMenu({ seq: this.props.seq, content: this.props.content, y: e.pageY, x: e.pageX }, menuItems); } diff --git a/src/widgets/context-menu.jsx b/src/widgets/context-menu.jsx index 13e24a72..2483e80f 100644 --- a/src/widgets/context-menu.jsx +++ b/src/widgets/context-menu.jsx @@ -47,6 +47,11 @@ const messages = defineMessages({ defaultMessage: 'Unmute', description: 'Turn notifications on' }, + reply: { + id: 'menu_item_reply', + defaultMessage: 'Reply', + description: 'Reply to message' + }, topic_delete: { id: 'menu_item_delete_topic', defaultMessage: 'Delete', @@ -166,6 +171,13 @@ 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); + } + }, 'topic_unmute': { id: 'topic_unmute', title: formatMessage(messages.unmute), @@ -373,6 +385,10 @@ class ContextMenu extends React.Component { }); } + replyToMessage(params, errorHandler) { + console.log("Reply to message", params); + } + // Function is used by context menu to set permissions. topicPermissionSetter(mode, params, errorHandler) { const topic = this.props.tinode.getTopic(params.topicName);