]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/SendMessageResult.java
Update libsignal-service-java
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / SendMessageResult.java
1 package org.asamk.signal.manager.api;
2
3 import org.asamk.signal.manager.helper.RecipientAddressResolver;
4 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
5 import org.asamk.signal.manager.storage.recipients.RecipientResolver;
6 import org.signal.libsignal.protocol.IdentityKey;
7
8 public record SendMessageResult(
9 RecipientAddress address,
10 boolean isSuccess,
11 boolean isNetworkFailure,
12 boolean isUnregisteredFailure,
13 boolean isIdentityFailure,
14 boolean isRateLimitFailure,
15 ProofRequiredException proofRequiredFailure
16 ) {
17
18 public static SendMessageResult success(RecipientAddress address) {
19 return new SendMessageResult(address, true, false, false, false, false, null);
20 }
21
22 public static SendMessageResult networkFailure(RecipientAddress address) {
23 return new SendMessageResult(address, false, true, false, false, false, null);
24 }
25
26 public static SendMessageResult unregisteredFailure(RecipientAddress address) {
27 return new SendMessageResult(address, false, false, true, false, false, null);
28 }
29
30 public static SendMessageResult identityFailure(RecipientAddress address, IdentityKey identityKey) {
31 return new SendMessageResult(address, false, false, false, true, false, null);
32 }
33
34 public static SendMessageResult proofRequiredFailure(
35 RecipientAddress address, ProofRequiredException proofRequiredException
36 ) {
37 return new SendMessageResult(address, false, true, false, false, false, proofRequiredException);
38 }
39
40 public static SendMessageResult from(
41 final org.whispersystems.signalservice.api.messages.SendMessageResult sendMessageResult,
42 RecipientResolver recipientResolver,
43 RecipientAddressResolver addressResolver
44 ) {
45 return new SendMessageResult(addressResolver.resolveRecipientAddress(recipientResolver.resolveRecipient(
46 sendMessageResult.getAddress())),
47 sendMessageResult.isSuccess(),
48 sendMessageResult.isNetworkFailure(),
49 sendMessageResult.isUnregisteredFailure(),
50 sendMessageResult.getIdentityFailure() != null,
51 sendMessageResult.getRateLimitFailure() != null,
52 sendMessageResult.getProofRequiredFailure() == null
53 ? null
54 : new ProofRequiredException(sendMessageResult.getProofRequiredFailure()));
55 }
56 }