98 lines
3.3 KiB
Swift
98 lines
3.3 KiB
Swift
//
|
|
// RoomUserStatusView.swift
|
|
// TUIRoomKit
|
|
//
|
|
// Created by janejntang on 2023/7/24.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
class RoomUserStatusView: UIView {
|
|
private var isOwner: Bool = false
|
|
private var isViewReady: Bool = false
|
|
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: UIImageView = {
|
|
let imageView = UIImageView()
|
|
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(isOwner ? 24 : 0)
|
|
}
|
|
}
|
|
}
|
|
|
|
extension RoomUserStatusView {
|
|
func updateUserStatus(userModel: UserEntity) {
|
|
if !userModel.userName.isEmpty {
|
|
userNameLabel.text = userModel.userName
|
|
} else {
|
|
userNameLabel.text = userModel.userId
|
|
}
|
|
isOwner = userModel.userId == EngineManager.shared.store.roomInfo.ownerId
|
|
updateViewConstraints()
|
|
updateUserVolume(hasAudio: userModel.hasAudioStream, volume: userModel.userVoiceVolume)
|
|
}
|
|
|
|
func updateUserVolume(hasAudio: Bool, volume: Int) {
|
|
if !hasAudio {
|
|
voiceVolumeImageView.image = UIImage(named: "room_mute_audio", in: tuiRoomKitBundle(), compatibleWith: nil)?.checkOverturn()
|
|
} else {
|
|
let volumeImageName = volume <= 0 ? "room_voice_volume1" : "room_voice_volume2"
|
|
voiceVolumeImageView.image = UIImage(named: volumeImageName, in: tuiRoomKitBundle(), compatibleWith: nil)
|
|
}
|
|
}
|
|
}
|