From f8f15cb9f7305c596c5b552ed1108dcbd50edd25 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Thu, 19 Nov 2020 13:26:59 +1100 Subject: [PATCH] fix remove message for public groups --- js/models/conversations.d.ts | 1 + js/models/conversations.js | 14 +++++----- js/modules/signal.js | 4 --- preload.js | 1 - ts/components/conversation/Message.tsx | 28 +++++++++++++------ ts/components/conversation/MessageDetail.tsx | 18 +++++++----- .../conversation/SessionConversation.tsx | 19 +++++++------ .../conversation/SessionMessagesList.tsx | 8 ++++++ 8 files changed, 57 insertions(+), 36 deletions(-) diff --git a/js/models/conversations.d.ts b/js/models/conversations.d.ts index 95f537211..0fdc053fe 100644 --- a/js/models/conversations.d.ts +++ b/js/models/conversations.d.ts @@ -92,6 +92,7 @@ export interface ConversationModel makeQuote: any; unblock: any; deleteContact: any; + removeMessage: (messageId: string) => Promise; deleteMessages(); endSession: () => Promise; diff --git a/js/models/conversations.js b/js/models/conversations.js index e203a9af4..1766b8c56 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -2239,14 +2239,14 @@ if (message) { message.trigger('unload'); this.messageCollection.remove(messageId); - window.Signal.Data.removeMessage(message.id, { - Message: Whisper.Message, - }); - window.Whisper.events.trigger('messageDeleted', { - conversationKey: this.id, - messageId, - }); } + window.Signal.Data.removeMessage(messageId, { + Message: Whisper.Message, + }); + window.Whisper.events.trigger('messageDeleted', { + conversationKey: this.id, + messageId, + }); }, deleteMessages() { diff --git a/js/modules/signal.js b/js/modules/signal.js index c539efa60..1dc44c965 100644 --- a/js/modules/signal.js +++ b/js/modules/signal.js @@ -88,9 +88,6 @@ const { MediaGallery, } = require('../../ts/components/conversation/media-gallery/MediaGallery'); const { Message } = require('../../ts/components/conversation/Message'); -const { - MessageDetail, -} = require('../../ts/components/conversation/MessageDetail'); const { Quote } = require('../../ts/components/conversation/Quote'); const { TypingBubble, @@ -260,7 +257,6 @@ exports.setup = (options = {}) => { SessionPasswordPrompt, MediaGallery, Message, - MessageDetail, Quote, Types: { Message: MediaGalleryMessage, diff --git a/preload.js b/preload.js index 4ed3661b9..028e23aec 100644 --- a/preload.js +++ b/preload.js @@ -451,7 +451,6 @@ window.shortenPubkey = pubkey => { window.pubkeyPattern = /@[a-fA-F0-9]{64,66}\b/g; -// TODO: activate SealedSender once it is ready on all platforms window.lokiFeatureFlags = { multiDeviceUnpairing: true, privateGroupChats: true, diff --git a/ts/components/conversation/Message.tsx b/ts/components/conversation/Message.tsx index 66a45f254..6d16cfa5c 100644 --- a/ts/components/conversation/Message.tsx +++ b/ts/components/conversation/Message.tsx @@ -105,7 +105,7 @@ export interface Props { onReply?: (messagId: number) => void; onRetrySend?: () => void; onDownload?: (attachment: AttachmentType) => void; - onDelete?: () => void; + onDeleteMessage: (messageId: string) => void; onCopyPubKey?: () => void; onBanUser?: () => void; onShowDetail: () => void; @@ -817,6 +817,7 @@ export class Message extends React.PureComponent { isDeletable, id, onSelectMessage, + onDeleteMessage, onDownload, onRetrySend, onShowDetail, @@ -854,6 +855,7 @@ export class Message extends React.PureComponent { }; const selectMessageText = window.i18n('selectMessage'); + const deleteMessageText = window.i18n('deleteMessage'); return ( { {window.i18n('resend')} ) : null} {isDeletable ? ( - { - e.event.stopPropagation(); - onSelectMessage(id); - }} - > - {selectMessageText} - + <> + { + onSelectMessage(id); + }} + > + {selectMessageText} + + { + onDeleteMessage(id); + }} + > + {deleteMessageText} + + ) : null} {isModerator && isPublic ? ( {window.i18n('banUser')} diff --git a/ts/components/conversation/MessageDetail.tsx b/ts/components/conversation/MessageDetail.tsx index d2c34967f..11c619912 100644 --- a/ts/components/conversation/MessageDetail.tsx +++ b/ts/components/conversation/MessageDetail.tsx @@ -5,7 +5,6 @@ import moment from 'moment'; import { Avatar } from '../Avatar'; import { ContactName } from './ContactName'; import { Message, Props as MessageProps } from './Message'; -import { LocalizerType } from '../../types/Util'; interface Contact { status: string; @@ -31,12 +30,11 @@ interface Props { errors: Array; contacts: Array; - i18n: LocalizerType; + onDeleteMessage: (messageId: string) => void; } export class MessageDetail extends React.Component { public renderAvatar(contact: Contact) { - const { i18n } = this.props; const { avatarPath, phoneNumber, name, profileName } = contact; const userName = name || profileName || phoneNumber; @@ -51,12 +49,16 @@ export class MessageDetail extends React.Component { } public renderDeleteButton() { - const { i18n, message } = this.props; + const { i18n } = window; + + const { message } = this.props; return message.isDeletable ? (