mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Swift
		
	
// 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
 | 
						|
    case requiredThreadNotInConfig
 | 
						|
 | 
						|
    public var isRetryable: Bool {
 | 
						|
        switch self {
 | 
						|
            case .duplicateMessage, .duplicateMessageNewSnode, .duplicateControlMessage,
 | 
						|
                .invalidMessage, .unknownMessage, .unknownEnvelopeType, .invalidSignature,
 | 
						|
                .noData, .senderBlocked, .noThread, .selfSend, .decryptionFailed,
 | 
						|
                .invalidSharedConfigMessageHandling, .requiredThreadNotInConfig:
 | 
						|
                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."
 | 
						|
            case .requiredThreadNotInConfig: return "Required thread not in config."
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |