Skip to content

Commit fd98cce

Browse files
committed
Don't send read receipt if disabled in configuration
Only send sync read message in this case
1 parent 4f4a4b9 commit fd98cce

1 file changed

Lines changed: 14 additions & 7 deletions

File tree

‎lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java‎

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -794,13 +794,20 @@ private SendMessageResults sendReceiptMessage(
794794
) {
795795
try {
796796
final var recipientId = context.getRecipientHelper().resolveRecipient(sender);
797-
final var result = context.getSendHelper().sendReceiptMessage(receiptMessage, recipientId);
797+
List<SendMessageResult> results;
798+
if (receiptMessage.isDeliveryReceipt() || !Boolean.FALSE.equals(account.getConfigurationStore()
799+
.getReadReceipts())) {
800+
final var result = context.getSendHelper().sendReceiptMessage(receiptMessage, recipientId);
801+
results = List.of(toSendMessageResult(result));
802+
} else {
803+
results = List.of();
804+
}
798805

799806
final var aci = account.getRecipientAddressResolver().resolveRecipientAddress(recipientId).aci();
800807
if (aci.isPresent()) {
801808
context.getSyncHelper().sendSyncReceiptMessage(aci.get(), receiptMessage);
802809
}
803-
return new SendMessageResults(timestamp, Map.of(sender, List.of(toSendMessageResult(result))));
810+
return new SendMessageResults(timestamp, Map.of(sender, results));
804811
} catch (UnregisteredRecipientException e) {
805812
return new SendMessageResults(timestamp,
806813
Map.of(sender, List.of(SendMessageResult.unregisteredFailure(sender.toPartialRecipientAddress()))));
@@ -1870,7 +1877,7 @@ public void sendCallOffer(
18701877
var callMessage = SignalServiceCallMessage.forOffer(offerMessage, null);
18711878
try {
18721879
dependencies.getMessageSender().sendCallMessage(address, null, callMessage);
1873-
} catch (org.whispersystems.signalservice.api.crypto.UntrustedIdentityException e) {
1880+
} catch (UntrustedIdentityException e) {
18741881
throw new IOException("Untrusted identity for call recipient", e);
18751882
} catch (NoSessionException e) {
18761883
throw new IOException("No session for call recipient", e);
@@ -1889,7 +1896,7 @@ public void sendCallAnswer(
18891896
var callMessage = SignalServiceCallMessage.forAnswer(answerMessage, null);
18901897
try {
18911898
dependencies.getMessageSender().sendCallMessage(address, null, callMessage);
1892-
} catch (org.whispersystems.signalservice.api.crypto.UntrustedIdentityException e) {
1899+
} catch (UntrustedIdentityException e) {
18931900
throw new IOException("Untrusted identity for call recipient", e);
18941901
} catch (NoSessionException e) {
18951902
throw new IOException("No session for call recipient", e);
@@ -1908,7 +1915,7 @@ public void sendIceUpdate(
19081915
var callMessage = SignalServiceCallMessage.forIceUpdates(iceUpdates, null);
19091916
try {
19101917
dependencies.getMessageSender().sendCallMessage(address, null, callMessage);
1911-
} catch (org.whispersystems.signalservice.api.crypto.UntrustedIdentityException e) {
1918+
} catch (UntrustedIdentityException e) {
19121919
throw new IOException("Untrusted identity for call recipient", e);
19131920
} catch (NoSessionException e) {
19141921
throw new IOException("No session for call recipient", e);
@@ -1934,7 +1941,7 @@ public void sendHangup(
19341941
var callMessage = SignalServiceCallMessage.forHangup(hangupMessage, null);
19351942
try {
19361943
dependencies.getMessageSender().sendCallMessage(address, null, callMessage);
1937-
} catch (org.whispersystems.signalservice.api.crypto.UntrustedIdentityException e) {
1944+
} catch (UntrustedIdentityException e) {
19381945
throw new IOException("Untrusted identity for call recipient", e);
19391946
} catch (NoSessionException e) {
19401947
throw new IOException("No session for call recipient", e);
@@ -1952,7 +1959,7 @@ public void sendBusy(
19521959
var callMessage = SignalServiceCallMessage.forBusy(busyMessage, null);
19531960
try {
19541961
dependencies.getMessageSender().sendCallMessage(address, null, callMessage);
1955-
} catch (org.whispersystems.signalservice.api.crypto.UntrustedIdentityException e) {
1962+
} catch (UntrustedIdentityException e) {
19561963
throw new IOException("Untrusted identity for call recipient", e);
19571964
} catch (NoSessionException e) {
19581965
throw new IOException("No session for call recipient", e);

0 commit comments

Comments
 (0)