|
|
@@ -51,8 +51,8 @@ extension LNIMChatUserMenuView {
|
|
|
let menus = [
|
|
|
buildMute(),
|
|
|
|
|
|
-// buildLine(),
|
|
|
-// buildRemark(),
|
|
|
+ buildLine(),
|
|
|
+ buildRemark(),
|
|
|
|
|
|
buildLine(),
|
|
|
buildBlack(),
|
|
|
@@ -65,110 +65,40 @@ extension LNIMChatUserMenuView {
|
|
|
}
|
|
|
|
|
|
private func buildMute() -> UIView {
|
|
|
- let container = UIView()
|
|
|
- container.snp.makeConstraints { make in
|
|
|
- make.height.equalTo(52)
|
|
|
- }
|
|
|
-
|
|
|
- let ic = UIImageView()
|
|
|
- ic.image = .icImChatMenuMute
|
|
|
- container.addSubview(ic)
|
|
|
- ic.snp.makeConstraints { make in
|
|
|
- make.leading.equalToSuperview().offset(16)
|
|
|
- make.centerY.equalToSuperview()
|
|
|
- }
|
|
|
-
|
|
|
- let titleLabel = UILabel()
|
|
|
- titleLabel.text = .init(key: "A00085")
|
|
|
- titleLabel.font = .body_m
|
|
|
- titleLabel.textColor = .text_5
|
|
|
- container.addSubview(titleLabel)
|
|
|
- titleLabel.snp.makeConstraints { make in
|
|
|
- make.centerY.equalToSuperview()
|
|
|
- make.leading.equalTo(ic.snp.trailing).offset(10)
|
|
|
- }
|
|
|
-
|
|
|
+ let scaleX: CGFloat = 40.0 / 51.0
|
|
|
+ let scaleY: CGFloat = 24.5 / 31.0
|
|
|
+ muteSwitch.onTintColor = .primary_5
|
|
|
+ muteSwitch.transform = CGAffineTransform(scaleX: scaleX, y: scaleY)
|
|
|
muteSwitch.addAction(UIAction(handler: { [weak self] _ in
|
|
|
guard let self else { return }
|
|
|
viewModel?.updateMessageOpt(opt: muteSwitch.isOn ? .RECEIVE_NOT_NOTIFY_MESSAGE : .RECEIVE_MESSAGE)
|
|
|
}), for: .valueChanged)
|
|
|
- container.addSubview(muteSwitch)
|
|
|
- muteSwitch.snp.makeConstraints { make in
|
|
|
- make.trailing.equalToSuperview().offset(-16)
|
|
|
- make.centerY.equalToSuperview()
|
|
|
- }
|
|
|
-
|
|
|
- return container
|
|
|
+ return buildMenuItem(icon: .icImChatMenuMute, title: .init(key: "A00085"), contentView: muteSwitch)
|
|
|
}
|
|
|
|
|
|
private func buildRemark() -> UIView {
|
|
|
- let container = UIView()
|
|
|
- container.snp.makeConstraints { make in
|
|
|
- make.height.equalTo(52)
|
|
|
- }
|
|
|
-
|
|
|
- let ic = UIImageView()
|
|
|
- ic.image = .icImChatMenuRemark
|
|
|
- container.addSubview(ic)
|
|
|
- ic.snp.makeConstraints { make in
|
|
|
- make.leading.equalToSuperview().offset(16)
|
|
|
- make.centerY.equalToSuperview()
|
|
|
- }
|
|
|
-
|
|
|
- let titleLabel = UILabel()
|
|
|
- titleLabel.text = .init(key: "A00086")
|
|
|
- titleLabel.font = .body_m
|
|
|
- titleLabel.textColor = .text_5
|
|
|
- container.addSubview(titleLabel)
|
|
|
- titleLabel.snp.makeConstraints { make in
|
|
|
- make.centerY.equalToSuperview()
|
|
|
- make.leading.equalTo(ic.snp.trailing).offset(10)
|
|
|
- }
|
|
|
-
|
|
|
- let arrow = UIImageView()
|
|
|
- arrow.image = .init(systemName: "chevron.forward")
|
|
|
- arrow.tintColor = .text_4
|
|
|
- container.addSubview(arrow)
|
|
|
- arrow.snp.makeConstraints { make in
|
|
|
- make.centerY.equalToSuperview()
|
|
|
- make.trailing.equalToSuperview().offset(-16)
|
|
|
+ let menu = buildMenuItem(icon: .icImChatMenuRemark, title: .init(key: "A00086"), contentView: nil)
|
|
|
+ menu.onTap { [weak self] in
|
|
|
+ guard let self else { return }
|
|
|
+ let panel = LNIMChatUserRemarkPanel()
|
|
|
+ panel.update(viewModel?.remark ?? "")
|
|
|
+ panel.handler = { [weak self] remark in
|
|
|
+ guard let self else { return }
|
|
|
+ dismiss()
|
|
|
+ viewModel?.updateRemark(remark)
|
|
|
+ }
|
|
|
+ panel.popup()
|
|
|
}
|
|
|
|
|
|
- return container
|
|
|
+ return menu
|
|
|
}
|
|
|
|
|
|
private func buildBlack() -> UIView {
|
|
|
- let container = UIView()
|
|
|
- container.snp.makeConstraints { make in
|
|
|
- make.height.equalTo(52)
|
|
|
- }
|
|
|
-
|
|
|
- let ic = UIImageView()
|
|
|
- ic.image = .icImChatMenuBlack
|
|
|
- container.addSubview(ic)
|
|
|
- ic.snp.makeConstraints { make in
|
|
|
- make.leading.equalToSuperview().offset(16)
|
|
|
- make.centerY.equalToSuperview()
|
|
|
- }
|
|
|
-
|
|
|
blackLabel.font = .body_m
|
|
|
blackLabel.textColor = .text_5
|
|
|
- container.addSubview(blackLabel)
|
|
|
- blackLabel.snp.makeConstraints { make in
|
|
|
- make.centerY.equalToSuperview()
|
|
|
- make.leading.equalTo(ic.snp.trailing).offset(10)
|
|
|
- }
|
|
|
-
|
|
|
- let arrow = UIImageView()
|
|
|
- arrow.image = .init(systemName: "chevron.forward")
|
|
|
- arrow.tintColor = .text_4
|
|
|
- container.addSubview(arrow)
|
|
|
- arrow.snp.makeConstraints { make in
|
|
|
- make.centerY.equalToSuperview()
|
|
|
- make.trailing.equalToSuperview().offset(-16)
|
|
|
- }
|
|
|
+ let menu = buildMenuItem(icon: .icImChatMenuBlack, titleView: blackLabel, contentView: nil)
|
|
|
|
|
|
- container.onTap { [weak self] in
|
|
|
+ menu.onTap { [weak self] in
|
|
|
guard let self else { return }
|
|
|
guard let uid = viewModel?.userId else { return }
|
|
|
dismiss()
|
|
|
@@ -179,47 +109,66 @@ extension LNIMChatUserMenuView {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return container
|
|
|
+ return menu
|
|
|
}
|
|
|
|
|
|
private func buildReport() -> UIView {
|
|
|
+ let menu = buildMenuItem(icon: .icImChatMenuRemark, title: .init(key: "A00043"), contentView: nil)
|
|
|
+
|
|
|
+ menu.onTap { [weak self] in
|
|
|
+ guard let self else { return }
|
|
|
+ guard let uid = viewModel?.userId else { return }
|
|
|
+ dismiss()
|
|
|
+ pushToReport(uid: uid)
|
|
|
+ }
|
|
|
+
|
|
|
+ return menu
|
|
|
+ }
|
|
|
+
|
|
|
+ private func buildMenuItem(icon: UIImage, title: String, contentView: UIView?) -> UIView {
|
|
|
+ let titleLabel = UILabel()
|
|
|
+ titleLabel.text = title
|
|
|
+ titleLabel.font = .body_m
|
|
|
+ titleLabel.textColor = .text_5
|
|
|
+
|
|
|
+ return buildMenuItem(icon: icon, titleView: titleLabel, contentView: contentView)
|
|
|
+ }
|
|
|
+
|
|
|
+ private func buildMenuItem(icon: UIImage, titleView: UIView, contentView: UIView?) -> UIView {
|
|
|
let container = UIView()
|
|
|
container.snp.makeConstraints { make in
|
|
|
make.height.equalTo(52)
|
|
|
}
|
|
|
|
|
|
let ic = UIImageView()
|
|
|
- ic.image = .icImChatMenuRemark
|
|
|
+ ic.image = icon
|
|
|
container.addSubview(ic)
|
|
|
ic.snp.makeConstraints { make in
|
|
|
make.leading.equalToSuperview().offset(16)
|
|
|
make.centerY.equalToSuperview()
|
|
|
}
|
|
|
|
|
|
- let titleLabel = UILabel()
|
|
|
- titleLabel.text = .init(key: "A00043")
|
|
|
- titleLabel.font = .body_m
|
|
|
- titleLabel.textColor = .text_5
|
|
|
- container.addSubview(titleLabel)
|
|
|
- titleLabel.snp.makeConstraints { make in
|
|
|
+ container.addSubview(titleView)
|
|
|
+ titleView.snp.makeConstraints { make in
|
|
|
make.centerY.equalToSuperview()
|
|
|
make.leading.equalTo(ic.snp.trailing).offset(10)
|
|
|
}
|
|
|
|
|
|
- let arrow = UIImageView()
|
|
|
- arrow.image = .init(systemName: "chevron.forward")
|
|
|
- arrow.tintColor = .text_4
|
|
|
- container.addSubview(arrow)
|
|
|
- arrow.snp.makeConstraints { make in
|
|
|
- make.centerY.equalToSuperview()
|
|
|
- make.trailing.equalToSuperview().offset(-16)
|
|
|
- }
|
|
|
-
|
|
|
- container.onTap { [weak self] in
|
|
|
- guard let self else { return }
|
|
|
- guard let uid = viewModel?.userId else { return }
|
|
|
- dismiss()
|
|
|
- pushToReport(uid: uid)
|
|
|
+ if let contentView {
|
|
|
+ container.addSubview(contentView)
|
|
|
+ contentView.snp.makeConstraints { make in
|
|
|
+ make.centerY.equalToSuperview()
|
|
|
+ make.trailing.equalToSuperview().offset(-16)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ let arrow = UIImageView()
|
|
|
+ arrow.image = .init(systemName: "chevron.forward")
|
|
|
+ arrow.tintColor = .text_4
|
|
|
+ container.addSubview(arrow)
|
|
|
+ arrow.snp.makeConstraints { make in
|
|
|
+ make.centerY.equalToSuperview()
|
|
|
+ make.trailing.equalToSuperview().offset(-16)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return container
|