Visual_Novel_iOS/crush/Crush/Src/Modules/Me/Setting/AccountManageController.swift

191 lines
6.0 KiB
Swift

//
// AccountManageController.swift
// Crush
//
// Created by Leon on 2025/7/23.
//
import UIKit
class AccountManageController: CLBaseViewController {
var deleteAccountButton: StyleButton!
var titleView: TitleView!
var thirdAccountBlock: UIView!
var thirdAccountIcon: UIImageView!
var thirdStackV : UIStackView!
var thirdAccountLabel: UILabel!
var thirdEmailLabel : UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
setupViews()
setupDats()
setupEvents()
}
private func setupViews() {
let title = "Account Manage"
navigationView.alpha0Title = title
deleteAccountButton = {
let v = StyleButton(type: .custom)
v.defaultDestructive(size: .large)
v.addTarget(self, action: #selector(deleteAccountAction), for: .touchUpInside)
view.addSubview(v)
v.snp.makeConstraints { make in
make.leading.equalToSuperview().offset(CGFloat.lrs)
make.trailing.equalToSuperview().offset(-CGFloat.lrs)
make.bottom.equalToSuperview().offset(-16 - UIWindow.safeAreaBottom * 0.5)
}
v.setTitle("Delete Account", for: .normal)
return v
}()
titleView = {
let v = TitleView()
v.title = title
view.addSubview(v)
v.snp.makeConstraints { make in
make.leading.equalToSuperview()
make.top.equalTo(navigationView.snp.bottom)
make.trailing.equalToSuperview()
}
return v
}()
thirdAccountBlock = {
let v = UIView()
v.backgroundColor = .c.csbn
v.layer.cornerRadius = 16
v.layer.masksToBounds = true
view.addSubview(v)
v.snp.makeConstraints { make in
make.leading.equalToSuperview().offset(CGFloat.lrs)
make.top.equalTo(titleView.snp.bottom).offset(24)
make.trailing.equalToSuperview().offset(-CGFloat.lrs)
make.height.equalTo(80)
}
return v
}()
thirdAccountIcon = {
let v = UIImageView()
v.image = MWIconFont.image(fromIcon: .socialGoogle, size: CGSize(width: 24, height: 24), color: .c.ctpn)
v.contentMode = .center
v.layer.cornerRadius = 24
v.layer.masksToBounds = true
v.layer.borderWidth = 1
v.layer.borderColor = UIColor.c.con.cgColor
thirdAccountBlock.addSubview(v)
v.snp.makeConstraints { make in
make.leading.equalToSuperview().offset(16)
make.centerY.equalToSuperview()
make.width.equalTo(48)
make.height.equalTo(48)
}
return v
}()
thirdStackV = {
let v = UIStackView()
v.axis = .vertical
v.alignment = .leading
v.spacing = 4
thirdAccountBlock .addSubview(v)
v.snp.makeConstraints { make in
make.leading.equalTo(thirdAccountIcon.snp.trailing).offset(12)
make.trailing.lessThanOrEqualToSuperview().offset(-16)
make.centerY.equalToSuperview()
}
return v
}()
thirdAccountLabel = {
let v = UILabel()
v.text = "Third Account"
v.font = .t.tts
v.textColor = .c.ctpn
thirdStackV.addArrangedSubview(v)
return v
}()
thirdEmailLabel = {
let v = UILabel()
v.textColor = .c.ctsn
v.font = .t.tbs
thirdStackV.addArrangedSubview(v)
v.text = "-"
return v
}()
}
private func setupDats() {
guard let user = UserCore.shared.user else {return}
let thirdType = user.thirdType ?? .APPLE
switch thirdType {
case .APPLE:
thirdAccountIcon.image = MWIconFont.image(fromIcon: .socialApple, size: CGSize(width: 24, height: 24), color: .c.ctpn)
case .GOOGLE:
thirdAccountIcon.image = MWIconFont.image(fromIcon: .socialGoogle, size: CGSize(width: 24, height: 24), color: .c.ctpn)
case .DISCORD:
thirdAccountIcon.image = MWIconFont.image(fromIcon: .socialDiscord, size: CGSize(width: 24, height: 24), color: .c.ctpn)
// default:
// break
}
thirdAccountLabel.text = user.thirdNickname ?? "-"
if let email = user.thirdEmail, email.count > 0{
thirdEmailLabel.text = email
}else {
thirdEmailLabel.text = "-"
}
}
private func setupEvents() {
}
@objc func deleteAccountAction() {
let alert = Alert(title: "Delete Account", text: "Are you sure you want to delete your account?")
let action1 = AlertAction(title: "Delete", actionStyle: .destructive) {[weak self] in
self?.doDeleteAccount()
}
let action2 = AlertAction(title: "Cancel", actionStyle: .cancel) {
}
alert.addAction(action1)
alert.addAction(action2)
alert.show()
}
private func doDeleteAccount(){
// #warning("test")
// Hud.toast(str: "") { _ in
// UserCore.shared.logout()
// AppRouter.goBackRootController {
// //NotificationCenter.post(name: .presentSignInVc, object: nil, userInfo: nil)
// }
// }
Hud.showIndicator()
UserProvider.request(UserAPI.userDel) { result in
Hud.hideIndicator()
switch result{
case .success:
Hud.toast(str: "账号删除成功") { _ in
UserCore.shared.logout()
AppRouter.goBackRootController {
}
}
case .failure:
return
}
}
}
}