|
|
|
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
|
|
|
|
import Foundation
|
|
|
|
|
|
|
|
public enum MessageReceiverError: LocalizedError {
|
|
|
|
case duplicateMessage
|
|
|
|
case duplicateMessageNewSnode
|
|
|
|
case duplicateControlMessage
|
|
|
|
case invalidMessage
|
|
|
|
case unknownMessage
|
|
|
|
case unknownEnvelopeType
|
|
|
|
case noUserX25519KeyPair
|
|
|
|
case noUserED25519KeyPair
|
|
|
|
case invalidSignature
|
|
|
|
case noData
|
|
|
|
case senderBlocked
|
|
|
|
case noThread
|
|
|
|
case selfSend
|
|
|
|
case decryptionFailed
|
|
|
|
case invalidGroupPublicKey
|
|
|
|
case noGroupKeyPair
|
|
|
|
case invalidSharedConfigMessageHandling
|
|
|
|
|
|
|
|
public var isRetryable: Bool {
|
|
|
|
switch self {
|
|
|
|
case .duplicateMessage, .duplicateMessageNewSnode, .duplicateControlMessage,
|
|
|
|
.invalidMessage, .unknownMessage, .unknownEnvelopeType, .invalidSignature,
|
|
|
|
.noData, .senderBlocked, .noThread, .selfSend, .decryptionFailed,
|
|
|
|
.invalidSharedConfigMessageHandling:
|
|
|
|
return false
|
|
|
|
|
|
|
|
default: return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public var errorDescription: String? {
|
|
|
|
switch self {
|
|
|
|
case .duplicateMessage: return "Duplicate message."
|
|
|
|
case .duplicateMessageNewSnode: return "Duplicate message from different service node."
|
|
|
|
case .duplicateControlMessage: return "Duplicate control message."
|
|
|
|
case .invalidMessage: return "Invalid message."
|
|
|
|
case .unknownMessage: return "Unknown message type."
|
|
|
|
case .unknownEnvelopeType: return "Unknown envelope type."
|
|
|
|
case .noUserX25519KeyPair: return "Couldn't find user X25519 key pair."
|
|
|
|
case .noUserED25519KeyPair: return "Couldn't find user ED25519 key pair."
|
|
|
|
case .invalidSignature: return "Invalid message signature."
|
|
|
|
case .noData: return "Received an empty envelope."
|
|
|
|
case .senderBlocked: return "Received a message from a blocked user."
|
|
|
|
case .noThread: return "Couldn't find thread for message."
|
|
|
|
case .selfSend: return "Message addressed at self."
|
|
|
|
case .decryptionFailed: return "Decryption failed."
|
|
|
|
|
|
|
|
// Shared sender keys
|
|
|
|
case .invalidGroupPublicKey: return "Invalid group public key."
|
|
|
|
case .noGroupKeyPair: return "Missing group key pair."
|
|
|
|
|
|
|
|
case .invalidSharedConfigMessageHandling: return "Invalid handling of a shared config message"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|