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.
		
		
		
		
		
			
		
			
				
	
	
		
			86 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			86 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Swift
		
	
// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
 | 
						|
//
 | 
						|
// stringlint:disable
 | 
						|
 | 
						|
import Foundation
 | 
						|
import SessionSnodeKit
 | 
						|
import SessionMessagingKit
 | 
						|
import SessionUtilitiesKit
 | 
						|
 | 
						|
enum NotificationResolution: CustomStringConvertible {
 | 
						|
    case success(PushNotificationAPI.NotificationMetadata)
 | 
						|
    case successCall
 | 
						|
    
 | 
						|
    case ignoreDueToMainAppRunning
 | 
						|
    case ignoreDueToNoContentFromApple
 | 
						|
    case ignoreDueToNonLegacyGroupLegacyNotification
 | 
						|
    case ignoreDueToOutdatedMessage
 | 
						|
    case ignoreDueToRequiresNoNotification
 | 
						|
    case ignoreDueToDuplicateMessage
 | 
						|
    case ignoreDueToContentSize(PushNotificationAPI.NotificationMetadata)
 | 
						|
    
 | 
						|
    case errorTimeout
 | 
						|
    case errorNotReadyForExtensions
 | 
						|
    case errorNoContentLegacy
 | 
						|
    case errorDatabaseInvalid
 | 
						|
    case errorDatabaseMigrations(Error)
 | 
						|
    case errorTransactionFailure
 | 
						|
    case errorLegacyGroupKeysMissing
 | 
						|
    case errorCallFailure
 | 
						|
    case errorNoContent(PushNotificationAPI.NotificationMetadata)
 | 
						|
    case errorProcessing(PushNotificationAPI.ProcessResult)
 | 
						|
    case errorMessageHandling(MessageReceiverError)
 | 
						|
    case errorOther(Error)
 | 
						|
    
 | 
						|
    public var description: String {
 | 
						|
        switch self {
 | 
						|
            case .success(let metadata): return "Completed: Handled notification from namespace: \(metadata.namespace)"
 | 
						|
            case .successCall: return "Completed: Notified main app of call message"
 | 
						|
            
 | 
						|
            case .ignoreDueToMainAppRunning: return "Ignored: Main app running"
 | 
						|
            case .ignoreDueToNoContentFromApple: return "Ignored: No content"
 | 
						|
            case .ignoreDueToNonLegacyGroupLegacyNotification: return "Ignored: Non-group legacy notification"
 | 
						|
            case .ignoreDueToOutdatedMessage: return "Ignored: Alteady seen message"
 | 
						|
            case .ignoreDueToRequiresNoNotification: return "Ignored: Message requires no notification"
 | 
						|
            
 | 
						|
            case .ignoreDueToDuplicateMessage:
 | 
						|
                return "Ignored: Duplicate message (probably received it just before going to the background)"
 | 
						|
            
 | 
						|
            case .ignoreDueToContentSize(let metadata):
 | 
						|
                return "Ignored: Notification content from namespace: \(metadata.namespace) was too long: \(metadata.dataLength)"
 | 
						|
            
 | 
						|
            case .errorTimeout: return "Failed: Execution time expired"
 | 
						|
            case .errorNotReadyForExtensions: return "Failed: App not ready for extensions"
 | 
						|
            case .errorNoContentLegacy: return "Failed: Legacy notification contained invalid payload"
 | 
						|
            case .errorDatabaseInvalid: return "Failed: Database in invalid state"
 | 
						|
            case .errorDatabaseMigrations(let error): return "Failed: Database migration error: \(error)"
 | 
						|
            case .errorTransactionFailure: return "Failed: Unexpected database transaction rollback"
 | 
						|
            case .errorLegacyGroupKeysMissing: return "Failed: No legacy group decryption keys"
 | 
						|
            case .errorCallFailure: return "Failed: Failed to handle call message"
 | 
						|
            
 | 
						|
            case .errorNoContent(let metadata):
 | 
						|
                return "Failed: Notification from namespace: \(metadata.namespace) contained no content, expected dataLength: \(metadata.dataLength)"
 | 
						|
                
 | 
						|
            case .errorProcessing(let result): return "Failed: Unable to process notification (\(result))"
 | 
						|
            case .errorMessageHandling(let error): return "Failed: Handling the message (\(error))"
 | 
						|
            case .errorOther(let error): return "Error: Unhandled error occurred (\(error))"
 | 
						|
        }
 | 
						|
    }
 | 
						|
    
 | 
						|
    public var logLevel: Log.Level {
 | 
						|
        switch self {
 | 
						|
            case .success, .successCall, .ignoreDueToMainAppRunning, .ignoreDueToNoContentFromApple,
 | 
						|
                .ignoreDueToNonLegacyGroupLegacyNotification, .ignoreDueToOutdatedMessage,
 | 
						|
                .ignoreDueToRequiresNoNotification, .ignoreDueToDuplicateMessage, .ignoreDueToContentSize:
 | 
						|
                return .info
 | 
						|
                
 | 
						|
            case .errorNotReadyForExtensions, .errorNoContentLegacy, .errorNoContent, .errorCallFailure:
 | 
						|
                return .warn
 | 
						|
                
 | 
						|
            case .errorTimeout, .errorDatabaseInvalid, .errorDatabaseMigrations, .errorTransactionFailure,
 | 
						|
                    .errorLegacyGroupKeysMissing, .errorProcessing, .errorMessageHandling, .errorOther:
 | 
						|
                return .error
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |