Move receipts and view/read syncs to new syncTasks system
Co-authored-by: Scott Nonnenberg <scott@signal.org>
This commit is contained in:
parent
949104c316
commit
b95dd1a70f
33 changed files with 1242 additions and 612 deletions
|
@ -7,10 +7,13 @@ import { assert } from 'chai';
|
|||
import { type AciString, generateAci } from '../types/ServiceId';
|
||||
import type { MessageAttributesType } from '../model-types';
|
||||
import { SendStatus } from '../messages/MessageSendState';
|
||||
import {
|
||||
type MessageReceiptAttributesType,
|
||||
import type {
|
||||
MessageReceiptAttributesType,
|
||||
MessageReceiptType,
|
||||
} from '../messageModifiers/MessageReceipts';
|
||||
import {
|
||||
onReceipt,
|
||||
messageReceiptTypeSchema,
|
||||
} from '../messageModifiers/MessageReceipts';
|
||||
import { ReadStatus } from '../messages/MessageReadStatus';
|
||||
|
||||
|
@ -31,14 +34,16 @@ describe('MessageReceipts', () => {
|
|||
): MessageReceiptAttributesType {
|
||||
return {
|
||||
envelopeId: uuid(),
|
||||
messageSentAt,
|
||||
receiptTimestamp: 1,
|
||||
removeFromMessageReceiverCache: () => null,
|
||||
sourceConversationId,
|
||||
sourceDevice: 1,
|
||||
sourceServiceId: generateAci(),
|
||||
type,
|
||||
wasSentEncrypted: true,
|
||||
syncTaskId: uuid(),
|
||||
receiptSync: {
|
||||
messageSentAt,
|
||||
receiptTimestamp: 1,
|
||||
sourceConversationId,
|
||||
sourceDevice: 1,
|
||||
sourceServiceId: generateAci(),
|
||||
type,
|
||||
wasSentEncrypted: true,
|
||||
},
|
||||
};
|
||||
}
|
||||
it('processes all receipts in a batch', async () => {
|
||||
|
@ -78,10 +83,18 @@ describe('MessageReceipts', () => {
|
|||
});
|
||||
|
||||
await Promise.all([
|
||||
onReceipt(generateReceipt('aaaa', sentAt, MessageReceiptType.Delivery)),
|
||||
onReceipt(generateReceipt('bbbb', sentAt, MessageReceiptType.Delivery)),
|
||||
onReceipt(generateReceipt('cccc', sentAt, MessageReceiptType.Read)),
|
||||
onReceipt(generateReceipt('aaaa', sentAt, MessageReceiptType.Read)),
|
||||
onReceipt(
|
||||
generateReceipt('aaaa', sentAt, messageReceiptTypeSchema.enum.Delivery)
|
||||
),
|
||||
onReceipt(
|
||||
generateReceipt('bbbb', sentAt, messageReceiptTypeSchema.enum.Delivery)
|
||||
),
|
||||
onReceipt(
|
||||
generateReceipt('cccc', sentAt, messageReceiptTypeSchema.enum.Read)
|
||||
),
|
||||
onReceipt(
|
||||
generateReceipt('aaaa', sentAt, messageReceiptTypeSchema.enum.Read)
|
||||
),
|
||||
]);
|
||||
|
||||
const messageFromDatabase = await window.Signal.Data.getMessageById(id);
|
||||
|
@ -154,20 +167,48 @@ describe('MessageReceipts', () => {
|
|||
|
||||
await Promise.all([
|
||||
// send receipts for original message
|
||||
onReceipt(generateReceipt('aaaa', sentAt, MessageReceiptType.Delivery)),
|
||||
onReceipt(generateReceipt('bbbb', sentAt, MessageReceiptType.Delivery)),
|
||||
onReceipt(generateReceipt('cccc', sentAt, MessageReceiptType.Read)),
|
||||
onReceipt(generateReceipt('aaaa', sentAt, MessageReceiptType.Read)),
|
||||
onReceipt(
|
||||
generateReceipt('aaaa', sentAt, messageReceiptTypeSchema.enum.Delivery)
|
||||
),
|
||||
onReceipt(
|
||||
generateReceipt('bbbb', sentAt, messageReceiptTypeSchema.enum.Delivery)
|
||||
),
|
||||
onReceipt(
|
||||
generateReceipt('cccc', sentAt, messageReceiptTypeSchema.enum.Read)
|
||||
),
|
||||
onReceipt(
|
||||
generateReceipt('aaaa', sentAt, messageReceiptTypeSchema.enum.Read)
|
||||
),
|
||||
|
||||
// and send receipts for edited message
|
||||
onReceipt(
|
||||
generateReceipt('aaaa', editedSentAt, MessageReceiptType.Delivery)
|
||||
generateReceipt(
|
||||
'aaaa',
|
||||
editedSentAt,
|
||||
messageReceiptTypeSchema.enum.Delivery
|
||||
)
|
||||
),
|
||||
onReceipt(
|
||||
generateReceipt('bbbb', editedSentAt, MessageReceiptType.Delivery)
|
||||
generateReceipt(
|
||||
'bbbb',
|
||||
editedSentAt,
|
||||
messageReceiptTypeSchema.enum.Delivery
|
||||
)
|
||||
),
|
||||
onReceipt(
|
||||
generateReceipt(
|
||||
'cccc',
|
||||
editedSentAt,
|
||||
messageReceiptTypeSchema.enum.Read
|
||||
)
|
||||
),
|
||||
onReceipt(
|
||||
generateReceipt(
|
||||
'bbbb',
|
||||
editedSentAt,
|
||||
messageReceiptTypeSchema.enum.Read
|
||||
)
|
||||
),
|
||||
onReceipt(generateReceipt('cccc', editedSentAt, MessageReceiptType.Read)),
|
||||
onReceipt(generateReceipt('bbbb', editedSentAt, MessageReceiptType.Read)),
|
||||
]);
|
||||
|
||||
const messageFromDatabase = await window.Signal.Data.getMessageById(id);
|
||||
|
|
|
@ -7,6 +7,7 @@ import { v4 as generateUuid } from 'uuid';
|
|||
import dataInterface from '../../sql/Client';
|
||||
import { generateAci } from '../../types/ServiceId';
|
||||
import { constantTimeEqual, getRandomBytes } from '../../Crypto';
|
||||
import { singleProtoJobQueue } from '../../jobs/singleProtoJobQueue';
|
||||
|
||||
const {
|
||||
_getAllSentProtoMessageIds,
|
||||
|
@ -148,7 +149,7 @@ describe('sql/sendLog', () => {
|
|||
|
||||
assert.strictEqual(actual.timestamp, proto.timestamp);
|
||||
|
||||
await removeMessage(id);
|
||||
await removeMessage(id, { singleProtoJobQueue });
|
||||
|
||||
assert.lengthOf(await getAllSentProtos(), 0);
|
||||
});
|
||||
|
|
|
@ -11,6 +11,7 @@ import { SignalProtocolStore } from '../../SignalProtocolStore';
|
|||
import type { ConversationModel } from '../../models/conversations';
|
||||
import * as KeyChangeListener from '../../textsecure/KeyChangeListener';
|
||||
import * as Bytes from '../../Bytes';
|
||||
import { singleProtoJobQueue } from '../../jobs/singleProtoJobQueue';
|
||||
|
||||
describe('KeyChangeListener', () => {
|
||||
let oldNumberId: string | undefined;
|
||||
|
@ -69,6 +70,7 @@ describe('KeyChangeListener', () => {
|
|||
afterEach(async () => {
|
||||
await window.Signal.Data.removeMessagesInConversation(convo.id, {
|
||||
logId: ourServiceIdWithKeyChange,
|
||||
singleProtoJobQueue,
|
||||
});
|
||||
await window.Signal.Data.removeConversation(convo.id);
|
||||
|
||||
|
@ -106,6 +108,7 @@ describe('KeyChangeListener', () => {
|
|||
afterEach(async () => {
|
||||
await window.Signal.Data.removeMessagesInConversation(groupConvo.id, {
|
||||
logId: ourServiceIdWithKeyChange,
|
||||
singleProtoJobQueue,
|
||||
});
|
||||
await window.Signal.Data.removeConversation(groupConvo.id);
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue