AzureCommunicationUI/sdk/AzureCommunicationUICalling/Sources/Presentation/Factories/CompositeViewModelFactoryProtocols.swift (131 lines of code) (raw):
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
//
import FluentUI
import Foundation
import SwiftUI
protocol CompositeViewModelFactoryProtocol {
// MARK: CompositeViewModels
func getSetupViewModel() -> SetupViewModel
func getCallingViewModel(rendererViewManager: RendererViewManager) -> CallingViewModel
// MARK: ComponentViewModels
func makeIconButtonViewModel(iconName: CompositeIcon,
buttonType: IconButtonViewModel.ButtonType,
isDisabled: Bool,
action: @escaping (() -> Void)) -> IconButtonViewModel
func makeIconButtonViewModel(iconName: CompositeIcon,
buttonType: IconButtonViewModel.ButtonType,
isDisabled: Bool,
isVisible: Bool,
action: @escaping (() -> Void)) -> IconButtonViewModel
func makeIconButtonViewModel(icon: UIImage,
buttonType: IconButtonViewModel.ButtonType,
isDisabled: Bool,
isVisible: Bool,
action: @escaping (() -> Void)) -> IconButtonViewModel
func makeIconWithLabelButtonViewModel<ButtonStateType>(
selectedButtonState: ButtonStateType,
localizationProvider: LocalizationProviderProtocol,
buttonTypeColor: IconWithLabelButtonViewModel<ButtonStateType>.ButtonTypeColor,
isDisabled: Bool,
action: @escaping (() -> Void)) -> IconWithLabelButtonViewModel<ButtonStateType>
func makeLocalVideoViewModel(dispatchAction: @escaping ActionDispatch) -> LocalVideoViewModel
func makePrimaryButtonViewModel(buttonStyle: FluentUI.ButtonStyle,
buttonLabel: String,
iconName: CompositeIcon?,
isDisabled: Bool,
paddings: CompositeButton.Paddings?,
action: @escaping (() -> Void)) -> PrimaryButtonViewModel
func makeAudioDevicesListViewModel(dispatchAction: @escaping ActionDispatch,
localUserState: LocalUserState) -> AudioDevicesListViewModel
func makeCaptionsLanguageListViewModel (dispatchAction: @escaping ActionDispatch,
state: AppState) -> CaptionsLanguageListViewModel
func makeCaptionsRttInfoViewModel (state: AppState,
captionsOptions: CaptionsOptions) -> CaptionsRttInfoViewModel
func makeCaptionsErrorViewModel (dispatchAction: @escaping ActionDispatch) -> CaptionsErrorViewModel
func makeErrorInfoViewModel(title: String,
subtitle: String) -> ErrorInfoViewModel
// MARK: CallingViewModels
func makeLobbyOverlayViewModel() -> LobbyOverlayViewModel
func makeLoadingOverlayViewModel() -> LoadingOverlayViewModel
func makeOnHoldOverlayViewModel(resumeAction: @escaping (() -> Void)) -> OnHoldOverlayViewModel
func makeControlBarViewModel(dispatchAction: @escaping ActionDispatch,
onEndCallTapped: @escaping (() -> Void),
localUserState: LocalUserState,
capabilitiesManager: CapabilitiesManager,
buttonViewDataState: ButtonViewDataState) -> ControlBarViewModel
func makeInfoHeaderViewModel(dispatchAction: @escaping ActionDispatch,
localUserState: LocalUserState,
callScreenInfoHeaderState: CallScreenInfoHeaderState,
buttonViewDataState: ButtonViewDataState,
controlHeaderViewData: CallScreenHeaderViewData?
) -> InfoHeaderViewModel
func makeLobbyWaitingHeaderViewModel(localUserState: LocalUserState,
dispatchAction: @escaping ActionDispatch) -> LobbyWaitingHeaderViewModel
func makeLobbyActionErrorViewModel(localUserState: LocalUserState,
dispatchAction: @escaping ActionDispatch) -> LobbyErrorHeaderViewModel
func makeParticipantGridsViewModel(isIpadInterface: Bool,
rendererViewManager: RendererViewManager) -> ParticipantGridViewModel
func makeParticipantCellViewModel(participantModel: ParticipantInfoModel) -> ParticipantGridCellViewModel
func makeParticipantsListViewModel(localUserState: LocalUserState,
isDisplayed: Bool,
dispatchAction: @escaping ActionDispatch) -> ParticipantsListViewModel
func makeParticipantMenuViewModel(localUserState: LocalUserState,
isDisplayed: Bool,
dispatchAction: @escaping ActionDispatch) -> ParticipantMenuViewModel
func makeBannerViewModel(dispatchAction: @escaping ActionDispatch) -> BannerViewModel
func makeBannerTextViewModel() -> BannerTextViewModel
func makeMoreCallOptionsListViewModel(
isCaptionsAvailable: Bool,
buttonActions: ButtonActions,
controlBarOptions: CallScreenControlBarOptions?,
buttonViewDataState: ButtonViewDataState,
dispatchAction: @escaping ActionDispatch) -> MoreCallOptionsListViewModel
func makeCaptionsRttListViewModel(state: AppState,
captionsOptions: CaptionsOptions,
dispatchAction: @escaping ActionDispatch,
buttonActions: ButtonActions,
isDisplayed: Bool) -> CaptionsRttListViewModel
func makeDebugInfoSharingActivityViewModel() -> DebugInfoSharingActivityViewModel
func makeToggleListItemViewModel(title: String,
isToggleOn: Binding<Bool>,
showToggle: Bool,
accessibilityIdentifier: String,
startIcon: CompositeIcon,
isEnabled: Bool,
action: @escaping (() -> Void)) -> DrawerGenericItemViewModel
func makeLanguageListItemViewModel(title: String,
subtitle: String?,
accessibilityIdentifier: String,
startIcon: CompositeIcon,
endIcon: CompositeIcon?,
isEnabled: Bool,
action: @escaping (() -> Void)) -> DrawerGenericItemViewModel
func makeCaptionsLangaugeCellViewModel(title: String,
isSelected: Bool,
accessibilityLabel: String,
onSelectedAction: @escaping (() -> Void)) -> DrawerSelectableItemViewModel
func makeLeaveCallConfirmationViewModel(
endCall: @escaping (() -> Void),
dismissConfirmation: @escaping (() -> Void)) -> LeaveCallConfirmationViewModel
func makeSupportFormViewModel() -> SupportFormViewModel
func makeCallDiagnosticsViewModel(dispatchAction: @escaping ActionDispatch) -> CallDiagnosticsViewModel
func makeBottomToastViewModel(toastNotificationState: ToastNotificationState,
dispatchAction: @escaping ActionDispatch) -> BottomToastViewModel
// MARK: SetupViewModels
func makePreviewAreaViewModel(dispatchAction: @escaping ActionDispatch) -> PreviewAreaViewModel
func makeSetupControlBarViewModel(dispatchAction: @escaping ActionDispatch,
localUserState: LocalUserState,
buttonViewDataState: ButtonViewDataState) -> SetupControlBarViewModel
func makeJoiningCallActivityViewModel(title: String) -> JoiningCallActivityViewModel
}
extension CompositeViewModelFactoryProtocol {
func makePrimaryButtonViewModel(buttonStyle: FluentUI.ButtonStyle,
buttonLabel: String,
iconName: CompositeIcon? = CompositeIcon.none,
isDisabled: Bool = false,
action: @escaping (() -> Void)) -> PrimaryButtonViewModel {
return makePrimaryButtonViewModel(buttonStyle: buttonStyle,
buttonLabel: buttonLabel,
iconName: iconName,
isDisabled: isDisabled,
paddings: nil,
action: action)
}
func makeJoiningCallActivityViewModel(title: String) -> JoiningCallActivityViewModel {
return JoiningCallActivityViewModel(title: title)
}
}