110 lines
3.2 KiB
Swift
110 lines
3.2 KiB
Swift
|
|
//
|
||
|
|
// InviteView.swift
|
||
|
|
// TUIRoomKit
|
||
|
|
//
|
||
|
|
// Created by jeremiawang on 2024/8/26.
|
||
|
|
//
|
||
|
|
|
||
|
|
import Foundation
|
||
|
|
import Factory
|
||
|
|
|
||
|
|
class InviteView: UIView {
|
||
|
|
private var isViewReady: Bool = false
|
||
|
|
|
||
|
|
let stackView: UIStackView = {
|
||
|
|
let view = UIStackView()
|
||
|
|
view.axis = .vertical
|
||
|
|
view.alignment = .center
|
||
|
|
view.distribution = .fillEqually
|
||
|
|
view.spacing = 0
|
||
|
|
return view
|
||
|
|
}()
|
||
|
|
|
||
|
|
private lazy var addUserView: ButtonItemView = {
|
||
|
|
let item = ButtonItemData()
|
||
|
|
item.normalTitle = .addUserText
|
||
|
|
item.normalIcon = "room_add_user"
|
||
|
|
item.resourceBundle = tuiRoomKitBundle()
|
||
|
|
item.buttonType = .muteAudioItemType
|
||
|
|
item.hasLineView = true
|
||
|
|
return ButtonItemView(itemData: item)
|
||
|
|
}()
|
||
|
|
|
||
|
|
private lazy var inviteToJoinView: ButtonItemView = {
|
||
|
|
let item = ButtonItemData()
|
||
|
|
item.normalTitle = .shareRoomText
|
||
|
|
item.normalIcon = "room_invite_to_join"
|
||
|
|
item.resourceBundle = tuiRoomKitBundle()
|
||
|
|
item.buttonType = .muteVideoItemType
|
||
|
|
item.hasLineView = true
|
||
|
|
return ButtonItemView(itemData: item)
|
||
|
|
}()
|
||
|
|
|
||
|
|
init() {
|
||
|
|
super.init(frame: .zero)
|
||
|
|
}
|
||
|
|
|
||
|
|
required init?(coder: NSCoder) {
|
||
|
|
fatalError("init(coder:) has not been implemented")
|
||
|
|
}
|
||
|
|
|
||
|
|
override func draw(_ rect: CGRect) {
|
||
|
|
super.draw(rect)
|
||
|
|
self.layer.cornerRadius = 16
|
||
|
|
}
|
||
|
|
|
||
|
|
override func didMoveToWindow() {
|
||
|
|
super.didMoveToWindow()
|
||
|
|
guard !isViewReady else { return }
|
||
|
|
constructViewHierarchy()
|
||
|
|
activateConstraints()
|
||
|
|
bindInteraction()
|
||
|
|
isViewReady = true
|
||
|
|
}
|
||
|
|
|
||
|
|
private func constructViewHierarchy() {
|
||
|
|
addSubview(stackView)
|
||
|
|
stackView.addArrangedSubview(addUserView)
|
||
|
|
stackView.addArrangedSubview(inviteToJoinView)
|
||
|
|
}
|
||
|
|
|
||
|
|
func activateConstraints() {
|
||
|
|
stackView.snp.makeConstraints { make in
|
||
|
|
make.top.equalToSuperview()
|
||
|
|
make.leading.equalToSuperview().offset(16.scale375())
|
||
|
|
make.trailing.equalToSuperview().offset(-16.scale375())
|
||
|
|
make.bottom.equalToSuperview().offset(-34.scale375Height())
|
||
|
|
}
|
||
|
|
addUserView.snp.makeConstraints { make in
|
||
|
|
make.height.equalTo(53.scale375())
|
||
|
|
make.width.equalToSuperview()
|
||
|
|
}
|
||
|
|
inviteToJoinView.snp.makeConstraints { make in
|
||
|
|
make.height.equalTo(53.scale375())
|
||
|
|
make.width.equalToSuperview()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func bindInteraction() {
|
||
|
|
addUserView.itemData.action = { sender in
|
||
|
|
self.conferenceStore.dispatch(action: InvitationViewActions.showInvitationPopupView())
|
||
|
|
RoomRouter.shared.dismissPopupViewController()
|
||
|
|
}
|
||
|
|
inviteToJoinView.itemData.action = { sender in
|
||
|
|
RoomRouter.shared.presentPopUpViewController(viewType: .inviteMemberViewType, height: 290.scale375Height())
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@Injected(\.navigation) private var route
|
||
|
|
@Injected(\.conferenceStore) var conferenceStore: ConferenceStore
|
||
|
|
}
|
||
|
|
|
||
|
|
private extension String {
|
||
|
|
static var addUserText: String {
|
||
|
|
localized("Add user")
|
||
|
|
}
|
||
|
|
static var shareRoomText: String {
|
||
|
|
localized("Share room")
|
||
|
|
}
|
||
|
|
}
|