]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/SendMessageResult.java
c54e9f2795886bbb7d053695825eaa7fbcec37cb
[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.whispersystems.libsignal.IdentityKey;
7
8 public record SendMessageResult(
9 RecipientAddress address,
10 boolean isSuccess,
11 boolean isNetworkFailure,
12 boolean isUnregisteredFailure,
13 boolean isIdentityFailure,
14 ProofRequiredException proofRequiredFailure
15 ) {
16
17 public static SendMessageResult success(RecipientAddress address) {
18 return new SendMessageResult(address, true, false, false, false, null);
19 }
20
21 public static SendMessageResult networkFailure(RecipientAddress address) {
22 return new SendMessageResult(address, false, true, false, false, null);
23 }
24
25 public static SendMessageResult unregisteredFailure(RecipientAddress address) {
26 return new SendMessageResult(address, false, false, true, false, null);
27 }
28
29 public static SendMessageResult identityFailure(RecipientAddress address, IdentityKey identityKey) {
30 return new SendMessageResult(address, false, false, false, true, null);
31 }
32
33 public static SendMessageResult proofRequiredFailure(
34 RecipientAddress address, ProofRequiredException proofRequiredException
35 ) {
36 return new SendMessageResult(address, false, true, 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())),
46 sendMessageResult.isSuccess(),
47 sendMessageResult.isNetworkFailure(),
48 sendMessageResult.isUnregisteredFailure(),
49 sendMessageResult.getIdentityFailure() != null,
50 sendMessageResult.getProofRequiredFailure() == null
51 ? null
52 : new ProofRequiredException(sendMessageResult.getProofRequiredFailure()));
53 }
54
55 public record IdentityFailure(IdentityKey identityKey) {}
56 }