Revert "Refactor outbound delivery state"

This reverts commit 9c48a95eb5.
This commit is contained in:
Fedor Indutny 2021-07-12 16:51:45 -07:00 committed by GitHub
parent 77668c3247
commit ad217c808d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 694 additions and 3197 deletions

View file

@ -1,7 +1,7 @@
// Copyright 2020-2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { has, isNumber, noop } from 'lodash';
import { isNumber, noop } from 'lodash';
import { bindActionCreators } from 'redux';
import { render } from 'react-dom';
import {
@ -82,10 +82,6 @@ import { Reactions } from './messageModifiers/Reactions';
import { ReadReceipts } from './messageModifiers/ReadReceipts';
import { ReadSyncs } from './messageModifiers/ReadSyncs';
import { ViewSyncs } from './messageModifiers/ViewSyncs';
import {
SendStateByConversationId,
SendStatus,
} from './messages/MessageSendState';
import * as AttachmentDownloads from './messageModifiers/AttachmentDownloads';
import {
SystemTraySetting,
@ -3155,39 +3151,15 @@ export async function startApp(): Promise<void> {
const now = Date.now();
const timestamp = data.timestamp || now;
const ourId = window.ConversationController.getOurConversationIdOrThrow();
const { unidentifiedStatus = [] } = data;
const sendStateByConversationId: SendStateByConversationId = unidentifiedStatus.reduce(
(result: SendStateByConversationId, { destinationUuid, destination }) => {
const conversationId = window.ConversationController.ensureContactIds({
uuid: destinationUuid,
e164: destination,
highTrust: true,
});
if (!conversationId || conversationId === ourId) {
return result;
}
return {
...result,
[conversationId]: {
status: SendStatus.Pending,
updatedAt: timestamp,
},
};
},
{
[ourId]: {
status: SendStatus.Sent,
updatedAt: timestamp,
},
}
);
let sentTo: Array<string> = [];
let unidentifiedDeliveries: Array<string> = [];
if (unidentifiedStatus.length) {
sentTo = unidentifiedStatus
.map(item => item.destinationUuid || item.destination)
.filter(isNotNil);
const unidentified = window._.filter(data.unidentifiedStatus, item =>
Boolean(item.unidentified)
);
@ -3202,12 +3174,13 @@ export async function startApp(): Promise<void> {
sourceDevice: data.device,
sent_at: timestamp,
serverTimestamp: data.serverTimestamp,
sent_to: sentTo,
received_at: data.receivedAtCounter,
received_at_ms: data.receivedAtDate,
conversationId: descriptor.id,
timestamp,
type: 'outgoing',
sendStateByConversationId,
sent: true,
unidentifiedDeliveries,
expirationStartTimestamp: Math.min(
data.expirationStartTimestamp || timestamp,
@ -3586,6 +3559,33 @@ export async function startApp(): Promise<void> {
window.log.warn('background onError: Doing nothing with incoming error');
}
function isInList(
conversation: ConversationModel,
list: Array<string | undefined | null> | undefined
): boolean {
const uuid = conversation.get('uuid');
const e164 = conversation.get('e164');
const id = conversation.get('id');
if (!list) {
return false;
}
if (list.includes(id)) {
return true;
}
if (uuid && list.includes(uuid)) {
return true;
}
if (e164 && list.includes(e164)) {
return true;
}
return false;
}
async function archiveSessionOnMatch({
requesterUuid,
requesterDevice,
@ -3707,9 +3707,11 @@ export async function startApp(): Promise<void> {
return false;
}
const sendStateByConversationId =
message.get('sendStateByConversationId') || {};
return has(sendStateByConversationId, requesterConversation.id);
if (!isInList(requesterConversation, message.get('sent_to'))) {
return false;
}
return true;
});
if (!targetMessage) {