//
//  Copyright (c) 2019 Open Whisper Systems. All rights reserved.
//

import Foundation

extension UIAlertController {
    @objc
    public func applyAccessibilityIdentifiers() {
        for action in actions {
            guard let view = action.value(forKey: "__representer") as? UIView else {
                owsFailDebug("Missing representer.")
                continue
            }
            view.accessibilityIdentifier = action.accessibilityIdentifier
        }
    }
}

// MARK: -

extension UIAlertAction {
    private struct AssociatedKeys {
        static var AccessibilityIdentifier = "ows_accessibilityIdentifier"
    }

    @objc
    public var accessibilityIdentifier: String? {
        get {
            return objc_getAssociatedObject(self, &AssociatedKeys.AccessibilityIdentifier) as? String
        }
        set {
            objc_setAssociatedObject(self, &AssociatedKeys.AccessibilityIdentifier, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN)
        }
    }
}