|
|
@@ -1,5 +1,5 @@
|
|
|
//
|
|
|
-// LNVoiceCallPanel.swift
|
|
|
+// LNAudioCallPanel.swift
|
|
|
// Gami
|
|
|
//
|
|
|
// Created by OneeChan on 2026/2/1.
|
|
|
@@ -10,7 +10,7 @@ import UIKit
|
|
|
import SnapKit
|
|
|
|
|
|
|
|
|
-class LNVoiceCallPanel: LNPopupView {
|
|
|
+class LNAudioCallPanel: LNPopupView {
|
|
|
private let background = UIImageView()
|
|
|
|
|
|
private let avatar = UIImageView()
|
|
|
@@ -44,14 +44,14 @@ class LNVoiceCallPanel: LNPopupView {
|
|
|
|
|
|
func toCallOut(uid: String) {
|
|
|
callOutView.isHidden = false
|
|
|
+ stateLabel.isHidden = false
|
|
|
reloadUserInfo(uid: uid)
|
|
|
- getCurOrders(uid: uid)
|
|
|
}
|
|
|
|
|
|
func onCallIn(uid: String) {
|
|
|
onCallView.isHidden = false
|
|
|
+ stateLabel.isHidden = false
|
|
|
reloadUserInfo(uid: uid)
|
|
|
- getCurOrders(uid: uid)
|
|
|
}
|
|
|
|
|
|
func resume() {
|
|
|
@@ -60,14 +60,17 @@ class LNVoiceCallPanel: LNPopupView {
|
|
|
updateCallDuration()
|
|
|
startTimer()
|
|
|
callingView.isHidden = false
|
|
|
+ stateLabel.isHidden = true
|
|
|
+ getCurOrders(uid: callInfo.uid)
|
|
|
} else if callInfo.isInCome {
|
|
|
onCallView.isHidden = false
|
|
|
+ stateLabel.isHidden = false
|
|
|
} else {
|
|
|
callOutView.isHidden = false
|
|
|
+ stateLabel.isHidden = false
|
|
|
}
|
|
|
|
|
|
reloadUserInfo(uid: callInfo.uid)
|
|
|
- getCurOrders(uid: callInfo.uid)
|
|
|
}
|
|
|
|
|
|
required init?(coder: NSCoder) {
|
|
|
@@ -75,7 +78,7 @@ class LNVoiceCallPanel: LNPopupView {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-extension LNVoiceCallPanel {
|
|
|
+extension LNAudioCallPanel {
|
|
|
private func reloadUserInfo(uid: String) {
|
|
|
LNProfileManager.shared.getUserProfile(uid: uid) { [weak self] info in
|
|
|
guard let self else { return }
|
|
|
@@ -97,7 +100,7 @@ extension LNVoiceCallPanel {
|
|
|
orderView.isHidden = false
|
|
|
gameIc.sd_setImage(with: URL(string: order.categoryIcon))
|
|
|
gameNameLabel.text = order.bizCategoryName
|
|
|
- orderTimeLabel.text = Double(order.createTime / 1_000).tencentIMTimeDesc
|
|
|
+ orderTimeLabel.text = Double(order.createTime / 1_000).formattedFullDateWithTime()
|
|
|
gameCountLabel.text = "x \(order.purchaseQty) \(order.unit)"
|
|
|
orderStateLabel.text = order.statusUI.title
|
|
|
}
|
|
|
@@ -130,14 +133,19 @@ extension LNVoiceCallPanel {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-extension LNVoiceCallPanel: LNIMManagerNotify {
|
|
|
+extension LNAudioCallPanel: LNIMManagerNotify {
|
|
|
func onVoiceCallBegin() {
|
|
|
onCallView.isHidden = true
|
|
|
callOutView.isHidden = true
|
|
|
callingView.isHidden = false
|
|
|
+ stateLabel.isHidden = true
|
|
|
|
|
|
updateCallDuration()
|
|
|
startTimer()
|
|
|
+
|
|
|
+ if let callInfo = LNIMManager.shared.curCallInfo {
|
|
|
+ getCurOrders(uid: callInfo.uid)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
func onVoiceCallEnd() {
|
|
|
@@ -148,8 +156,7 @@ extension LNVoiceCallPanel: LNIMManagerNotify {
|
|
|
func onVoiceCallInfoChanged() {
|
|
|
guard let callInfo = LNIMManager.shared.curCallInfo else { return }
|
|
|
muteButton.setImage(callInfo.isMute ? .icCallMute : .icCallUnmute, for: .normal)
|
|
|
- let icon: UIImage = if !DevicesUtil.isBluetoothHeadsetConnected,
|
|
|
- callInfo.deviceType == .earpiece {
|
|
|
+ let icon: UIImage = if callInfo.deviceType == .earpiece {
|
|
|
.icCallSpeakerEarpiece
|
|
|
} else {
|
|
|
.icCallSpeakerPhone
|
|
|
@@ -158,7 +165,7 @@ extension LNVoiceCallPanel: LNIMManagerNotify {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-extension LNVoiceCallPanel {
|
|
|
+extension LNAudioCallPanel {
|
|
|
private func setupViews() {
|
|
|
containerHeight = .percent(1.0)
|
|
|
|
|
|
@@ -183,6 +190,7 @@ extension LNVoiceCallPanel {
|
|
|
make.bottom.equalTo(container.snp.centerY).offset(-30).priority(.medium)
|
|
|
}
|
|
|
|
|
|
+ stateLabel.text = .init(key: "C00015")
|
|
|
stateLabel.font = .body_xl
|
|
|
stateLabel.textColor = .text_2
|
|
|
container.addSubview(stateLabel)
|
|
|
@@ -226,7 +234,7 @@ extension LNVoiceCallPanel {
|
|
|
|
|
|
// 可选:添加半透明遮罩,增强模糊层次感(毛玻璃常用搭配)
|
|
|
let maskView = UIView(frame: blurView.bounds)
|
|
|
- maskView.backgroundColor = UIColor.black.withAlphaComponent(0.42) // 0.1~0.3为宜
|
|
|
+ maskView.backgroundColor = UIColor.black.withAlphaComponent(0.3) // 0.1~0.3为宜
|
|
|
blurView.contentView.addSubview(maskView)
|
|
|
maskView.snp.makeConstraints { make in
|
|
|
make.edges.equalToSuperview()
|
|
|
@@ -243,8 +251,6 @@ extension LNVoiceCallPanel {
|
|
|
minButton.addAction(UIAction(handler: { [weak self] _ in
|
|
|
guard let self else { return }
|
|
|
dismiss()
|
|
|
- let floatingView = LNVoiceCallFloatingView()
|
|
|
- floatingView.show()
|
|
|
}), for: .touchUpInside)
|
|
|
navBar.actionView.addSubview(minButton)
|
|
|
minButton.snp.makeConstraints { make in
|
|
|
@@ -438,17 +444,18 @@ extension LNVoiceCallPanel {
|
|
|
speakerButton.addAction(UIAction(handler: { [weak self] _ in
|
|
|
guard let self else { return }
|
|
|
// if DevicesUtil.isBluetoothHeadsetConnected {
|
|
|
- let menu = LNVoiceCallSpeakerSelectPopoverMenu()
|
|
|
- menu.pointAt(parentView: self, targetView: speakerButton) { type in
|
|
|
- LNIMManager.shared.switchVoiceCallSpeakerType(type: type)
|
|
|
- }
|
|
|
-// } else if let callInfo = LNIMManager.shared.curCallInfo {
|
|
|
-// if callInfo.deviceType == .speakerphone {
|
|
|
-// LNIMManager.shared.switchVoiceCallSpeakerType(type: .earpiece)
|
|
|
-// } else {
|
|
|
-// LNIMManager.shared.switchVoiceCallSpeakerType(type: .speakerphone)
|
|
|
+// let menu = LNVoiceCallSpeakerSelectPopoverMenu()
|
|
|
+// menu.pointAt(parentView: self, targetView: speakerButton) { type in
|
|
|
+// LNIMManager.shared.switchVoiceCallSpeakerType(type: type)
|
|
|
// }
|
|
|
-// }
|
|
|
+// } else
|
|
|
+ if let callInfo = LNIMManager.shared.curCallInfo {
|
|
|
+ if callInfo.deviceType == .speakerphone {
|
|
|
+ LNIMManager.shared.switchVoiceCallSpeakerType(type: .earpiece)
|
|
|
+ } else {
|
|
|
+ LNIMManager.shared.switchVoiceCallSpeakerType(type: .speakerphone)
|
|
|
+ }
|
|
|
+ }
|
|
|
}), for: .touchUpInside)
|
|
|
stackView.addArrangedSubview(speakerButton)
|
|
|
|
|
|
@@ -601,7 +608,7 @@ struct LNVoiceCallPanelPreview: UIViewRepresentable {
|
|
|
let container = UIView()
|
|
|
container.backgroundColor = .lightGray
|
|
|
|
|
|
- let view = LNVoiceCallPanel()
|
|
|
+ let view = LNAudioCallPanel()
|
|
|
view.popup()
|
|
|
|
|
|
return container
|