AudioService.swift 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. //
  2. // AudioService.swift
  3. // Pods
  4. //
  5. // Created by janejntang on 2024/12/26.
  6. //
  7. import RTCRoomEngine
  8. import Combine
  9. class AudioService {
  10. private let engine = TUIRoomEngine.sharedInstance()
  11. private let engineManeger = EngineManager.shared //TODO: replace later
  12. func muteLocalAudio() {
  13. engine.muteLocalAudio()
  14. }
  15. func unmuteLocalAudio() -> AnyPublisher<Void, RoomError> {
  16. return Future<Void, RoomError> { [weak self] promise in
  17. guard let self = self else { return }
  18. engine.unmuteLocalAudio {
  19. promise(.success(()))
  20. } onError: { err, message in
  21. let error = RoomError(error: err, message: message, showToast: false)
  22. promise(.failure(error))
  23. }
  24. }
  25. .eraseToAnyPublisher()
  26. }
  27. func openLocalMicrophone() -> AnyPublisher<Void, RoomError> {
  28. return Future<Void, RoomError> { [weak self] promise in
  29. guard let self = self else { return }
  30. engineManeger.openLocalMicrophone {
  31. promise(.success(()))
  32. } onError: { err, message in
  33. let error = RoomError(error: err, message: message, showToast: false)
  34. promise(.failure(error))
  35. }
  36. }
  37. .eraseToAnyPublisher()
  38. }
  39. }