update ReadReceiptMessage and DeliveryReceiptMessage to new pipeline

pull/1183/head
Audric Ackermann 5 years ago
parent e0979fc4a5
commit 908316f00d
No known key found for this signature in database
GPG Key ID: 999F434D76324AD4

@ -2047,9 +2047,17 @@
await Promise.all(
_.map(_.groupBy(read, 'sender'), async (receipts, sender) => {
const timestamps = _.map(receipts, 'timestamp');
await this.wrapSend(
textsecure.messaging.sendReadReceipts(sender, timestamps, {})
const receiptMessage = new libsession.Messages.Outgoing.ReadReceiptMessage(
{
timestamp: Date.now(),
timestamps,
}
);
const device = new libsession.Types.PubKey(sender);
await libsession
.getMessageQueue()
.sendUsingMultiDevice(device, receiptMessage);
})
);
}

@ -749,48 +749,6 @@ MessageSender.prototype = {
{ debugMessageType } // options
);
},
sendDeliveryReceipt(recipientId, timestamp, options) {
const myNumber = textsecure.storage.user.getNumber();
const myDevice = textsecure.storage.user.getDeviceId();
if (myNumber === recipientId && (myDevice === 1 || myDevice === '1')) {
return Promise.resolve();
}
const receiptMessage = new textsecure.protobuf.ReceiptMessage();
receiptMessage.type = textsecure.protobuf.ReceiptMessage.Type.DELIVERY;
receiptMessage.timestamp = [timestamp];
const contentMessage = new textsecure.protobuf.Content();
contentMessage.receiptMessage = receiptMessage;
const silent = true;
return this.sendIndividualProto(
recipientId,
contentMessage,
Date.now(),
silent,
options
);
},
sendReadReceipts(sender, timestamps, options) {
const receiptMessage = new textsecure.protobuf.ReceiptMessage();
receiptMessage.type = textsecure.protobuf.ReceiptMessage.Type.READ;
receiptMessage.timestamp = timestamps;
const contentMessage = new textsecure.protobuf.Content();
contentMessage.receiptMessage = receiptMessage;
const silent = true;
return this.sendIndividualProto(
sender,
contentMessage,
Date.now(),
silent,
options
);
},
syncReadMessages(reads, options) {
const myNumber = textsecure.storage.user.getNumber();
const myDevice = textsecure.storage.user.getDeviceId();
@ -1221,8 +1179,6 @@ textsecure.MessageSender = function MessageSenderWrapper(username, password) {
this.uploadAvatar = sender.uploadAvatar.bind(sender);
this.syncReadMessages = sender.syncReadMessages.bind(sender);
this.syncVerification = sender.syncVerification.bind(sender);
this.sendDeliveryReceipt = sender.sendDeliveryReceipt.bind(sender);
this.sendReadReceipts = sender.sendReadReceipts.bind(sender);
this.makeProxiedRequest = sender.makeProxiedRequest.bind(sender);
this.getProxiedSize = sender.getProxiedSize.bind(sender);
this.getMessageProto = sender.getMessageProto.bind(sender);

@ -14,9 +14,13 @@ import { SignalService } from './../protobuf';
import { removeFromCache } from './cache';
import { toNumber } from 'lodash';
import { DataMessage } from '../session/messages/outgoing';
import {
DataMessage,
DeliveryReceiptMessage,
} from '../session/messages/outgoing';
import { MultiDeviceProtocol } from '../session/protocols';
import { PubKey } from '../session/types';
import { getMessageQueue } from '../session';
export { handleEndSession, handleMediumGroupUpdate };
@ -171,22 +175,14 @@ enum ConversationType {
PRIVATE = 'private',
}
function sendDeliveryReceipt(source: string, timestamp: any) {
const { wrap, sendOptions } = window.ConversationController.prepareForSend(
source
);
wrap(
window.textsecure.messaging.sendDeliveryReceipt(
source,
timestamp,
sendOptions
)
).catch((error: any) => {
window.log.error(
`Failed to send delivery receipt to ${source} for message ${timestamp}:`,
error && error.stack ? error.stack : error
);
async function sendDeliveryReceipt(source: string, timestamp: any) {
const receiptMessage = new DeliveryReceiptMessage({
timestamp: Date.now(),
timestamps: [timestamp],
});
const device = new PubKey(source);
await getMessageQueue().sendUsingMultiDevice(device, receiptMessage);
}
interface MessageId {
@ -604,11 +600,13 @@ export async function handleMessageEvent(event: any): Promise<void> {
return;
}
const isOurDevice = await MultiDeviceProtocol.isOurDevice(source);
const shouldSendReceipt =
isIncoming && data.unidentifiedDeliveryReceived && !isGroupMessage;
isIncoming && data.unidentifiedDeliveryReceived && !isGroupMessage && !isOurDevice;
if (shouldSendReceipt) {
sendDeliveryReceipt(source, data.timestamp);
await sendDeliveryReceipt(source, data.timestamp);
}
await window.ConversationController.getOrCreateAndWait(id, type);

Loading…
Cancel
Save