LNRoomBottomMicView.swift 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //
  2. // LNRoomBottomMicView.swift
  3. // Gami
  4. //
  5. // Created by OneeChan on 2026/3/17.
  6. //
  7. import Foundation
  8. import UIKit
  9. import AtomicXCore
  10. import Combine
  11. class LNRoomBottomMicView: UIButton {
  12. private weak var roomSession: LNRoomViewModel?
  13. override init(frame: CGRect) {
  14. super.init(frame: frame)
  15. setupViews()
  16. LNEventDeliver.addObserver(self)
  17. }
  18. func update(_ room: LNRoomViewModel?) {
  19. roomSession = room
  20. onRoomSeatsChanged()
  21. }
  22. required init?(coder: NSCoder) {
  23. fatalError("init(coder:) has not been implemented")
  24. }
  25. }
  26. extension LNRoomBottomMicView: LNRoomViewModelNotify {
  27. func onRoomSeatsChanged() {
  28. if let seat = roomSession?.mySeatInfo {
  29. isHidden = false
  30. if seat.isMute {
  31. setBackgroundImage(.icMicOffWhite15, for: .normal)
  32. isEnabled = false
  33. } else {
  34. isEnabled = true
  35. if seat.isLocalMute {
  36. setBackgroundImage(.icMicOffWhite15, for: .normal)
  37. } else {
  38. setBackgroundImage(.icMicOn, for: .normal)
  39. }
  40. }
  41. } else {
  42. isHidden = true
  43. }
  44. }
  45. }
  46. extension LNRoomBottomMicView {
  47. private func setupViews() {
  48. setBackgroundImage(.icMicOn, for: .normal)
  49. addAction(UIAction(handler: { [weak self] _ in
  50. guard let self else { return }
  51. if roomSession?.mySeatInfo?.isLocalMute == true {
  52. roomSession?.unmuteMySeat { _ in }
  53. } else {
  54. roomSession?.muteMySeat()
  55. }
  56. }), for: .touchUpInside)
  57. }
  58. }