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