ConferenceStore.swift 928 B

12345678910111213141516171819202122232425262728
  1. //
  2. // ConferenceStore.swift
  3. // TUIRoomKit
  4. //
  5. // Created by CY zhao on 2024/6/12.
  6. //
  7. import Foundation
  8. import Combine
  9. protocol ActionDispatcher {
  10. func dispatch(action: Action)
  11. }
  12. protocol ConferenceStore: ActionDispatcher {
  13. var errorSubject: PassthroughSubject<RoomError, Never> { get }
  14. var toastSubject: PassthroughSubject<ToastInfo, Never> { get }
  15. var scheduleActionSubject: PassthroughSubject<IdentifiableAction, Never> { get }
  16. var roomActionSubject: PassthroughSubject<IdentifiableAction, Never> { get }
  17. func select<Value:Equatable>(_ selector: Selector<OperationState, Value>) -> AnyPublisher<Value, Never>
  18. func selectCurrent<Value>(_ selector: Selector<OperationState, Value>) -> Value
  19. func select<Value:Equatable>(_ selector: Selector<ViewState, Value>) -> AnyPublisher<Value, Never>
  20. func selectCurrent<Value>(_ selector: Selector<ViewState, Value>) -> Value
  21. }