// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import UIKit import SessionUtilitiesKit public struct SessionNavItem: Equatable { let id: Id let image: UIImage? let style: UIBarButtonItem.Style let systemItem: UIBarButtonItem.SystemItem? let accessibilityIdentifier: String let accessibilityLabel: String? let action: (() -> Void)? // MARK: - Initialization public init( id: Id, systemItem: UIBarButtonItem.SystemItem?, accessibilityIdentifier: String, accessibilityLabel: String? = nil, action: (() -> Void)? = nil ) { self.id = id self.image = nil self.style = .plain self.systemItem = systemItem self.accessibilityIdentifier = accessibilityIdentifier self.accessibilityLabel = accessibilityLabel self.action = action } public init( id: Id, image: UIImage?, style: UIBarButtonItem.Style, accessibilityIdentifier: String, accessibilityLabel: String? = nil, action: (() -> Void)? = nil ) { self.id = id self.image = image self.style = style self.systemItem = nil self.accessibilityIdentifier = accessibilityIdentifier self.accessibilityLabel = accessibilityLabel self.action = action } // MARK: - Functions public func createBarButtonItem() -> DisposableBarButtonItem { guard let systemItem: UIBarButtonItem.SystemItem = systemItem else { return DisposableBarButtonItem( image: image, style: style, target: nil, action: nil, accessibilityIdentifier: accessibilityIdentifier, accessibilityLabel: accessibilityLabel ) } return DisposableBarButtonItem( barButtonSystemItem: systemItem, target: nil, action: nil, accessibilityIdentifier: accessibilityIdentifier, accessibilityLabel: accessibilityLabel ) } // MARK: - Conformance public static func == ( lhs: SessionNavItem, rhs: SessionNavItem ) -> Bool { return ( lhs.id == rhs.id && lhs.image == rhs.image && lhs.style == rhs.style && lhs.systemItem == rhs.systemItem && lhs.accessibilityIdentifier == rhs.accessibilityIdentifier ) } }