Message unsendability

pull/1062/head
Vincent 6 years ago
parent f66bc782da
commit 99200bb725

@ -1060,17 +1060,20 @@
"delete": { "delete": {
"message": "Delete" "message": "Delete"
}, },
"unsend": {
"message": "Unsend"
},
"forwardMessage": { "forwardMessage": {
"message": "Forward", "message": "Forward",
"description": "Text of Forward Message button" "description": "Text of Forward Message button"
}, },
"deletePublicWarning": { "deletePublicWarning": {
"message": "message":
"Are you sure? Clicking 'delete' will permanently remove this message for everyone in this channel." "Are you sure? Clicking 'unsend' will permanently remove this message for everyone in this channel."
}, },
"deleteMultiplePublicWarning": { "deleteMultiplePublicWarning": {
"message": "message":
"Are you sure? Clicking 'delete' will permanently remove these messages for everyone in this channel." "Are you sure? Clicking 'unsend' will permanently remove these messages for everyone in this channel."
}, },
"deleteWarning": { "deleteWarning": {
"message": "message":
@ -1180,6 +1183,16 @@
"description": "description":
"Shown on the drop-down menu for an individual message, deletes single message" "Shown on the drop-down menu for an individual message, deletes single message"
}, },
"unsendMessage": {
"message": "Unsend Message",
"description":
"Shown on the drop-down menu for an individual message being removed from the server"
},
"unsendMessages": {
"message": "Unsend Messages",
"description":
"Tiitle for prompt and header button for messages being removed from the server"
},
"messages": { "messages": {
"message": "Messages", "message": "Messages",
"description": "Message search result" "description": "Message search result"
@ -1188,6 +1201,7 @@
"message": "Delete Messages", "message": "Delete Messages",
"description": "Menu item for deleting messages, title case." "description": "Menu item for deleting messages, title case."
}, },
"deletePublicConversationConfirmation": { "deletePublicConversationConfirmation": {
"message": "message":
"Permanently delete the messages locally from this public channel?", "Permanently delete the messages locally from this public channel?",

@ -1334,9 +1334,15 @@
deleteMessages(messages, onSuccess) { deleteMessages(messages, onSuccess) {
const multiple = messages.length > 1; const multiple = messages.length > 1;
const isPublic = this.model.isPublic();
// In future, we may be able to unsend private messages also
// isServerDeletable also defined in ConversationHeader.tsx for
// future reference
const isServerDeletable = !!isPublic;
const warningMessage = (() => { const warningMessage = (() => {
if (this.model.isPublic()) { if (isPublic) {
return multiple return multiple
? i18n('deleteMultiplePublicWarning') ? i18n('deleteMultiplePublicWarning')
: i18n('deletePublicWarning'); : i18n('deletePublicWarning');
@ -1347,7 +1353,7 @@
const doDelete = async () => { const doDelete = async () => {
let toDeleteLocally; let toDeleteLocally;
if (this.model.isPublic()) { if (isPublic) {
toDeleteLocally = await this.model.deletePublicMessages(messages); toDeleteLocally = await this.model.deletePublicMessages(messages);
if (toDeleteLocally.length === 0) { if (toDeleteLocally.length === 0) {
// Message failed to delete from server, show error? // Message failed to delete from server, show error?
@ -1382,10 +1388,18 @@
return; return;
} }
// If removable from server, we "Unsend" - otherwise "Delete"
const pluralSuffix = multiple ? 's' : '';
const title = i18n(isPublic
? `unsendMessage${pluralSuffix}`
: `deleteMessage${pluralSuffix}`);
const okText = i18n(isServerDeletable ? 'unsend' : 'delete');
window.confirmationDialog({ window.confirmationDialog({
title: i18n('deleteMessage'), title,
message: warningMessage, message: warningMessage,
okText: i18n('delete'), okText,
okTheme: 'danger', okTheme: 'danger',
resolve: doDelete, resolve: doDelete,
}); });

@ -356,7 +356,10 @@ export class ConversationHeader extends React.Component<Props> {
} }
public renderSelectionOverlay() { public renderSelectionOverlay() {
const { onDeleteSelectedMessages, onCloseOverlay, i18n } = this.props; const { onDeleteSelectedMessages, onCloseOverlay, isPublic, i18n } = this.props;
const isServerDeletable = !!isPublic;
const deleteMessageButtonText = i18n(isServerDeletable ? 'unsend' : 'delete');
return ( return (
<div className="message-selection-overlay"> <div className="message-selection-overlay">
@ -372,7 +375,7 @@ export class ConversationHeader extends React.Component<Props> {
<SessionButton <SessionButton
buttonType={SessionButtonType.Default} buttonType={SessionButtonType.Default}
buttonColor={SessionButtonColor.Danger} buttonColor={SessionButtonColor.Danger}
text={i18n('delete')} text={deleteMessageButtonText}
onClick={onDeleteSelectedMessages} onClick={onDeleteSelectedMessages}
/> />
</div> </div>

@ -907,6 +907,9 @@ export class Message extends React.PureComponent<Props, State> {
}, 100); }, 100);
}; };
const isServerDeletable = !!this.props.isPublic;
const deleteMessageCtxText = i18n(isServerDeletable ? 'unsend' : 'delete');
// CONTEXT MENU "Select Message" does not work // CONTEXT MENU "Select Message" does not work
return ( return (
@ -968,7 +971,7 @@ export class Message extends React.PureComponent<Props, State> {
}} }}
onClick={wrap(onDelete)} onClick={wrap(onDelete)}
> >
{i18n('deleteMessage')} {deleteMessageCtxText}
</MenuItem> </MenuItem>
) : null} ) : null}
{isPublic ? ( {isPublic ? (

Loading…
Cancel
Save