mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-26 20:55:10 +00:00
Use a cancelation result instead of an exception for message sends.
This commit is contained in:
committed by
Michelle Tang
parent
95837b09db
commit
42c3f7ead4
@@ -17,7 +17,6 @@ import org.thoughtcrime.securesms.net.NotPushRegisteredException;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientUtil;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
import org.whispersystems.signalservice.api.CancelationException;
|
||||
import org.whispersystems.signalservice.api.messages.SignalServiceTypingMessage;
|
||||
import org.whispersystems.signalservice.api.messages.SignalServiceTypingMessage.Action;
|
||||
|
||||
@@ -127,15 +126,11 @@ public class TypingSendJob extends BaseJob {
|
||||
|
||||
SignalServiceTypingMessage typingMessage = new SignalServiceTypingMessage(typing ? Action.STARTED : Action.STOPPED, System.currentTimeMillis(), groupId);
|
||||
|
||||
try {
|
||||
GroupSendUtil.sendTypingMessage(context,
|
||||
recipient.getGroupId().map(GroupId::requireV2).orElse(null),
|
||||
recipients,
|
||||
typingMessage,
|
||||
this::isCanceled);
|
||||
} catch (CancelationException e) {
|
||||
Log.w(TAG, "Canceled during send!");
|
||||
}
|
||||
GroupSendUtil.sendTypingMessage(context,
|
||||
recipient.getGroupId().map(GroupId::requireV2).orElse(null),
|
||||
recipients,
|
||||
typingMessage,
|
||||
this::isCanceled);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -35,7 +35,6 @@ import org.thoughtcrime.securesms.util.RecipientAccessList;
|
||||
import org.thoughtcrime.securesms.util.RemoteConfig;
|
||||
import org.thoughtcrime.securesms.util.SignalLocalMetrics;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
import org.whispersystems.signalservice.api.CancelationException;
|
||||
import org.whispersystems.signalservice.api.SignalServiceMessageSender;
|
||||
import org.whispersystems.signalservice.api.SignalServiceMessageSender.LegacyGroupEvents;
|
||||
import org.whispersystems.signalservice.api.SignalServiceMessageSender.SenderKeyGroupEvents;
|
||||
@@ -446,7 +445,20 @@ public final class GroupSendUtil {
|
||||
}
|
||||
|
||||
if (cancelationSignal != null && cancelationSignal.isCanceled()) {
|
||||
throw new CancelationException();
|
||||
Log.i(TAG, "Send canceled. Adding canceled results for " + legacyTargets.size() + " remaining legacy targets.");
|
||||
for (Recipient recipient : legacyTargets) {
|
||||
allResults.add(SendMessageResult.canceledFailure(recipients.getAddress(recipient.getId())));
|
||||
}
|
||||
|
||||
if (unregisteredTargets.size() > 0) {
|
||||
List<SendMessageResult> unregisteredResults = unregisteredTargets.stream()
|
||||
.filter(Recipient::getHasServiceId)
|
||||
.map(t -> SendMessageResult.unregisteredFailure(new SignalServiceAddress(t.requireServiceId(), t.getE164().orElse(null))))
|
||||
.collect(Collectors.toList());
|
||||
allResults.addAll(unregisteredResults);
|
||||
}
|
||||
|
||||
return allResults;
|
||||
}
|
||||
|
||||
boolean onlyTargetIsSelfWithLinkedDevice = legacyTargets.isEmpty() && senderKeyTargets.isEmpty() && SignalStore.account().isMultiDevice();
|
||||
|
||||
Reference in New Issue
Block a user