| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- //
- // LNMineFunctionView.swift
- // Lanu
- //
- // Created by OneeChan on 2025/12/19.
- //
- import Foundation
- import UIKit
- import SnapKit
- class LNMineFunctionView: UIView {
- private let stackView = UIStackView()
- private var joinView: UIView?
-
- override init(frame: CGRect) {
- super.init(frame: frame)
-
- setupViews()
-
- LNEventDeliver.addObserver(self)
-
- onUserInfoChanged(userInfo: myUserInfo)
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- }
- extension LNMineFunctionView: LNProfileManagerNotify {
- func onUserInfoChanged(userInfo: LNUserProfileVO) {
- guard userInfo.userNo.isMyUid else { return }
- joinView?.isHidden = userInfo.playmate
- if !userInfo.playmate {
- stackView.distribution = .equalCentering
- } else {
- stackView.distribution = .fillEqually
- }
- }
- }
- extension LNMineFunctionView {
- private func setupViews() {
- layer.cornerRadius = 12
- backgroundColor = .fill
-
- let titleLabel = UILabel()
- titleLabel.font = .heading_h3
- titleLabel.textColor = .text_5
- titleLabel.text = .init(key: "A00207")
- addSubview(titleLabel)
- titleLabel.snp.makeConstraints { make in
- make.leading.equalToSuperview().offset(16)
- make.top.equalToSuperview().offset(12)
- }
-
- stackView.axis = .horizontal
- stackView.distribution = .equalCentering
- stackView.alignment = .top
- addSubview(stackView)
- stackView.snp.makeConstraints { make in
- make.horizontalEdges.equalToSuperview().inset(16)
- make.top.equalTo(titleLabel.snp.bottom).offset(22)
- make.bottom.equalToSuperview().offset(-16)
- }
-
- let order = buildFunctionItemView(icon: .icProfileOrder, title: .init(key: "A00208"))
- order.onTap { [weak self] in
- guard let self else { return }
- pushToOrderList()
- }
- stackView.addArrangedSubview(order)
-
- let joinUs = buildFunctionItemView(icon: .icProfileJoinUs, title: .init(key: "B00063"))
- joinUs.onTap { [weak self] in
- guard let self else { return }
-
- showLoading()
- LNGameMateManager.shared.getJoinGameMateInfo { [weak self] res in
- dismissLoading()
- guard let self else { return }
- guard let res else { return }
-
- if res.step3Complete || res.underReview {
- pushToJoinUsReview(true)
- return
- }
- let config = LNJumpWebViewConfig(url: .joinUsUrl)
- pushToWebView(config)
- }
- }
- stackView.addArrangedSubview(joinUs)
- joinView = joinUs
-
- let help = buildFunctionItemView(icon: .icProfileHelp, title: .init(key: "A00210"))
- help.onTap { [weak self] in
- guard let self else { return }
- pushToHelpCenter()
- }
- stackView.addArrangedSubview(help)
-
- let settings = buildFunctionItemView(icon: .icProfileSettings, title: .init(key: "A00211"))
- settings.onTap { [weak self] in
- guard let self else { return }
- pushToSettings()
- }
- stackView.addArrangedSubview(settings)
- }
-
- private func buildFunctionItemView(icon: UIImage, title: String) -> UIView {
- let container = UIView()
-
- let imageView = UIImageView()
- imageView.isUserInteractionEnabled = false
- imageView.image = icon
- container.addSubview(imageView)
- imageView.snp.makeConstraints { make in
- make.centerX.equalToSuperview()
- make.top.equalToSuperview()
- }
-
- let titleLabel = UILabel()
- titleLabel.text = title
- titleLabel.font = .body_s
- titleLabel.textColor = .text_4
- titleLabel.textAlignment = .center
- titleLabel.numberOfLines = 0
- container.addSubview(titleLabel)
- titleLabel.snp.makeConstraints { make in
- make.horizontalEdges.equalToSuperview()
- make.top.equalTo(imageView.snp.bottom).offset(8)
- make.bottom.equalToSuperview()
- }
-
- return container
- }
- }
|