Explorar o código

feat: 调整创建订单弹窗的跳转逻辑

陈文艺 hai 1 semana
pai
achega
f1ca1c0877

+ 16 - 16
Lanu/Views/Order/Create/LNCreateOrderPanel.swift

@@ -63,6 +63,7 @@ class LNCreateOrderPanel: LNPopupView {
         }
     }
     
+    private var targetUid: String?
     var completionHandler: ((String) -> Void)?
     
     override init(frame: CGRect) {
@@ -89,6 +90,7 @@ class LNCreateOrderPanel: LNPopupView {
         
         skillId = detail.id
         price = detail.price
+        targetUid = detail.userNo
         curCount = count
         
         extraInput.text = extra
@@ -110,6 +112,7 @@ class LNCreateOrderPanel: LNPopupView {
         
         skillId = skill.id
         price = skill.price
+        targetUid = user.userNo
         curCount = 1
     }
     
@@ -129,6 +132,7 @@ class LNCreateOrderPanel: LNPopupView {
         
         qrCode = detail.qrCode
         price = detail.price
+        targetUid = detail.sellerUserNo
         curCount = count
         
         extraInput.text = extra
@@ -197,26 +201,22 @@ extension LNCreateOrderPanel {
             guard let self else { return }
             let extra = extraInput.text ?? ""
             
+            let handler = { [weak self] (orderNo: String?) in
+                guard let self else { return }
+                guard let orderNo else { return }
+                dismiss()
+                if let targetUid,
+                    !(navigationController?.topViewController is LNIMChatViewController) {
+                    pushToChat(uid: targetUid)
+                }
+                completionHandler?(orderNo)
+            }
             if let skillId {
                 LNOrderManager.shared.createOrder(
-                    skillId: skillId, count: curCount, remark: extra)
-                { [weak self] orderNo in
-                    guard let self else { return }
-                    guard let orderNo else { return }
-                    
-                    dismiss()
-                    completionHandler?(orderNo)
-                }
+                    skillId: skillId, count: curCount, remark: extra, handler: handler)
             } else if let qrCode {
                 LNOrderManager.shared.createQRCodeOrder(
-                    data: qrCode, count: curCount, extra: extra)
-                { [weak self] orderNo in
-                    guard let self else { return }
-                    guard let orderNo else { return }
-                    
-                    dismiss()
-                    completionHandler?(orderNo)
-                }
+                    data: qrCode, count: curCount, extra: extra, handler: handler)
             }
         }), for: .touchUpInside)
         container.addSubview(confirmButton)

+ 0 - 6
Lanu/Views/Order/Create/LNCreateOrderViewController.swift

@@ -571,12 +571,6 @@ extension LNCreateOrderViewController {
             } else { return }
             panel.completionHandler = { [weak self] orderId in
                 guard let self else { return }
-                
-                if let skill {
-                    view.pushToChat(uid: skill.userNo)
-                } else if let qrDetail {
-                    view.pushToChat(uid: qrDetail.sellerUserNo)
-                }
                 navigationController?.viewControllers.removeAll { $0 is LNCreateOrderViewController }
             }
             panel.popup()