Skip to content

Commit

Permalink
Send self messages only as sync messages
Browse files Browse the repository at this point in the history
To align with the way Note to Self messages are implemented on Android
  • Loading branch information
AsamK committed Mar 23, 2019
1 parent 6f7350d commit 2471445
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions src/main/java/org/asamk/signal/manager/Manager.java
Original file line number Diff line number Diff line change
Expand Up @@ -773,6 +773,24 @@ private List<SendMessageResult> sendMessage(SignalServiceDataMessage.Builder mes
account.getSignalProtocolStore().saveIdentity(e.getE164Number(), e.getIdentityKey(), TrustLevel.UNTRUSTED);
return Collections.emptyList();
}
} else if (recipientsTS.size() == 1 && recipientsTS.contains(new SignalServiceAddress(username))) {
SignalServiceAddress recipient = new SignalServiceAddress(username);
final Optional<UnidentifiedAccessPair> unidentifiedAccess = getAccessFor(recipient);
SentTranscriptMessage transcript = new SentTranscriptMessage(recipient.getNumber(),
message.getTimestamp(),
message,
message.getExpiresInSeconds(),
Collections.singletonMap(recipient.getNumber(), unidentifiedAccess.isPresent()));
SignalServiceSyncMessage syncMessage = SignalServiceSyncMessage.forSentTranscript(transcript);

List<SendMessageResult> results = new ArrayList<>(recipientsTS.size());
try {
messageSender.sendMessage(syncMessage, unidentifiedAccess);
} catch (UntrustedIdentityException e) {
account.getSignalProtocolStore().saveIdentity(e.getE164Number(), e.getIdentityKey(), TrustLevel.UNTRUSTED);
results.add(SendMessageResult.identityFailure(recipient, e.getIdentityKey()));
}
return results;
} else {
// Send to all individually, so sync messages are sent correctly
List<SendMessageResult> results = new ArrayList<>(recipientsTS.size());
Expand Down

0 comments on commit 2471445

Please sign in to comment.