AzureCommunicationUI/sdk/AzureCommunicationUICalling/Sources/Presentation/SwiftUI/ViewComponents/LeaveCallConfirmation/LeaveCallConfirmationViewModel.swift (44 lines of code) (raw):

// // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // import Foundation internal class LeaveCallConfirmationViewModel: ObservableObject { @Published var isDisplayed = false @Published var options: [BaseDrawerItemViewModel] let endCall: () -> Void let dismissConfirmation: () -> Void init(state: AppState, localizationProvider: LocalizationProviderProtocol, endCall: @escaping () -> Void, dismissConfirmation: @escaping() -> Void) { self.isDisplayed = state.navigationState.endCallConfirmationVisible let title = localizationProvider.getLocalizedString(LocalizationKey.leaveCallListHeader) let leaveText = localizationProvider.getLocalizedString(LocalizationKey.leaveCall) let cancelText = localizationProvider.getLocalizedString(LocalizationKey.cancel) self.options = [ TitleDrawerListItemViewModel(title: title, accessibilityIdentifier: AccessibilityIdentifier .leaveCallConfirmTitleAccessibilityID .rawValue), DrawerGenericItemViewModel( title: leaveText, accessibilityIdentifier: AccessibilityIdentifier.leaveCallAccessibilityID.rawValue, accessibilityTraits: [.isButton], action: { endCall() }, startCompositeIcon: .endCallRegular), DrawerGenericItemViewModel( title: cancelText, accessibilityIdentifier: AccessibilityIdentifier.cancelAccessibilityID.rawValue, accessibilityTraits: [.isButton], action: { dismissConfirmation() }, startCompositeIcon: .dismiss) ] self.endCall = endCall self.dismissConfirmation = dismissConfirmation } func update(state: AppState) { self.isDisplayed = state.navigationState.endCallConfirmationVisible && state.visibilityState.currentStatus == .visible } }