فهرست منبع

Merge remote-tracking branch 'origin/main' into dev

* origin/main:
  fix: 修复个人信息引导页重复出现的问题
  feat: 新用户的性别和年龄改为非必填项

# Conflicts:
#	Lanu/Localizable.xcstrings
陈文艺 2 ماه پیش
والد
کامیت
618ae9cd19

+ 6 - 397
Lanu/Localizable.xcstrings

@@ -1318,19 +1318,19 @@
         "en" : {
           "stringUnit" : {
             "state" : "translated",
-            "value" : "The playmate has accepted the order. Waiting for the playmate to start serving"
+            "value" : "Companion service completed. Go rate the service now!"
           }
         },
         "id" : {
           "stringUnit" : {
             "state" : "translated",
-            "value" : "Teman bermain telah menerima pesanan. Menunggu teman bermain memulai layanan"
+            "value" : "Layanan pendamping selesai, ayo beri penilaian!"
           }
         },
         "zh-Hans" : {
           "stringUnit" : {
             "state" : "translated",
-            "value" : "陪玩师已接单,等待陪玩师开始服务"
+            "value" : "陪玩师服务已完成,快去给TA的服务进行评价吧"
           }
         }
       }
@@ -6539,410 +6539,19 @@
         "en" : {
           "stringUnit" : {
             "state" : "translated",
-            "value" : "Introduce yourself with your voice"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Kenalalkan dengan suara"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "用声音介绍你自己"
-          }
-        }
-      }
-    },
-    "A00287" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Displaying"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Sedang Ditampilkan"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "展示中"
-          }
-        }
-      }
-    },
-    "A00288" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Under Review"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Sedang Diverifikasi"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "审核中"
-          }
-        }
-      }
-    },
-    "A00289" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Talent Show"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Pameran Bakat"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "才艺展示"
-          }
-        }
-      }
-    },
-    "A00290" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Voice"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Suara"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "声音"
-          }
-        }
-      }
-    },
-    "A00291" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Sound Settings"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Pengaturan Suara"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "设置声音"
-          }
-        }
-      }
-    },
-    "A00292" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Tap to Start Recording"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Klik untuk Memulai Perekaman"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "点击开始录音"
-          }
-        }
-      }
-    },
-    "A00293" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Tap to Stop Recording"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Klik Akhiri Rekam"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "点击结束录音"
-          }
-        }
-      }
-    },
-    "A00294" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Recording time must be at least 3 seconds."
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Waktu rekam minimal 3 detik."
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "录音时间不能低于3秒哦"
-          }
-        }
-      }
-    },
-    "A00295" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Re-record"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Ulang"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "重录"
-          }
-        }
-      }
-    },
-    "A00296" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Tap to Preview"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Klik Preview"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "点击试听"
-          }
-        }
-      }
-    },
-    "A00297" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Audio Under Review"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Audio Sedang Diverifikasi"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "音频审核中"
-          }
-        }
-      }
-    },
-    "A00298" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Please wait patiently"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Silakan tunggu dengan sabar"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "请耐心等候"
-          }
-        }
-      }
-    },
-    "A00299" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "File does not exist"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Berkas tidak ditemukan"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "文件不存在"
-          }
-        }
-      }
-    },
-    "A00300" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Upload Cancelled"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Unggahan Dibatalkan"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "上传已取消"
-          }
-        }
-      }
-    },
-    "A00301" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Upload Failed"
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Unggahan Gagal"
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "上传失败"
-          }
-        }
-      }
-    },
-    "A00302" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "File is uploading. Do not upload again."
-          }
-        },
-        "id" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Berkas sedang diunggah, jangan unggah ulang."
-          }
-        },
-        "zh-Hans" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "文件正在上传中,请勿重复上传"
-          }
-        }
-      }
-    },
-    "A00303" : {
-      "extractionState" : "manual",
-      "localizations" : {
-        "en" : {
-          "stringUnit" : {
-            "state" : "translated",
-            "value" : "Are you sure you want to abandon the recording?"
+            "value" : "Skip"
           }
         },
         "id" : {
           "stringUnit" : {
             "state" : "translated",
-            "value" : "Apakah kamu yakin ingin meninggalkan perekaman?"
+            "value" : "Lewati"
           }
         },
         "zh-Hans" : {
           "stringUnit" : {
             "state" : "translated",
-            "value" : "确定放弃录制吗?"
+            "value" : "跳过"
           }
         }
       }

+ 1 - 2
Lanu/Manager/Profile/Network/LNProfileResponse.swift

@@ -57,8 +57,7 @@ class LNUserProfileVO: Decodable, Copyable {
     var distance: Double = 0
     
     var isAvailable: Bool {
-        gender != .unknow
-        && !avatar.isEmpty
+        !avatar.isEmpty
         && !nickname.isEmpty
     }
     

+ 5 - 5
Lanu/Views/IM/Chat/Cells/LNIMChatOrderMessageCell.swift

@@ -103,22 +103,22 @@ class LNIMChatOrderMessageCell: UITableViewCell {
         case .servicing:
             statusIc.image = .icImChatOrderProcessing
             statusLabel.text = .init(key: "A00068")
+            tipsLabel.text = .init(key: "A00075")
             
-            if isCreator {
-                tipsLabel.text = .init(key: "A00074")
-            } else {
-                tipsLabel.text = .init(key: "A00075")
+            if !isCreator {
                 menuButton.isHidden = false
                 menuButton.setTitle(.init(key: "A00069"), for: .normal)
             }
         case .serviceDone:
             statusIc.image = .icImChatOrderComplete
             statusLabel.text = .init(key: "A00070")
-            tipsLabel.text = .init(key: "A00059")
             
             if isCreator {
+                tipsLabel.text = .init(key: "A00058")
                 menuButton.isHidden = false
                 menuButton.setTitle(.init(key: "A00069"), for: .normal)
+            } else {
+                tipsLabel.text = .init(key: "A00074")
             }
         case .cancelled:
             statusIc.image = .icImChatOrderCancel

+ 54 - 53
Lanu/Views/Login/Setup/LNBaseInfoSetupViewController.swift

@@ -40,12 +40,12 @@ class LNBaseInfoSetupViewController: LNViewController {
     private let nameInputField = UITextField()
     private let randomView = UIView()
     
-    private let birthDayLabel = UILabel()
-    private var curDate: TimeInterval = Date().yearAgo(-18).timeIntervalSince1970 {
-        didSet {
-            birthDayLabel.text = curDate.formattedFullDate("-")
-        }
-    }
+//    private let birthDayLabel = UILabel()
+//    private var curDate: TimeInterval = Date().yearAgo(-18).timeIntervalSince1970 {
+//        didSet {
+//            birthDayLabel.text = curDate.formattedFullDate("-")
+//        }
+//    }
     
     private let nextButton = UIButton()
     
@@ -205,7 +205,7 @@ extension LNBaseInfoSetupViewController {
         nextButton.addAction(UIAction(handler: { [weak self] _ in
             guard let self else { return }
             updateConfig.nickName = nameInputField.text ?? ""
-            updateConfig.birthday = curDate.formattedFullDate("-", normal: true)
+//            updateConfig.birthday = curDate.formattedFullDate("-", normal: true)
             updateConfig.avatar = avatar.imageUrl ?? ""
             view.pushToInterestSetup(updateConfig)
         }), for: .touchUpInside)
@@ -253,16 +253,17 @@ extension LNBaseInfoSetupViewController {
         name.snp.makeConstraints { make in
             make.horizontalEdges.equalToSuperview()
             make.top.equalTo(avatar.snp.bottom).offset(16)
-        }
-        
-        let birthDay = buildBirthDay()
-        container.addSubview(birthDay)
-        birthDay.snp.makeConstraints { make in
-            make.horizontalEdges.equalToSuperview()
-            make.top.equalTo(name.snp.bottom).offset(22)
             make.bottom.equalToSuperview()
         }
         
+//        let birthDay = buildBirthDay()
+//        container.addSubview(birthDay)
+//        birthDay.snp.makeConstraints { make in
+//            make.horizontalEdges.equalToSuperview()
+//            make.top.equalTo(name.snp.bottom).offset(22)
+//            make.bottom.equalToSuperview()
+//        }
+        
         return container
     }
     
@@ -368,45 +369,45 @@ extension LNBaseInfoSetupViewController {
         return container
     }
     
-    private func buildBirthDay() -> UIView {
-        let container = UIView()
-        container.backgroundColor = .fill
-        container.layer.cornerRadius = 26
-        container.snp.makeConstraints { make in
-            make.height.equalTo(52)
-        }
-        container.onTap { [weak self] in
-            guard let self else { return }
-            let panel = LNBirthdayDatePickerPanel()
-            panel.setDefault(curDate)
-            panel.handler = { [weak self] date in
-                guard let self else { return }
-                curDate = date
-            }
-            panel.showIn(view)
-        }
-        
-        let config = UIImage.SymbolConfiguration(pointSize: 6)
-        let arrow = UIImageView()
-        arrow.image = .init(systemName: "arrowtriangle.down.fill", withConfiguration: config)
-        arrow.tintColor = .text_5
-        container.addSubview(arrow)
-        arrow.snp.makeConstraints { make in
-            make.centerY.equalToSuperview()
-            make.trailing.equalToSuperview().offset(-16)
-        }
-        
-        birthDayLabel.text = curDate.formattedFullDate("-")
-        birthDayLabel.font = .body_l
-        birthDayLabel.textColor = .text_5
-        container.addSubview(birthDayLabel)
-        birthDayLabel.snp.makeConstraints { make in
-            make.centerY.equalToSuperview()
-            make.leading.equalToSuperview().offset(16)
-        }
-        
-        return container
-    }
+//    private func buildBirthDay() -> UIView {
+//        let container = UIView()
+//        container.backgroundColor = .fill
+//        container.layer.cornerRadius = 26
+//        container.snp.makeConstraints { make in
+//            make.height.equalTo(52)
+//        }
+//        container.onTap { [weak self] in
+//            guard let self else { return }
+//            let panel = LNBirthdayDatePickerPanel()
+//            panel.setDefault(curDate)
+//            panel.handler = { [weak self] date in
+//                guard let self else { return }
+//                curDate = date
+//            }
+//            panel.showIn(view)
+//        }
+//        
+//        let config = UIImage.SymbolConfiguration(pointSize: 6)
+//        let arrow = UIImageView()
+//        arrow.image = .init(systemName: "arrowtriangle.down.fill", withConfiguration: config)
+//        arrow.tintColor = .text_5
+//        container.addSubview(arrow)
+//        arrow.snp.makeConstraints { make in
+//            make.centerY.equalToSuperview()
+//            make.trailing.equalToSuperview().offset(-16)
+//        }
+//        
+//        birthDayLabel.text = curDate.formattedFullDate("-")
+//        birthDayLabel.font = .body_l
+//        birthDayLabel.textColor = .text_5
+//        container.addSubview(birthDayLabel)
+//        birthDayLabel.snp.makeConstraints { make in
+//            make.centerY.equalToSuperview()
+//            make.leading.equalToSuperview().offset(16)
+//        }
+//        
+//        return container
+//    }
     
     private func buildFakeNavBar() -> UIView {
         fakeNavBar.snp.makeConstraints { make in

+ 16 - 0
Lanu/Views/Login/Setup/LNGenderSetupViewController.swift

@@ -263,6 +263,22 @@ extension LNGenderSetupViewController {
             make.width.height.equalTo(24)
         }
         
+        let skipButton = UIButton()
+        skipButton.setTitle(.init(key: "A00286"), for: .normal)
+        skipButton.titleLabel?.font = .heading_h2
+        skipButton.setTitleColor(.text_5, for: .normal)
+        skipButton.addAction(UIAction(handler: { [weak self] _ in
+            guard let self else { return }
+            
+            let config = LNProfileUpdateConfig()
+            view.pushToBaseInfoSetup(config)
+        }), for: .touchUpInside)
+        container.addSubview(skipButton)
+        skipButton.snp.makeConstraints { make in
+            make.centerY.equalToSuperview()
+            make.trailing.equalToSuperview().offset(-16)
+        }
+        
         return fakeNavBar
     }
 }

+ 0 - 1
Lanu/Views/Main/LNMainViewController.swift

@@ -49,7 +49,6 @@ class LNMainViewController: UITabBarController {
         selectedViewController = home
         
         delegate = self
-        
     }
     
     override func viewWillAppear(_ animated: Bool) {