AzureCommunicationUI/sdk/AzureCommunicationUICalling/Sources/Presentation/SwiftUI/Calling/CallingViewComponent/Banner/BannerTextViewModel.swift (31 lines of code) (raw):

// // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // import Foundation class BannerTextViewModel: ObservableObject { private let accessibilityProvider: AccessibilityProviderProtocol private let localizationProvider: LocalizationProviderProtocol private(set) var title: String = "" private(set) var body: String = "" private(set) var linkDisplay: String = "" private(set) var link: String = "" private(set) var accessibilityLabel: String = "" init(accessibilityProvider: AccessibilityProviderProtocol, localizationProvider: LocalizationProviderProtocol) { self.accessibilityProvider = accessibilityProvider self.localizationProvider = localizationProvider } func update(bannerInfoType: BannerInfoType?) { if let bannerInfoType = bannerInfoType { self.title = localizationProvider.getLocalizedString(bannerInfoType.title) self.body = localizationProvider.getLocalizedString(bannerInfoType.body) self.linkDisplay = localizationProvider.getLocalizedString(bannerInfoType.linkDisplay) self.link = bannerInfoType.link } else { title = "" body = "" linkDisplay = "" link = "" } accessibilityLabel = "\(title) \(body) \(linkDisplay)" // UIKit workaround to update accessibility when focus should be changed and isModal shouldn't be set // for a consistent behaviour @AccessibilityFocusState should be used when min supported version is iOS 15+ accessibilityProvider.moveFocusToFirstElement() objectWillChange.send() } }