From e778ab2e3aaa50867a46565cd6ab2804825afbae Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 13 Oct 2020 13:50:21 -0400 Subject: [PATCH] Fix issue with remote delete sent transcripts. --- .../securesms/util/RemoteDeleteUtil.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteDeleteUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteDeleteUtil.java index 1e295b5f7a..c7912bdf52 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteDeleteUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteDeleteUtil.java @@ -18,12 +18,18 @@ public final class RemoteDeleteUtil { private RemoteDeleteUtil() {} public static boolean isValidReceive(@NonNull MessageRecord targetMessage, @NonNull Recipient deleteSender, long deleteServerTimestamp) { - boolean isValidSender = (deleteSender.isLocalNumber() && targetMessage.isOutgoing()) || - (!deleteSender.isLocalNumber() && !targetMessage.isOutgoing()); + boolean isValidIncomingOutgoing = (deleteSender.isLocalNumber() && targetMessage.isOutgoing()) || + (!deleteSender.isLocalNumber() && !targetMessage.isOutgoing()); - return isValidSender && - targetMessage.getIndividualRecipient().equals(deleteSender) && - (deleteServerTimestamp - targetMessage.getServerTimestamp()) < RECEIVE_THRESHOLD; + boolean isValidSender = targetMessage.getIndividualRecipient().equals(deleteSender) || + deleteSender.isLocalNumber() && targetMessage.isOutgoing(); + + long messageTimestamp = deleteSender.isLocalNumber() && targetMessage.isOutgoing() ? targetMessage.getDateSent() + : targetMessage.getServerTimestamp(); + + return isValidIncomingOutgoing && + isValidSender && + (deleteServerTimestamp - messageTimestamp) < RECEIVE_THRESHOLD; } public static boolean isValidSend(@NonNull Collection targetMessages, long currentTime) {