Merge pull request #490 from BeaudanBrown/incoming-public

Fix duplicate detection for sent messages in public chat
pull/502/head
Mikunj Varsani 6 years ago committed by GitHub
commit 0acea50acb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1303,15 +1303,17 @@
const descriptorId = await textsecure.MessageReceiver.arrayBufferToString( const descriptorId = await textsecure.MessageReceiver.arrayBufferToString(
messageDescriptor.id messageDescriptor.id
); );
let message;
if ( if (
messageDescriptor.type === 'group' && messageDescriptor.type === 'group' &&
descriptorId.match(/^publicChat:/) && descriptorId.match(/^publicChat:/) &&
data.source === ourNumber data.source === ourNumber
) { ) {
// Remove public chat messages to ourselves // Public chat messages from ourselves should be outgoing
return event.confirm(); message = await createSentMessage(data);
} else {
message = await createMessage(data);
} }
const message = await createMessage(data);
const isDuplicate = await isMessageDuplicate(message); const isDuplicate = await isMessageDuplicate(message);
if (isDuplicate) { if (isDuplicate) {
window.log.warn('Received duplicate message', message.idForLogging()); window.log.warn('Received duplicate message', message.idForLogging());
@ -1396,10 +1398,10 @@
return new Whisper.Message({ return new Whisper.Message({
source: textsecure.storage.user.getNumber(), source: textsecure.storage.user.getNumber(),
sourceDevice: data.device, sourceDevice: data.sourceDevice,
sent_at: data.timestamp, sent_at: data.timestamp,
sent_to: sentTo, sent_to: sentTo,
received_at: now, received_at: data.isPublic ? data.receivedAt : now,
conversationId: data.destination, conversationId: data.destination,
type: 'outgoing', type: 'outgoing',
sent: true, sent: true,

@ -1337,6 +1337,10 @@
if (this.isPrivate()) { if (this.isPrivate()) {
messageWithSchema.destination = destination; messageWithSchema.destination = destination;
} else if (this.isPublic()) {
// Public chats require this data to detect duplicates
messageWithSchema.source = textsecure.storage.user.getNumber();
messageWithSchema.sourceDevice = 1;
} }
const attributes = { const attributes = {
...messageWithSchema, ...messageWithSchema,

@ -2020,7 +2020,10 @@
} }
); );
} }
} else if (dataMessage.profile) { } else if (
source !== textsecure.storage.user.getNumber() &&
dataMessage.profile
) {
ConversationController.getOrCreateAndWait(source, 'private').then( ConversationController.getOrCreateAndWait(source, 'private').then(
sender => { sender => {
sender.setLokiProfile(dataMessage.profile); sender.setLokiProfile(dataMessage.profile);

Loading…
Cancel
Save