Commit ece9f8c4 authored by Steven杜宇's avatar Steven杜宇

// UI

parent 604ef0b7
......@@ -362,7 +362,6 @@
045C108B2D12CA5F00BD2DC0 /* YHSmsCodeInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0EB22D12CA5E00BD2DC0 /* YHSmsCodeInputView.swift */; };
045C108C2D12CA5F00BD2DC0 /* YHActivityDetailCell0.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0A742D12CA5E00BD2DC0 /* YHActivityDetailCell0.swift */; };
045C108D2D12CA5F00BD2DC0 /* YHSelectApplicantCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0B852D12CA5E00BD2DC0 /* YHSelectApplicantCell.swift */; };
045C108E2D12CA5F00BD2DC0 /* YHNameCardViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0A892D12CA5E00BD2DC0 /* YHNameCardViewController.swift */; };
045C108F2D12CA5F00BD2DC0 /* YHFamilyMemberInfoListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0DAC2D12CA5E00BD2DC0 /* YHFamilyMemberInfoListVC.swift */; };
045C10902D12CA5F00BD2DC0 /* YHHKEventWebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0AA72D12CA5E00BD2DC0 /* YHHKEventWebViewController.swift */; };
045C10912D12CA5F00BD2DC0 /* YHDocumentFileItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0C392D12CA5E00BD2DC0 /* YHDocumentFileItemView.swift */; };
......@@ -672,7 +671,6 @@
045C11C22D12CA5F00BD2DC0 /* YHMyFileListFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0C052D12CA5E00BD2DC0 /* YHMyFileListFooterView.swift */; };
045C11C32D12CA5F00BD2DC0 /* YHChildBasicInfoVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0DA12D12CA5E00BD2DC0 /* YHChildBasicInfoVC.swift */; };
045C11C42D12CA5F00BD2DC0 /* YHMyFriendsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0A942D12CA5E00BD2DC0 /* YHMyFriendsCell.swift */; };
045C11C52D12CA5F00BD2DC0 /* YHMyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0EDE2D12CA5E00BD2DC0 /* YHMyViewController.swift */; };
045C11C62D12CA5F00BD2DC0 /* YHListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0ECF2D12CA5E00BD2DC0 /* YHListViewController.swift */; };
045C11C72D12CA5F00BD2DC0 /* YHWorkExperiencePositionTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0E642D12CA5E00BD2DC0 /* YHWorkExperiencePositionTableViewCell.swift */; };
045C11C82D12CA5F00BD2DC0 /* YHOrderSearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045C0B162D12CA5E00BD2DC0 /* YHOrderSearchViewController.swift */; };
......@@ -1558,7 +1556,6 @@
045C0A862D12CA5E00BD2DC0 /* YHMatchResultListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMatchResultListViewController.swift; sourceTree = "<group>"; };
045C0A872D12CA5E00BD2DC0 /* YHMatchUserViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMatchUserViewController.swift; sourceTree = "<group>"; };
045C0A882D12CA5E00BD2DC0 /* YHMyGoodFriendsVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyGoodFriendsVC.swift; sourceTree = "<group>"; };
045C0A892D12CA5E00BD2DC0 /* YHNameCardViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHNameCardViewController.swift; sourceTree = "<group>"; };
045C0A8B2D12CA5E00BD2DC0 /* YHFriendListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHFriendListModel.swift; sourceTree = "<group>"; };
045C0A8C2D12CA5E00BD2DC0 /* YHMatchUserInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMatchUserInfo.swift; sourceTree = "<group>"; };
045C0A8D2D12CA5E00BD2DC0 /* YHUserInformationModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHUserInformationModel.swift; sourceTree = "<group>"; };
......@@ -2432,7 +2429,6 @@
045C0EDB2D12CA5E00BD2DC0 /* YHMyNotifySettingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyNotifySettingVC.swift; sourceTree = "<group>"; };
045C0EDC2D12CA5E00BD2DC0 /* YHMyPermissionSettingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyPermissionSettingVC.swift; sourceTree = "<group>"; };
045C0EDD2D12CA5E00BD2DC0 /* YHMySettingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMySettingViewController.swift; sourceTree = "<group>"; };
045C0EDE2D12CA5E00BD2DC0 /* YHMyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHMyViewController.swift; sourceTree = "<group>"; };
045C0EDF2D12CA5E00BD2DC0 /* YHTestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHTestViewController.swift; sourceTree = "<group>"; };
045C0EE02D12CA5E00BD2DC0 /* YHVideoPlaySettingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHVideoPlaySettingVC.swift; sourceTree = "<group>"; };
045C0EE22D12CA5E00BD2DC0 /* YHCollectionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCollectionModel.swift; sourceTree = "<group>"; };
......@@ -3285,7 +3281,6 @@
045C0A862D12CA5E00BD2DC0 /* YHMatchResultListViewController.swift */,
045C0A872D12CA5E00BD2DC0 /* YHMatchUserViewController.swift */,
045C0A882D12CA5E00BD2DC0 /* YHMyGoodFriendsVC.swift */,
045C0A892D12CA5E00BD2DC0 /* YHNameCardViewController.swift */,
);
path = C;
sourceTree = "<group>";
......@@ -6038,7 +6033,6 @@
045C0EDB2D12CA5E00BD2DC0 /* YHMyNotifySettingVC.swift */,
045C0EDC2D12CA5E00BD2DC0 /* YHMyPermissionSettingVC.swift */,
045C0EDD2D12CA5E00BD2DC0 /* YHMySettingViewController.swift */,
045C0EDE2D12CA5E00BD2DC0 /* YHMyViewController.swift */,
04AFEF3E2D5D8F8A0007A011 /* YHMyNewViewController.swift */,
045C0EDF2D12CA5E00BD2DC0 /* YHTestViewController.swift */,
045C0EE02D12CA5E00BD2DC0 /* YHVideoPlaySettingVC.swift */,
......@@ -7912,7 +7906,6 @@
0411CEF12D153F6300644D35 /* YHGCWorkExperienceViewController.swift in Sources */,
045C108D2D12CA5F00BD2DC0 /* YHSelectApplicantCell.swift in Sources */,
0411CF042D1A815100644D35 /* YHGCMySignatureDetailViewModel.swift in Sources */,
045C108E2D12CA5F00BD2DC0 /* YHNameCardViewController.swift in Sources */,
045C108F2D12CA5F00BD2DC0 /* YHFamilyMemberInfoListVC.swift in Sources */,
045C10902D12CA5F00BD2DC0 /* YHHKEventWebViewController.swift in Sources */,
045C10912D12CA5F00BD2DC0 /* YHDocumentFileItemView.swift in Sources */,
......@@ -8283,7 +8276,6 @@
045C11C22D12CA5F00BD2DC0 /* YHMyFileListFooterView.swift in Sources */,
045C11C32D12CA5F00BD2DC0 /* YHChildBasicInfoVC.swift in Sources */,
045C11C42D12CA5F00BD2DC0 /* YHMyFriendsCell.swift in Sources */,
045C11C52D12CA5F00BD2DC0 /* YHMyViewController.swift in Sources */,
045C11C62D12CA5F00BD2DC0 /* YHListViewController.swift in Sources */,
045C11C72D12CA5F00BD2DC0 /* YHWorkExperiencePositionTableViewCell.swift in Sources */,
045C11C82D12CA5F00BD2DC0 /* YHOrderSearchViewController.swift in Sources */,
......
......@@ -333,20 +333,20 @@ class YHCommunityViewController: YHBaseViewController {
extension YHCommunityViewController: JXSegmentedViewDelegate {
func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0)
if segmentedView.selectedIndex == 3 { // 人脉
bgImgV.isHidden = false
// friendsBtn.isHidden = false
cleanAllMsgBtn.isHidden = true
segmentedDataSource.titleNormalColor = UIColor(hex: 0xFFFFFF, alpha: 0.6)
segmentedDataSource.titleSelectedColor = .white
let indicator = JXSegmentedIndicatorLineView()
indicator.indicatorWidth = 16
indicator.indicatorHeight = 2
indicator.indicatorCornerRadius = 0.0
indicator.indicatorColor = UIColor.white
segmentedView.indicators = [indicator]
} else { // 非人脉tab
// if segmentedView.selectedIndex == 3 { // 人脉
// bgImgV.isHidden = false
//// friendsBtn.isHidden = false
// cleanAllMsgBtn.isHidden = true
// segmentedDataSource.titleNormalColor = UIColor(hex: 0xFFFFFF, alpha: 0.6)
// segmentedDataSource.titleSelectedColor = .white
// let indicator = JXSegmentedIndicatorLineView()
// indicator.indicatorWidth = 16
// indicator.indicatorHeight = 2
// indicator.indicatorCornerRadius = 0.0
// indicator.indicatorColor = UIColor.white
// segmentedView.indicators = [indicator]
//
// } else { // 非人脉tab
bgImgV.isHidden = true
friendsBtn.isHidden = true
cleanAllMsgBtn.isHidden = segmentedView.selectedIndex != 0
......@@ -358,7 +358,7 @@ extension YHCommunityViewController: JXSegmentedViewDelegate {
indicator.indicatorCornerRadius = 0.0
indicator.indicatorColor = UIColor.brandMainColor
segmentedView.indicators = [indicator]
}
// }
segmentedView.dataSource = segmentedDataSource
self.segmentedView.reloadDataWithoutListContainer()
}
......
......@@ -161,7 +161,7 @@ class YHInformationAuthorizationStepOneViewController: YHBaseViewController {
promptView = {
let view = YHFailPromptView()
view.titleLable.text = "温馨提示:请填写真实信息,AI人脉匹配更精准"
view.titleLable.text = "温馨提示:请填写真实信息,便于资源互换"
view.backgroundColor = UIColor.brandGrayColor2
view.titleLable.textColor = UIColor.brandGrayColor8
view.alertImageView.image = UIImage(named: "user_prompt_image")
......
......@@ -178,7 +178,7 @@ class YHMatchResultListViewController: YHBaseViewController {
}
if let userId = YHLoginManager.shared.userModel?.id, !userId.isEmpty {
let vc = YHNameCardViewController()
let vc = YHNewNameCardViewController()
vc.userId = userId
self.navigationController?.pushViewController(vc)
} else {
......@@ -189,7 +189,7 @@ class YHMatchResultListViewController: YHBaseViewController {
guard let self = self else { return }
if !uid.isEmpty {
YHLoginManager.shared.userModel?.id = uid
let vc = YHNameCardViewController()
let vc = YHNewNameCardViewController()
vc.userId = uid
self.navigationController?.pushViewController(vc)
}
......
......@@ -144,7 +144,7 @@ extension YHMyGoodFriendsVC: UITableViewDelegate, UITableViewDataSource {
if indexPath.section == 1 {
if 0 <= indexPath.row && indexPath.row < friendsArr.count {
let friend = self.friendsArr[indexPath.row]
let vc = YHNameCardViewController()
let vc = YHNewNameCardViewController()
vc.userId = friend.yhId
self.navigationController?.pushViewController(vc)
}
......
//
// YHMyNameCardViewController.swift
// galaxy
//
// Created by edy on 2024/6/18.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHNameCardViewController: YHBaseViewController {
var userId: String = ""
var cardInfoArr: [YHUserNameCardInfo] = []
let viewModel = YHMatchUserViewModel()
let authorModel = YHInformationAuthorizeViewModel()
lazy var tableView: UITableView = {
let tableView = UITableView(frame: .zero, style: .grouped)
tableView.estimatedSectionHeaderHeight = 100
tableView.showsVerticalScrollIndicator = false
tableView.separatorStyle = .none
tableView.delegate = self
tableView.dataSource = self
tableView.backgroundColor = .clear
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "UITableViewCell")
tableView.register(YHMyNameCardAvatarInfoCell.self, forCellReuseIdentifier: YHMyNameCardAvatarInfoCell.cellReuseIdentifier)
tableView.register(YHMyIntroductionCell.self, forCellReuseIdentifier: YHMyIntroductionCell.cellReuseIdentifier)
tableView.register(YHMyEducationCell.self, forCellReuseIdentifier: YHMyEducationCell.cellReuseIdentifier)
tableView.register(YHMyWorkExperienceCell.self, forCellReuseIdentifier: YHMyWorkExperienceCell.cellReuseIdentifier)
tableView.register(YHMyInterestTopicCell.self, forCellReuseIdentifier: YHMyInterestTopicCell.cellReuseIdentifier)
tableView.contentInset = UIEdgeInsets(top: 41, left: 0, bottom: 0, right: 0)
return tableView
}()
var isCurrentUser: Bool {
get {
return (!self.userId.isEmpty && self.userId == YHLoginManager.shared.userModel?.id)
}
}
lazy var bgImgView: UIImageView = {
let view = UIImageView(image: UIImage(named: "people_card_bg"))
return view
}()
lazy var navBar: YHCustomNavigationBar = {
let bar = YHCustomNavigationBar.navBar()
bar.backgroundColor = .clear
bar.title = self.isCurrentUser ? "我的名片" : "好友名片"
bar.titleColor = .white
bar.rightButton.setImage(UIImage(named: "people_card_authorized"), for: .normal)
bar.rightButton.setTitle("授权", for: .normal)
bar.rightButton.setTitleColor(UIColor.white, for: .normal)
bar.rightButton.titleLabel?.font = UIFont.PFSC_R(ofSize: 15)
bar.rightButton.snp.updateConstraints { make in
make.width.equalTo(55)
make.height.equalTo(44)
}
bar.backButton.setImage(UIImage(named: "back_icon_white"), for: .normal)
bar.backBlock = {
[weak self] in
guard let self = self else { return }
self.navigationController?.popViewController(animated: true)
}
bar.rightBtnClick = {
[weak self] in
guard let self = self else { return }
let vc = YHInformationAuthorizationStepTwoViewController()
vc.stepFlag = false
self.navigationController?.pushViewController(vc)
}
bar.rightButton.isHidden = !self.isCurrentUser
return bar
}()
override func viewDidLoad() {
super.viewDidLoad()
createUI()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if isCurrentUser {
requestAuthorization()
} else {
requestNameCardInfo()
}
}
func createUI() {
gk_navigationBar.isHidden = true
self.view.backgroundColor = UIColor.init(hex: 0xF8FAFB)
self.view.addSubview(bgImgView)
self.view.addSubview(self.tableView)
self.view.addSubview(self.navBar)
self.navBar.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalToSuperview().offset(k_Height_StatusBar)
make.height.equalTo(k_Height_NavContentBar)
}
self.bgImgView.snp.makeConstraints { make in
make.left.right.top.equalToSuperview()
make.height.equalTo(self.bgImgView.snp.width).multipliedBy(834.0/750.0)
}
self.tableView.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.bottom.equalToSuperview()
make.top.equalToSuperview().offset(16+k_Height_NavigationtBarAndStatuBar)
}
}
}
extension YHNameCardViewController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return self.cardInfoArr.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if 0 <= indexPath.section && indexPath.section < self.cardInfoArr.count {
let cardInfo = self.cardInfoArr[indexPath.section]
if cardInfo.infoType == .avatar {
guard let cell = tableView.dequeueReusableCell(withIdentifier: YHMyNameCardAvatarInfoCell.cellReuseIdentifier, for: indexPath) as? YHMyNameCardAvatarInfoCell else { return UITableViewCell() }
cell.userModel = cardInfo
cell.editBlock = { [weak self] in
guard let self = self else { return }
let vc = YHEditBaseUserInfoViewController()
vc.model = self.viewModel.nameCardInfo
self.navigationController?.pushViewController(vc)
}
return cell
}
if cardInfo.infoType == .honor || cardInfo.infoType == .introduce {
guard let introCell = tableView.dequeueReusableCell(withIdentifier: YHMyIntroductionCell.cellReuseIdentifier, for: indexPath) as? YHMyIntroductionCell else { return UITableViewCell() }
introCell.userModel = cardInfo
introCell.editBlock = { [weak self] in
guard let self = self else { return }
if cardInfo.infoType == .honor {
let vc = YHEditHonorViewController()
vc.model = self.viewModel.nameCardInfo
self.navigationController?.pushViewController(vc)
} else if cardInfo.infoType == .introduce {
let vc = YHEditPersonalProfileViewController()
vc.model = self.viewModel.nameCardInfo
self.navigationController?.pushViewController(vc)
}
}
return introCell
}
if cardInfo.infoType == .education {
guard let eduCell = tableView.dequeueReusableCell(withIdentifier: YHMyEducationCell.cellReuseIdentifier, for: indexPath) as? YHMyEducationCell else { return UITableViewCell() }
eduCell.userModel = cardInfo
eduCell.hiddenBtnBlock = {
[weak self] in
guard let self = self else { return }
YHWholeScreenTipsView.show(type: .nameCardEducation, targetView: eduCell.hiddenBtn)
}
eduCell.editBlock = { [weak self] in
guard let self = self else { return }
let vc = YHEditSchoolViewController()
vc.model = self.viewModel.nameCardInfo
self.navigationController?.pushViewController(vc)
}
return eduCell
}
if cardInfo.infoType == .workExperience {
guard let workCell = tableView.dequeueReusableCell(withIdentifier: YHMyWorkExperienceCell.cellReuseIdentifier, for: indexPath) as? YHMyWorkExperienceCell else { return UITableViewCell() }
workCell.userModel = cardInfo
workCell.hiddenBtnBlock = {
[weak self] in
guard let self = self else { return }
YHWholeScreenTipsView.show(type: .nameCardWorkExperience, targetView: workCell.hiddenBtn)
}
workCell.editBlock = { [weak self] in
guard let self = self else { return }
let vc = YHEditWorkViewController()
vc.model = self.viewModel.nameCardInfo
self.navigationController?.pushViewController(vc)
}
return workCell
}
if cardInfo.infoType == .topics {
guard let topicCell = tableView.dequeueReusableCell(withIdentifier: YHMyInterestTopicCell.cellReuseIdentifier, for: indexPath) as? YHMyInterestTopicCell else { return UITableViewCell() }
topicCell.userModel = cardInfo
topicCell.editBlock = { [weak self] in
guard let self = self else { return }
let vc = YHEditInterestViewController()
vc.model = self.viewModel.nameCardInfo
self.navigationController?.pushViewController(vc)
}
return topicCell
}
}
let defaultCell = tableView.dequeueReusableCell(withIdentifier: "UITableViewCell", for: indexPath)
return defaultCell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 16.0
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let view = UIView()
return view
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 1.0
}
}
extension YHNameCardViewController {
func requestAuthorization() {
self.authorModel.requestUserAuthorization { _, _ in
if self.authorModel.setModel.isclick_card != 2 && self.authorModel.setModel.information_to_card != 2 {
YHCommonAlertView.show("", "授权信息同步至您的名片并对您的好友可见", "取消", "确认", fullGuestureEnable: false) {
self.authorModel.requestInformationToCardSubmit(agress: 1) { _, _ in
self.requestNameCardInfo()
}
} callBack: {
self.authorModel.requestInformationToCardSubmit(agress: 2) { _, _ in
self.authorModel.requestBusinessCardAuthorize { _, _ in
self.requestNameCardInfo()
}
}
}
} else {
self.requestNameCardInfo()
}
}
}
func requestNameCardInfo() {
self.viewModel.getUserNameCardInfo(uid: self.userId) {
_, _ in
self.cardInfoArr.removeAll()
// 姓名头像信息
let model1 = YHUserNameCardInfo()
model1.infoType = .avatar
model1.isCurrentUser = self.isCurrentUser
model1.updateModel(self.viewModel.nameCardInfo)
self.cardInfoArr.append(model1)
// 个人简介信息
var isShowIntroduce = true
if !self.isCurrentUser {
isShowIntroduce = !self.viewModel.nameCardInfo.bio.isEmpty
}
if isShowIntroduce {
let model2 = YHUserNameCardInfo()
model2.infoType = .introduce
model2.isCurrentUser = self.isCurrentUser
model2.updateModel(self.viewModel.nameCardInfo)
self.cardInfoArr.append(model2)
}
// 教育经历信息
var isShowEducation = true
if !self.isCurrentUser {
isShowEducation = !self.viewModel.nameCardInfo.isHiddenEducation
if isShowEducation {
isShowEducation = (!self.viewModel.nameCardInfo.college.isEmpty || !self.viewModel.nameCardInfo.background.isEmpty || !self.viewModel.nameCardInfo.major.isEmpty)
}
}
if isShowEducation {
let model3 = YHUserNameCardInfo()
model3.infoType = .education
model3.isCurrentUser = self.isCurrentUser
model3.updateModel(self.viewModel.nameCardInfo)
self.cardInfoArr.append(model3)
}
// 工作经历信息
var isShowWorkExperience = true
if !self.isCurrentUser {
isShowWorkExperience = !self.viewModel.nameCardInfo.isHiddenWorkExperience
if isShowWorkExperience {
isShowWorkExperience = (!self.viewModel.nameCardInfo.companyName.isEmpty || !self.viewModel.nameCardInfo.position.isEmpty || !self.viewModel.nameCardInfo.industry.isEmpty)
}
}
if isShowWorkExperience {
let model4 = YHUserNameCardInfo()
model4.infoType = .workExperience
model4.isCurrentUser = self.isCurrentUser
model4.updateModel(self.viewModel.nameCardInfo)
self.cardInfoArr.append(model4)
}
// 荣誉奖项信息
var isShowHonor = true
if !self.isCurrentUser {
isShowHonor = !self.viewModel.nameCardInfo.honor.isEmpty
}
if isShowHonor {
let model5 = YHUserNameCardInfo()
model5.infoType = .honor
model5.isCurrentUser = self.isCurrentUser
model5.updateModel(self.viewModel.nameCardInfo)
self.cardInfoArr.append(model5)
}
// 兴趣话题
var isShowTopics = true
if !self.isCurrentUser {
isShowTopics = self.viewModel.nameCardInfo.topics.count > 0
}
if isShowTopics {
let model6 = YHUserNameCardInfo()
model6.infoType = .topics
model6.isCurrentUser = self.isCurrentUser
model6.updateModel(self.viewModel.nameCardInfo)
self.cardInfoArr.append(model6)
}
self.tableView.reloadData()
}
}
}
......@@ -17,10 +17,11 @@ class YHConnectListCell: UITableViewCell {
private lazy var avatarImageView: UIImageView = {
let imageView = UIImageView()
imageView.layer.borderWidth = 0.5
imageView.layer.borderColor = UIColor.brandGrayColor3.cgColor
imageView.layer.cornerRadius = 22
imageView.clipsToBounds = true
imageView.contentMode = .scaleAspectFill
imageView.backgroundColor = UIColor.brandGrayColor3
return imageView
}()
......@@ -51,7 +52,7 @@ class YHConnectListCell: UITableViewCell {
button.setTitle("添加好友", for: .normal)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 11)
button.setTitleColor(UIColor.brandGrayColor8, for: .normal)
button.layer.borderWidth = 1
button.layer.borderWidth = 0.5
button.layer.borderColor = UIColor.brandGrayColor5.cgColor
button.addTarget(self, action: #selector(didAddFriendBtnClicked), for: .touchUpInside)
return button
......@@ -109,6 +110,7 @@ class YHConnectListCell: UITableViewCell {
make.left.equalToSuperview().offset(20)
make.top.equalToSuperview().offset(20)
make.width.height.equalTo(44)
make.bottom.lessThanOrEqualTo(-20)
}
nameLabel.snp.makeConstraints { make in
......@@ -142,21 +144,23 @@ class YHConnectListCell: UITableViewCell {
make.top.equalTo(titleLabel.snp.bottom).offset(4)
make.right.equalToSuperview().offset(-20)
make.height.equalTo(15)
make.bottom.equalTo(-20)
make.bottom.lessThanOrEqualTo(-20)
}
separatorLine.snp.makeConstraints { make in
make.left.equalToSuperview().offset(20)
make.right.equalToSuperview().offset(-20)
make.bottom.equalToSuperview()
make.height.equalTo(1)
make.height.equalTo(0.5)
}
}
func updateModel(_ contact: YHContact) {
self.contact = contact
avatarImageView.sd_setImage(with: URL(string: contact.avatar), placeholderImage: UIImage(named: ""))
nameLabel.text = contact.username
contact.bio = "啊放假啊两地分居阿拉法久啊失蜡法开机啊索拉卡飞机阿卡拉说法登记卡拉萨"
detailLabel.text = contact.bio
var text1 = ""
......@@ -172,6 +176,11 @@ class YHConnectListCell: UITableViewCell {
}
titleLabel.text = text1
detailLabel.snp.updateConstraints { make in
make.top.equalTo(titleLabel.snp.bottom).offset(contact.bio.isEmpty ? 0 : 4)
make.height.equalTo(contact.bio.isEmpty ? 0 : 15)
}
if contact.type == YHContactRelation.stranger.rawValue {
addFriendButton.isHidden = false
statusLabel.isHidden = true
......
......@@ -9,6 +9,55 @@
import UIKit
import SafariServices
enum YHPersonalModuleItemType: Int {
case none = 0
case myCard
case myMessage
case myProgress
case myActivity
case scoreCenter
case inviteFriends
case recommend
case myPoster
case myTestCode
case appointGalaxyBay
case exchangeHistory
case myCourseVideo
case notifySettings
case permissionSettings
case playSettings
case infoCollectList
case infoShareList
case aboutUs
case deviceInfo
case version
case userItems// 用户条款
case privaceAgreement// 隐私协议
case myOrder // 我的订单 双十一订单入口
case mycart // 我的订单 双十一订单入口
case serviceStep
case myFriend
case myEnterprise
// case liveEntryTest //直播入口
}
class PersonalModuleItem {
var icon: String?
var title: String
var desc: String
var type: YHPersonalModuleItemType = .none
var isShowRedPoint: Bool = false
init(icon: String? = nil, title: String, desc: String = "", isShowRedPoint: Bool = false, type: YHPersonalModuleItemType) {
self.icon = icon
self.title = title
self.desc = desc
self.isShowRedPoint = isShowRedPoint
self.type = type
}
}
enum YHFunctionGroupType: Int {
case none = 0
case score = 1
......@@ -663,27 +712,6 @@ extension YHMyNewViewController {
extension YHMyNewViewController {
func enterMyNameCard() {
if let userId = YHLoginManager.shared.userModel?.id, !userId.isEmpty {
let vc = YHNameCardViewController()
vc.userId = userId
self.navigationController?.pushViewController(vc)
} else {
YHHUD.show(.progress(message: "加载中..."))
self.loginViewModel.getUserId {
[weak self] uid in
YHHUD.hide()
guard let self = self else { return }
if !uid.isEmpty {
YHLoginManager.shared.userModel?.id = uid
let vc = YHNameCardViewController()
vc.userId = uid
self.navigationController?.pushViewController(vc)
}
}
}
}
func enterUserInfoEditPage() {
let vc = YHEditBaseUserInfoViewController()
vc.model = self.userViewModel.nameCardInfo
......@@ -716,7 +744,6 @@ extension YHMyNewViewController {
switch item.type {
case .myCard:// 我的名片
enterNewNameCard()
// enterMyNameCard()
case .myMessage:// 我的消息
printLog("我的消息")
goToMessagePage()
......
//
// YHMainViewController.swift
// galaxy
//
// Created by EDY on 2023/12/20.
//
import UIKit
import SnapKit
import SafariServices
enum YHPersonalModuleItemType: Int {
case none = 0
case myCard
case myMessage
case myProgress
case myActivity
case scoreCenter
case inviteFriends
case recommend
case myPoster
case myTestCode
case appointGalaxyBay
case exchangeHistory
case myCourseVideo
case notifySettings
case permissionSettings
case playSettings
case infoCollectList
case infoShareList
case aboutUs
case deviceInfo
case version
case userItems// 用户条款
case privaceAgreement// 隐私协议
case myOrder // 我的订单 双十一订单入口
case mycart // 我的订单 双十一订单入口
case serviceStep
case myFriend
case myEnterprise
// case liveEntryTest //直播入口
}
class PersonalModuleItem {
var icon: String?
var title: String
var desc: String
var type: YHPersonalModuleItemType = .none
var isShowRedPoint: Bool = false
init(icon: String? = nil, title: String, desc: String = "", isShowRedPoint: Bool = false, type: YHPersonalModuleItemType) {
self.icon = icon
self.title = title
self.desc = desc
self.isShowRedPoint = isShowRedPoint
self.type = type
}
}
class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget {
let likeViewModel: YHMyLikeViewModel = YHMyLikeViewModel()
let msgViewModel: YHMsgViewModel = YHMsgViewModel()
let loginViewModel = YHLoginViewModel()
let userViewModel = YHMatchUserViewModel()
private lazy var princleVM: YHPrincleViewModel = {
let vm = YHPrincleViewModel()
return vm
}()
lazy var tableView: UITableView = {
let tableView = UITableView(frame: CGRect.zero, style: .grouped)
tableView.contentInsetAdjustmentBehavior = .never
tableView.estimatedSectionHeaderHeight = 1.0
tableView.showsVerticalScrollIndicator = false
tableView.tableHeaderView = headerView
tableView.backgroundColor = .clear
tableView.separatorStyle = .none
tableView.bounces = false
tableView.register(YHPersonalCenterCell.self, forCellReuseIdentifier: YHPersonalCenterCell.cellReuseIdentifier)
tableView.delegate = self
tableView.dataSource = self
return tableView
}()
lazy var bgImgView: UIImageView = {
let imgView = UIImageView(image: UIImage(named: "mine_header_bg"))
return imgView
}()
// var items: [PersonalModuleItem] = {
// var arrData = [
// PersonalModuleItem(icon: "mine_item_card", title: "我的名片".local, type:.myCard),
// PersonalModuleItem(icon: "mine_item_msg", title: "我的消息".local, type:.myMessage),
// PersonalModuleItem(icon: "mine_item_scoreCenter", title: "积分中心".local, type:.scoreCenter),
// PersonalModuleItem(icon: "mine_item_code", title: "我的测评码".local, type:.myTestCode),
// PersonalModuleItem(icon: "mine_item_appoint", title: "关于银河湾".local, type:.appointGalaxyBay),
// PersonalModuleItem(icon: "mine_item_activity", title: "我的活动".local, type:.myActivity),
// PersonalModuleItem(icon: "mine_item_about_us", title: "关于我们".local, type:. aboutUs)
// ]
// return arrData
// }()
var items: [PersonalModuleItem] = []
lazy var headerView: YHUserInfoHeaderView = {
let view = YHUserInfoHeaderView.createView()
view.settingBlock = {
[weak self] in
guard let self = self else { return }
if !checkLogin() { return }
let vc = YHMySettingViewController()
self.navigationController?.pushViewController(vc)
}
view.evaluateBlock = {
[weak self] in
guard let self = self else { return }
if !checkLogin() { return }
}
view.avatarClickBlock = {
[weak self] in
guard let self = self else { return }
if !checkLogin() { return }
}
view.nickNameClickBlock = {
[weak self] in
guard let self = self else { return }
if !checkLogin() { return }
}
view.likeClick = {
[weak self] in
guard let self = self else { return }
if !checkLogin() { return }
let vc = YHMyLikeActivityViewController()
vc.myDefaultNavItemIndex = 0
self.navigationController?.pushViewController(vc)
}
view.collectClick = {
[weak self] in
guard let self = self else { return }
if !checkLogin() { return }
let vc = YHMyLikeActivityViewController()
vc.myDefaultNavItemIndex = 1
self.navigationController?.pushViewController(vc)
print("收藏")
}
view.recentScanClick = {
[weak self] in
guard let self = self else { return }
if !checkLogin() { return }
let vc = YHMyLikeActivityViewController()
vc.myDefaultNavItemIndex = 2
self.navigationController?.pushViewController(vc)
print("最近浏览")
}
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
initView()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
loadItems()
requestLikeCollectionCount()
getTotalUnreadMsgCount()
checkSettingRedPoint()
headerView.updateAvatar()
requstUserBasicInfo()
showAlert()
}
// override func viewDidAppear(_ animated: Bool) {
// super.viewDidAppear(animated)
// showYHManagerGuideView(self.navigationController)
// }
private func showAlert() {
guard YHLoginManager.shared.isLogin() else {
return
}
princleVM.getPrincleStatus { [weak self] success, _ in
if success {
guard let self = self else {
return
}
guard let model = self.princleVM.alertStatusModel else {
return
}
if model.type == 20 {
self.showYHManagerGuideView(self.navigationController)
}
}
}
}
@objc func clickBtn() {
}
func checkLogin() -> Bool {
if YHLoginManager.shared.isLogin() == false {
YHOneKeyLoginManager.shared.oneKeyLogin()
return false
}
return true
}
func checkSettingRedPoint() {
if YHConfigManager.shared.loadNewDataFlag == false {
YHConfigManager.shared.loadConfigData {
[weak self] in
guard let self = self else { return }
self.headerView.isShowSettingRedPoint = YHAppVersionManager.shared.needShowRedPointOfSuggestVersionUpdate()
}
} else {
self.headerView.isShowSettingRedPoint = YHAppVersionManager.shared.needShowRedPointOfSuggestVersionUpdate()
}
}
func initView() {
gk_navigationBar.isHidden = true
// 背景色必须放底部
view.addSubview(bgImgView)
view.addSubview(tableView)
self.view.backgroundColor = .white
updateUserUI()
bgImgView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
let topMargin = (k_Height_StatusBar > 20.0 ? 0 : -24)
make.top.equalToSuperview().offset(topMargin)
make.height.equalTo(312.0)
}
tableView.snp.makeConstraints { make in
make.left.right.top.equalToSuperview()
make.bottom.equalToSuperview().offset(-k_Height_TabBar)
}
NotificationCenter.default.addObserver(self, selector: #selector(loginSuccess), name: YhConstant.YhNotification.didLoginSuccessNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(logoutSuccess), name: YhConstant.YhNotification.didLogoutSuccessNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(clearUnreadBadge), name: YhConstant.YhNotification.didMarkAllMessagesReadedNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(didRevUatParam), name: YhConstant.YhNotification.didRevUatParam, object: nil)
}
deinit {
NotificationCenter.default.removeObserver(self)
}
func requestLikeCollectionCount() {
self.likeViewModel.getLikeCollectionRecentScanCountInfo {
[weak self] _, _ in
guard let self = self else { return }
self.headerView.updateLikeCollectCount(self.likeViewModel.likeCollectCountInfo)
}
}
// 请求未读消息总数
func getTotalUnreadMsgCount() {
if YHLoginManager.shared.isLogin() {
self.msgViewModel.requestTotalUnreadMsgCount {
[weak self] _, _ in
guard let self = self else { return }
DispatchQueue.main.async {
var unreadCount = self.msgViewModel.unreadTotalCount
if YHButlerServiceManager.shared.isUatAllowed() {
unreadCount = self.msgViewModel.unreadTotalCount + YHButlerServiceManager.shared.unreadCount
}
for item in self.items {
if item.type == .myMessage {
item.isShowRedPoint = unreadCount > 0
break
}
}
self.tableView .reloadData()
}
}
}
}
@objc func didRevUatParam() {
loadItems()
}
@objc func clearUnreadBadge() {
DispatchQueue.main.async {
for item in self.items {
if item.type == .myMessage {
item.isShowRedPoint = false
break
}
}
self.tableView .reloadData()
}
}
// uat 添加items
func loadItems() {
items.removeAll()
if YHUatHelper.shared.getUatModuleStatusBy(module: .Mine_MyCard) == 1 {
let item = PersonalModuleItem(icon: "mine_item_card", title: "我的名片".local, type: .myCard)
items.append(item)
}
if let configModel = YHConfigManager.shared.reqVM.configModel, configModel.is_integral_open {
let item = PersonalModuleItem(icon: "mine_item_myOrder", title: "我的订单".local, type: .myOrder)
items.append(item)
}
if let configModel = YHConfigManager.shared.reqVM.configModel, configModel.is_integral_open {
let item = PersonalModuleItem(icon: "mine_item_service_center", title: "服务进度".local, type: .serviceStep)
items.append(item)
}
if let configModel = YHConfigManager.shared.reqVM.configModel, configModel.is_integral_open {
let item = PersonalModuleItem(icon: "mine_item_cart", title: "购物车".local, type: .mycart)
items.append(item)
}
do {
let item = PersonalModuleItem(icon: "mine_item_msg", title: "我的消息".local, type: .myMessage)
items.append(item)
}
if let configModel = YHConfigManager.shared.reqVM.configModel, configModel.is_integral_open {
if YHUatHelper.shared.getUatModuleStatusBy(module: .Mine_IntegralCenter) == 1 {
let item = PersonalModuleItem(icon: "mine_item_scoreCenter", title: "积分中心".local, type: .scoreCenter)
items.append(item)
}
}
if YHUatHelper.shared.getUatModuleStatusBy(module: .Mine_EvaluationCode) == 1 {
let item = PersonalModuleItem(icon: "mine_item_code", title: "我的测评码".local, type: .myTestCode)
items.append(item)
}
if YHUatHelper.shared.getUatModuleStatusBy(module: .Mine_AboutYinHeHarbour) == 1 {
let item = PersonalModuleItem(icon: "mine_item_appoint", title: "关于银河湾".local, type: .appointGalaxyBay)
items.append(item)
}
if YHUatHelper.shared.getUatModuleStatusBy(module: .Mine_MyActivity) == 1 {
let item = PersonalModuleItem(icon: "mine_item_activity", title: "我的活动".local, type: .myActivity)
items.append(item)
}
if YHUatHelper.shared.getUatModuleStatusBy(module: .Mine_AboutUS) == 1 {
let item = PersonalModuleItem(icon: "mine_item_about_us", title: "关于我们".local, type: .aboutUs)
items.append(item)
}
// let item = PersonalModuleItem(icon: "mine_item_about_us", title: "直播测试入口".local, type: .liveEntryTest)
// items.append(item)
tableView.reloadData()
}
}
extension YHMyViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: YHPersonalCenterCell.cellReuseIdentifier, for: indexPath) as? YHPersonalCenterCell else { return UITableViewCell() }
let item: PersonalModuleItem = items[indexPath.row]
cell.updateItem(item: item)
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 53.0
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row >= items.count { return }
if !checkLogin() {
return
}
let item: PersonalModuleItem = items[indexPath.row]
switch item.type {
case .myCard:// 我的名片
if let userId = YHLoginManager.shared.userModel?.id, !userId.isEmpty {
let vc = YHNameCardViewController()
vc.userId = userId
self.navigationController?.pushViewController(vc)
} else {
YHHUD.show(.progress(message: "加载中..."))
self.loginViewModel.getUserId {
[weak self] uid in
YHHUD.hide()
guard let self = self else { return }
if !uid.isEmpty {
YHLoginManager.shared.userModel?.id = uid
let vc = YHNameCardViewController()
vc.userId = uid
self.navigationController?.pushViewController(vc)
}
}
}
case .myMessage:// 我的消息
printLog("我的消息")
goToMessagePage()
case .scoreCenter://// 积分中心
printLog("积分中心")
if let param = YHLoginManager.shared.userModel?.token, param.count>5 {
printLog(param)
var url = YHBaseUrlManager.shared.curH5URL() + "superApp/integral"
url = url + "?param=" + YHLoginManager.shared.h5Token
let vc = YHH5WebViewVC()
vc.title = "积分中心"
vc.navTitle = "积分中心"
vc.url = url
vc.isFullScreenFlag = true
vc.isSupportWebviewInterBackFlag = true
self.navigationController?.pushViewController(vc)
}
case .myTestCode:// 我的测评码
printLog("我的测评码")
let vc = YHHomeWebViewController()
vc.title = "香港身份测评码"
vc.vcTitle = "香港身份测评码"
vc.showSavePicBottomFlag = true
vc.url = "https://cdn-public.galaxy-immi.com/app/cepingma.png"
self.navigationController?.pushViewController(vc)
case .appointGalaxyBay:// 预约银河湾
printLog("预约银河湾")
let vc = YHListViewController()
self.navigationController?.pushViewController(vc)
case .myActivity:
printLog("我的活动")
let vc = YHActivityListViewController()
vc.type = 1
self.navigationController?.pushViewController(vc)
case .aboutUs:
let vc = YHAboutGalaxyViewController()
self.navigationController?.pushViewController(vc)
case .myOrder:
// 我的订单
if let token = YHLoginManager.shared.userModel?.token, token.count > 5 {
var url = YHBaseUrlManager.shared.curH5URL() + "superAppBridge.html#/order/my"
url = url + "?param=" + YHLoginManager.shared.h5Token
printLog("URL: \(url)")
let vc = YHH5WebViewVC()
vc.url = url
vc.isFullScreenFlag = false
vc.navTitle = "我的订单"
vc.isSupportWebviewInterBackFlag = true
UIViewController.current?.navigationController?.pushViewController(vc)
}
case .mycart:
// 我的订单
if let token = YHLoginManager.shared.userModel?.token, token.count > 5 {
var url = YHBaseUrlManager.shared.curH5URL() + "superAppBridge.html#/goods/cart"
url = url + "?param=" + YHLoginManager.shared.h5Token
printLog("URL: \(url)")
var tUrl = url
if !url.contains("navigationH=") {
tUrl = url + "?navigationH=\(k_Height_NavigationtBarAndStatuBar)"
if url.contains("?") {
tUrl = url + "&navigationH=\(k_Height_NavigationtBarAndStatuBar)"
}
}
let vc = YHH5WebViewVC()
vc.url = tUrl
vc.isFullScreenFlag = false
vc.navTitle = "购物车"
vc.isSupportWebviewInterBackFlag = true
UIViewController.current?.navigationController?.pushViewController(vc)
}
case .serviceStep:
UIViewController.current?.tabBarController?.selectedIndex = 1
default:
printLog("不需要响应")
}
}
private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat {
return 1.0
}
private func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> CGFloat {
return 1.0
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return UIView()
}
}
extension YHMyViewController {
@objc func loginSuccess() {
printLog("登录成功,进行相应的 UI刷新操作")
updateUserUI()
}
@objc func logoutSuccess() {
updateUserUI()
}
func updateUserUI() {
if YHLoginManager.shared.isLogin() {
headerView.nickName = YHLoginManager.shared.userModel?.nickname ?? "Hi, 银河用户".local
} else {
headerView.nickName = "登录/注册"
}
headerView.updateAvatar()
requestLikeCollectionCount()
getTotalUnreadMsgCount()
checkSettingRedPoint()
requstUserBasicInfo()
}
func requstUserBasicInfo() {
if YHLoginManager.shared.isLogin() {
if isEmptyString(YHLoginManager.shared.userModel?.id) {
self.loginViewModel.getUserId {
[weak self] _ in
guard let self = self else { return }
requestUserAvatar()
}
} else {
requestUserAvatar()
}
} else {
headerView.updateAvatar()
}
}
func requestUserAvatar() {
if let uid = YHLoginManager.shared.userModel?.id, !uid.isEmpty {
self.userViewModel.getUserNameCardInfo(uid: uid) {
[weak self] _, _ in
guard let self = self else { return }
let url = URL(string: self.userViewModel.nameCardInfo.avatar)
self.headerView.avarImgView.kf.setImage(with: url, placeholder: UIImage(named: "people_head_default"))
}
}
}
}
extension YHMyViewController {
// MARK: - 跳银河管家
private func showYHManagerGuideView(_ navigationController: UINavigationController?) {
if YHUatHelper.shared.getUatModuleStatusBy(module: .QiYu_Service) != 1 {
printLog("非目标用户")
return
}
if let key = YHButlerServiceManager.shared.guideWindowShowedKey, YHButlerServiceManager.shared.didShowWindowDict[key] == true {
return
}
DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) {
if let key = YHButlerServiceManager.shared.guideWindowShowedKey {
YHButlerServiceManager.shared.didShowWindowDict[key] = true
}
let view = YHConversationGuideView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: KScreenHeight))
view.checkButtonEvent = { [weak self] in
guard let self = self else {
return
}
self.princleVM.postAlertStatus(20) { _, _ in
}
self.gotoYinHeManager(navigationController)
}
view.show()
}
}
private func gotoYinHeManager(_ navigationController: UINavigationController?) {
guard let userId = YHLoginManager.shared.userModel?.id, userId.count > 0 else {
return
}
// YHAnalytics.track("APP_HomeTab_IntelligentAssistant")
YHHUD.show(.progress(message: "加载中..."))
YHButlerServiceManager.shared.gotoButlerServiceSessionVC(navigationController: navigationController, completion: { _ in
YHHUD.hide()
})
}
}
//
// YHNameCardViewController.swift
// YHNewNameCardViewController.swift
// galaxy
//
// Created by Dufet on 2025/9/29.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment