191 lines
6.0 KiB
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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|