瀏覽代碼

feat: toast 增加图标样式

陈文艺 3 天之前
父節點
當前提交
0dba9d622f
共有 2 個文件被更改,包括 32 次插入10 次删除
  1. 22 9
      Lanu/Common/Views/Toast/LNToastView.swift
  2. 10 1
      Lanu/Views/Room/ViewModel/LNRoomViewModel.swift

+ 22 - 9
Lanu/Common/Views/Toast/LNToastView.swift

@@ -12,12 +12,12 @@ import SnapKit
 
 var allToast = NSHashTable<UIView>(options: .weakMemory)
 
-func showToast(_ toast: String?) {
+func showToast(_ toast: String?, icon: UIImage? = nil) {
     guard let toast, !toast.isEmpty else { return }
     
     runOnMain {
         let view = LNToastView()
-        view.show(toast)
+        view.show(toast, icon: icon)
     }
 }
 
@@ -26,6 +26,7 @@ func cleanToasts() {
 }
 
 class LNToastView: UIView {
+    private let iconView = UIImageView()
     private let textLabel = UILabel()
     
     override init(frame: CGRect) {
@@ -34,8 +35,10 @@ class LNToastView: UIView {
         setupViews()
     }
     
-    func show(_ toast: String) {
+    func show(_ toast: String, icon: UIImage? = nil) {
         textLabel.text = toast
+        iconView.image = icon
+        iconView.isHidden = icon == nil
         
         guard let window = UIView.appKeyWindow else { return }
         window.addSubview(self)
@@ -73,14 +76,24 @@ extension LNToastView {
         layer.cornerRadius = 18
         backgroundColor = .black.withAlphaComponent(0.8)
         
+        let stackView = UIStackView()
+        stackView.spacing = 4
+        stackView.axis = .vertical
+        stackView.alignment = .center
+        addSubview(stackView)
+        stackView.snp.makeConstraints { make in
+            make.horizontalEdges.equalToSuperview().inset(16)
+            make.verticalEdges.equalToSuperview().inset(12)
+        }
+    
+        stackView.addArrangedSubview(iconView)
+        iconView.snp.makeConstraints { make in
+            make.width.height.equalTo(32)
+        }
+        
         textLabel.font = .body_m
         textLabel.textColor = .text_1
         textLabel.numberOfLines = 0
-        addSubview(textLabel)
-        textLabel.snp.makeConstraints { make in
-            make.center.equalToSuperview()
-            make.leading.equalToSuperview().offset(16)
-            make.top.equalToSuperview().offset(12)
-        }
+        stackView.addArrangedSubview(textLabel)
     }
 }

+ 10 - 1
Lanu/Views/Room/ViewModel/LNRoomViewModel.swift

@@ -68,6 +68,10 @@ enum LNApplyingSeatType: Int, Decodable {
 }
 
 
+enum LNApplySeatErrCode: Int {
+    case noPermission = 50001
+}
+
 class LNRoomViewModel: NSObject {
     let roomId: String
     private let seatStore: LiveSeatStore
@@ -206,7 +210,12 @@ extension LNRoomViewModel {
                     handler(err == nil)
                 }
                 if let err {
-                    showToast(err.errorDesc)
+                    if case .serverError(let code, _) = err,
+                       code == LNApplySeatErrCode.noPermission.rawValue {
+                        showToast(err.errorDesc, icon: .icAbout.withTintColor(.fill))
+                    } else {
+                        showToast(err.errorDesc)
+                    }
                 } else if let self {
                     waitingForSeat = index == .guest ? .guest : index != .host ? .playmate : .none
                 }