144 lines
4.4 KiB
Swift
144 lines
4.4 KiB
Swift
//
|
|
// LaunchViewController.swift
|
|
// SHECommunity
|
|
//
|
|
// Created by Lin on 2025/1/3.
|
|
//
|
|
|
|
import UIKit
|
|
import RxSwift
|
|
import SwiftyUserDefaults
|
|
import RxCocoa
|
|
|
|
class LaunchViewController: BaseViewController {
|
|
|
|
private let showVersion = 1
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
// Do any additional setup after loading the view.
|
|
view.backgroundColor = .white
|
|
setupLayout()
|
|
getUserConfig()
|
|
}
|
|
|
|
/// 获取用户配置
|
|
func getUserConfig() {
|
|
SystemService.userConfig().subscribe(onNext: { response in
|
|
guard let model = response.model else { return }
|
|
MQTTService.shared.connect()
|
|
Defaults[\.loginToken] = model.token
|
|
RelationStore.shared.preload()
|
|
if #available(iOS 16.0, *) {
|
|
AppRestrictManager.shared.checkScreenTimePermissionAfterLogin()
|
|
}
|
|
|
|
AppContextManager.shared.systemConfig = model.config
|
|
|
|
if let upgrade = AppContextManager.shared.systemConfig?.versionUpgradeModel {
|
|
self.showVersionUpgrade(upgrade, model: model)
|
|
return
|
|
}
|
|
self.continueAfterConfig(model: model)
|
|
}, onError: { [weak self] (error) in
|
|
DLAlert.show(title: error.localizedDescription,
|
|
defaultTitle: "重试") { [weak self] in
|
|
guard let this = self else { return }
|
|
// #if DEBUG || AdHoc
|
|
// this.showServerSwitchAlert()
|
|
// #else
|
|
this.getUserConfig()
|
|
// #endif
|
|
}
|
|
}).disposed(by: disposeBag)
|
|
}
|
|
|
|
private func showServerSwitchAlert() {
|
|
let current = URLManager.shared.apiServerURL
|
|
let alert = UIAlertController(
|
|
title: "切换接口",
|
|
message: "当前:\(current)",
|
|
preferredStyle: .alert
|
|
)
|
|
alert.addTextField { field in
|
|
field.placeholder = "自定义接口地址"
|
|
field.text = current
|
|
field.keyboardType = .URL
|
|
field.autocorrectionType = .no
|
|
field.autocapitalizationType = .none
|
|
}
|
|
for preset in URLManager.presetServers {
|
|
alert.addAction(UIAlertAction(title: preset.title, style: .default) { [weak self] _ in
|
|
self?.applyServer(url: preset.url, env: preset.env)
|
|
})
|
|
}
|
|
alert.addAction(UIAlertAction(title: "确定", style: .default) { [weak self] _ in
|
|
let typed = alert.textFields?.first?.text ?? ""
|
|
self?.applyServer(url: typed, env: nil)
|
|
})
|
|
alert.addAction(UIAlertAction(title: "取消", style: .cancel))
|
|
present(alert, animated: true)
|
|
}
|
|
|
|
private func applyServer(url: String, env: Int?) {
|
|
let normalized = URLManager.normalizedServerURL(url)
|
|
guard !normalized.isEmpty else {
|
|
DLToast.show(text: "请输入接口地址")
|
|
return
|
|
}
|
|
URLManager.shared.switchServer(url: normalized, env: env)
|
|
AppDelegate.shared.showMainViewController()
|
|
}
|
|
|
|
private func continueAfterConfig(model: UserConfigModel) {
|
|
AppDelegate.shared.showMainViewController()
|
|
}
|
|
|
|
private func showVersionUpgrade(_ upgrade: VersionUpgradeModel, model: UserConfigModel) {
|
|
showVersionUpgradePop(upgrade: upgrade) { [weak self] in
|
|
self?.continueAfterConfig(model: model)
|
|
}
|
|
}
|
|
|
|
// MARK: - Init
|
|
init() {
|
|
super.init(nibName: nil, bundle: nil)
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
lazy var launchLogoView: UIImageView = {
|
|
let view = UIImageView()
|
|
view.image = UIImage(named: "Launch/logo")
|
|
view.backgroundColor = .clear
|
|
view.contentMode = .scaleAspectFill
|
|
return view
|
|
}()
|
|
|
|
lazy var tipsImgView: UIImageView = {
|
|
let view = UIImageView()
|
|
view.image = UIImage(named: "Launch/slogan")
|
|
view.backgroundColor = .clear
|
|
view.contentMode = .scaleAspectFill
|
|
return view
|
|
}()
|
|
}
|
|
|
|
extension LaunchViewController {
|
|
private func setupLayout() {
|
|
view.addSubview(launchLogoView)
|
|
view.addSubview(tipsImgView)
|
|
|
|
launchLogoView.layoutChain
|
|
.centerX()
|
|
.centerY()
|
|
|
|
tipsImgView.layoutChain
|
|
.centerX()
|
|
.bottom(kSafeBottomMargin + 50)
|
|
}
|
|
}
|