| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- //
- // RoomUserStatusView.swift
- // TUIRoomKit
- //
- // Created by janejntang on 2023/7/24.
- //
- import Foundation
- class RoomUserStatusView: UIView {
- private var isShownUserRoleFlag = false
- private var isViewReady: Bool = false
- private var isShownMuteFlag = true
- private let homeOwnerImageView: UIImageView = {
- let imageView = UIImageView(image: UIImage(named: "room_homeowner", in: tuiRoomKitBundle(), compatibleWith: nil))
- imageView.layer.cornerRadius = 12
- imageView.layer.masksToBounds = true
- return imageView
- }()
- private let userNameLabel: UILabel = {
- let user = UILabel()
- user.textColor = .white
- user.backgroundColor = UIColor.clear
- user.textAlignment = isRTL ? .right : .left
- user.numberOfLines = 1
- user.font = UIFont(name: "PingFangSC-Regular", size: 12)
- return user
- }()
- private let voiceVolumeImageView: VolumeView = {
- let imageView = VolumeView()
- return imageView
- }()
-
- override func didMoveToWindow() {
- super.didMoveToWindow()
- guard !isViewReady else { return }
- isViewReady = true
- constructViewHierarchy()
- activateConstraints()
- backgroundColor = UIColor(0x22262E, alpha: 0.8)
- layer.cornerRadius = 12
- layer.masksToBounds = true
- }
- private func constructViewHierarchy() {
- addSubview(homeOwnerImageView)
- addSubview(voiceVolumeImageView)
- addSubview(userNameLabel)
- }
- private func activateConstraints() {
- updateViewConstraints()
- userNameLabel.snp.makeConstraints { make in
- make.leading.equalTo(voiceVolumeImageView.snp.trailing).offset(5)
- make.centerY.equalToSuperview()
- make.trailing.equalToSuperview().offset(-8)
- }
- voiceVolumeImageView.snp.makeConstraints { make in
- make.leading.equalTo(homeOwnerImageView.snp.trailing).offset(6.scale375())
- make.width.height.equalTo(14)
- make.centerY.equalToSuperview()
- }
- }
-
- private func updateViewConstraints() {
- guard homeOwnerImageView.superview != nil else { return }
- homeOwnerImageView.snp.remakeConstraints { make in
- make.leading.equalToSuperview()
- make.height.equalTo(24)
- make.top.bottom.equalToSuperview()
- make.width.equalTo(isShownUserRoleFlag ? 24 : 0)
- }
- }
- }
- extension RoomUserStatusView {
- func updateUserStatus(userModel: UserEntity) {
- if !userModel.userName.isEmpty {
- userNameLabel.text = userModel.userName
- } else {
- userNameLabel.text = userModel.userId
- }
- if userModel.userRole == .roomOwner {
- homeOwnerImageView.image = UIImage(named: "room_homeowner", in: tuiRoomKitBundle(), compatibleWith: nil)
- } else if userModel.userRole == .administrator {
- homeOwnerImageView.image = UIImage(named: "room_administrator", in: tuiRoomKitBundle(), compatibleWith: nil)
- }
- isShownUserRoleFlag = userModel.userRole != .generalUser
- updateViewConstraints()
- updateUserAudio(userModel.hasAudioStream)
- updateUserVolume(volume: userModel.userVoiceVolume)
- }
-
- func updateUserAudio(_ hasAudio: Bool) {
- voiceVolumeImageView.updateAudio(hasAudio)
- isShownMuteFlag = !hasAudio
- }
- func updateUserVolume(volume: Int) {
- guard !isShownMuteFlag else { return }
- voiceVolumeImageView.updateVolume(CGFloat(volume))
- }
- }
|