import org.asamk.signal.manager.helper.RecipientAddressResolver;
import org.asamk.signal.manager.storage.recipients.RecipientResolver;
-import org.signal.libsignal.protocol.IdentityKey;
public record SendMessageResult(
RecipientAddress address,
boolean isUnregisteredFailure,
boolean isIdentityFailure,
boolean isRateLimitFailure,
- ProofRequiredException proofRequiredFailure
+ ProofRequiredException proofRequiredFailure,
+ boolean isInvalidPreKeyFailure
) {
- public static SendMessageResult success(RecipientAddress address) {
- return new SendMessageResult(address, true, false, false, false, false, null);
- }
-
- public static SendMessageResult networkFailure(RecipientAddress address) {
- return new SendMessageResult(address, false, true, false, false, false, null);
- }
-
public static SendMessageResult unregisteredFailure(RecipientAddress address) {
- return new SendMessageResult(address, false, false, true, false, false, null);
- }
-
- public static SendMessageResult identityFailure(RecipientAddress address, IdentityKey identityKey) {
- return new SendMessageResult(address, false, false, false, true, false, null);
- }
-
- public static SendMessageResult proofRequiredFailure(
- RecipientAddress address, ProofRequiredException proofRequiredException
- ) {
- return new SendMessageResult(address, false, true, false, false, false, proofRequiredException);
+ return new SendMessageResult(address, false, false, true, false, false, null, false);
}
public static SendMessageResult from(
sendMessageResult.getRateLimitFailure() != null || sendMessageResult.getProofRequiredFailure() != null,
sendMessageResult.getProofRequiredFailure() == null
? null
- : new ProofRequiredException(sendMessageResult.getProofRequiredFailure()));
+ : new ProofRequiredException(sendMessageResult.getProofRequiredFailure()),
+ sendMessageResult.isInvalidPreKeyFailure());
}
}
? Type.NETWORK_FAILURE
: result.isUnregisteredFailure()
? Type.UNREGISTERED_FAILURE
- : Type.IDENTITY_FAILURE,
+ : result.isInvalidPreKeyFailure()
+ ? Type.INVALID_PRE_KEY_FAILURE
+ : Type.IDENTITY_FAILURE,
result.proofRequiredFailure() != null ? result.proofRequiredFailure().getToken() : null,
result.proofRequiredFailure() != null ? result.proofRequiredFailure().getRetryAfterSeconds() : null);
}
UNREGISTERED_FAILURE,
IDENTITY_FAILURE,
RATE_LIMIT_FAILURE,
+ INVALID_PRE_KEY_FAILURE,
}
}