AzureCommunicationUI/sdk/AzureCommunicationUIChat/Sources/Presentation/SwiftUI/Button/IconButtonViewModel.swift (49 lines of code) (raw):

// // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // import Foundation import Combine class IconButtonViewModel: ObservableObject { enum ButtonType { case controlButton case sendButton } @Published var iconName: CompositeIcon @Published var accessibilityLabel: String? @Published var accessibilityValue: String? @Published var accessibilityHint: String? @Published var isDisabled: Bool let buttonType: ButtonType var action: (() -> Void) init(iconName: CompositeIcon, buttonType: ButtonType = .controlButton, isDisabled: Bool = false, action: @escaping (() -> Void) = {}) { self.iconName = iconName self.buttonType = buttonType self.isDisabled = isDisabled self.action = action } func update(iconName: CompositeIcon?) { if iconName != nil && self.iconName != iconName { self.iconName = iconName! } } func update(accessibilityLabel: String) { if self.accessibilityLabel != accessibilityLabel { self.accessibilityLabel = accessibilityLabel } } func update(accessibilityValue: String) { if self.accessibilityValue != accessibilityValue { self.accessibilityValue = accessibilityValue } } func update(accessibilityHint: String) { if self.accessibilityHint != accessibilityHint { self.accessibilityHint = accessibilityHint } } func update(isDisabled: Bool) { if self.isDisabled != isDisabled { self.isDisabled = isDisabled } } }