Merge pull request #1259 from Bilb/fix-read-receipt

pull/1275/head
Audric Ackermann 5 years ago committed by GitHub
commit d03ef84a49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -213,16 +213,6 @@
); );
}); });
}, },
prepareForSend(id) {
// id is either a group id or an individual user's id
const conversation = this.get(id);
const sendOptions = {};
const wrap = conversation
? conversation.wrapSend.bind(conversation)
: promise => promise;
return { wrap, sendOptions };
},
async getAllGroupsInvolvingId(id) { async getAllGroupsInvolvingId(id) {
const groups = await window.Signal.Data.getAllGroupsInvolvingId(id, { const groups = await window.Signal.Data.getAllGroupsInvolvingId(id, {
ConversationCollection: Whisper.ConversationCollection, ConversationCollection: Whisper.ConversationCollection,

@ -741,17 +741,8 @@
} }
}, },
async sendVerifySyncMessage(number, state) { async sendVerifySyncMessage(number, state) {
// Because syncVerification sends a (null) message to the target of the verify and
// a sync message to our own devices, we need to send the accessKeys down for both
// contacts. So we merge their sendOptions.
const { sendOptions } = ConversationController.prepareForSend(
this.ourNumber,
{ syncMessage: true }
);
const options = Object.assign({}, sendOptions, {});
const key = await textsecure.storage.protocol.loadIdentityKey(number); const key = await textsecure.storage.protocol.loadIdentityKey(number);
return textsecure.messaging.syncVerification(number, state, key, options); return textsecure.messaging.syncVerification(number, state, key);
}, },
isVerified() { isVerified() {
if (this.isPrivate()) { if (this.isPrivate()) {
@ -1460,30 +1451,6 @@
} }
}); });
}, },
wrapSend(promise) {
return promise.then(
async result => {
// success
if (result) {
await this.handleMessageSendResult({
...result,
success: true,
});
}
return result;
},
async result => {
// failure
if (result) {
await this.handleMessageSendResult({
...result,
success: false,
});
}
throw result;
}
);
},
async updateAvatarOnPublicChat({ url, profileKey }) { async updateAvatarOnPublicChat({ url, profileKey }) {
if (!this.isPublic()) { if (!this.isPublic()) {
@ -1505,63 +1472,6 @@
); );
await serverAPI.setAvatar(url, profileKey); await serverAPI.setAvatar(url, profileKey);
}, },
async handleMessageSendResult({ failoverNumbers, unidentifiedDeliveries }) {
await Promise.all(
(failoverNumbers || []).map(async number => {
const conversation = ConversationController.get(number);
if (
conversation &&
conversation.get('sealedSender') !== SEALED_SENDER.DISABLED
) {
window.log.info(
`Setting sealedSender to DISABLED for conversation ${conversation.idForLogging()}`
);
conversation.set({
sealedSender: SEALED_SENDER.DISABLED,
});
await window.Signal.Data.updateConversation(
conversation.id,
conversation.attributes,
{ Conversation: Whisper.Conversation }
);
}
})
);
await Promise.all(
(unidentifiedDeliveries || []).map(async number => {
const conversation = ConversationController.get(number);
if (
conversation &&
conversation.get('sealedSender') === SEALED_SENDER.UNKNOWN
) {
if (conversation.get('accessKey')) {
window.log.info(
`Setting sealedSender to ENABLED for conversation ${conversation.idForLogging()}`
);
conversation.set({
sealedSender: SEALED_SENDER.ENABLED,
});
} else {
window.log.info(
`Setting sealedSender to UNRESTRICTED for conversation ${conversation.idForLogging()}`
);
conversation.set({
sealedSender: SEALED_SENDER.UNRESTRICTED,
});
}
await window.Signal.Data.updateConversation(
conversation.id,
conversation.attributes,
{ Conversation: Whisper.Conversation }
);
}
})
);
},
async updateLastMessage() { async updateLastMessage() {
if (!this.id) { if (!this.id) {
return; return;
@ -2189,31 +2099,26 @@
window.log.info(`Sending ${read.length} read receipts`); window.log.info(`Sending ${read.length} read receipts`);
// Because syncReadMessages sends to our other devices, and sendReadReceipts goes // Because syncReadMessages sends to our other devices, and sendReadReceipts goes
// to a contact, we need accessKeys for both. // to a contact, we need accessKeys for both.
const { sendOptions } = ConversationController.prepareForSend( await textsecure.messaging.syncReadMessages(read);
this.ourNumber,
{ syncMessage: true } if (storage.get('read-receipt-setting')) {
); await Promise.all(
await textsecure.messaging.syncReadMessages(read, sendOptions); _.map(_.groupBy(read, 'sender'), async (receipts, sender) => {
const timestamps = _.map(receipts, 'timestamp');
// FIXME AUDRIC const receiptMessage = new libsession.Messages.Outgoing.ReadReceiptMessage(
// if (storage.get('read-receipt-setting')) { {
// await Promise.all( timestamp: Date.now(),
// _.map(_.groupBy(read, 'sender'), async (receipts, sender) => { timestamps,
// const timestamps = _.map(receipts, 'timestamp'); }
// const receiptMessage = new libsession.Messages.Outgoing.ReadReceiptMessage( );
// {
// timestamp: Date.now(), const device = new libsession.Types.PubKey(sender);
// timestamps, await libsession
// } .getMessageQueue()
// ); .sendUsingMultiDevice(device, receiptMessage);
})
// const device = new libsession.Types.PubKey(sender); );
// await libsession }
// .getMessageQueue()
// .sendUsingMultiDevice(device, receiptMessage);
// })
// );
// }
} }
}, },

@ -14,6 +14,8 @@ import { handleUnpairRequest } from './multidevice';
import { downloadAttachment } from './attachments'; import { downloadAttachment } from './attachments';
import _ from 'lodash'; import _ from 'lodash';
import { StringUtils } from '../session/utils'; import { StringUtils } from '../session/utils';
import { DeliveryReceiptMessage } from '../session/messages/outgoing';
import { getMessageQueue } from '../session';
export async function updateProfile( export async function updateProfile(
conversation: any, conversation: any,
@ -528,13 +530,12 @@ function createMessage(
} }
function sendDeliveryReceipt(source: string, timestamp: any) { function sendDeliveryReceipt(source: string, timestamp: any) {
// FIXME audric const receiptMessage = new DeliveryReceiptMessage({
// const receiptMessage = new DeliveryReceiptMessage({ timestamp: Date.now(),
// timestamp: Date.now(), timestamps: [timestamp],
// timestamps: [timestamp], });
// }); const device = new PubKey(source);
// const device = new PubKey(source); void getMessageQueue().sendUsingMultiDevice(device, receiptMessage);
// await getMessageQueue().sendUsingMultiDevice(device, receiptMessage);
} }
interface MessageEvent { interface MessageEvent {

Loading…
Cancel
Save