128 lines
4.3 KiB
Swift
128 lines
4.3 KiB
Swift
//
|
|
// BRLoginManager.swift
|
|
// BeeReel
|
|
//
|
|
// Created by 湖南秦九 on 2025/6/24.
|
|
//
|
|
|
|
import UIKit
|
|
import SmartCodable
|
|
|
|
class BRLoginManager {
|
|
|
|
enum LoginType: String, SmartCaseDefaultable {
|
|
case apple = "Apple"
|
|
case faceBook = "Facebook"
|
|
case google = "Google"
|
|
case tiktok = "Tiktok"
|
|
}
|
|
|
|
|
|
static let manager = BRLoginManager()
|
|
|
|
private(set) var token = UserDefaults.br_object(forKey: kBRLoginTokenDefaultsKey, as: BRLoginToken.self)
|
|
private(set) var userInfo = UserDefaults.br_object(forKey: kBRLoginUserInfoDefaultsKey, as: BRUserInfo.self)
|
|
|
|
///是否正在刷新token
|
|
private(set) var isRefreshingToken = false
|
|
|
|
|
|
|
|
func setLoginToken(token: BRLoginToken?) {
|
|
self.token = token
|
|
UserDefaults.br_setObject(token, forKey: kBRLoginTokenDefaultsKey)
|
|
}
|
|
|
|
func openLogin(finishHandle: (() -> Void)? = nil) {
|
|
// let view = VPLoginContentView()
|
|
// view.loginFinishBlock = finishHandle
|
|
// view.present(in: nil)
|
|
}
|
|
|
|
func login(type: LoginType, presentingViewController: UIViewController?, completer: ((_ isFinish: Bool) -> Void)?) {
|
|
|
|
// switch type {
|
|
// case .apple:
|
|
// appleSignLogin { [weak self] model in
|
|
// self?.requestThirdLogin(thirdSignModel: model, completer: completer)
|
|
// }
|
|
//
|
|
// case .faceBook:
|
|
// facebookLogin(presentingViewController: presentingViewController) { [weak self] model in
|
|
// self?.requestThirdLogin(thirdSignModel: model, completer: completer)
|
|
// }
|
|
// default:
|
|
// completer?(false)
|
|
// }
|
|
|
|
}
|
|
|
|
///退出登录
|
|
func logout(completer: ((_ isFinish: Bool) -> Void)?) {
|
|
// VPStatAPI.requestLeaveApp()
|
|
// VPUserAPI.requestLogout { [weak self] token in
|
|
// guard let self = self else { return }
|
|
// if let token = token {
|
|
// self.setLoginToken(token: token)
|
|
// self.userInfo?.is_tourist = true
|
|
// self.updateUserInfo(completer: nil)
|
|
// VPStatAPI.requestStatOnLine()
|
|
// VPStatAPI.requestEnterApp()
|
|
// completer?(true)
|
|
// NotificationCenter.default.post(name: VPLoginManager.userInfoUpdateNotification, object: nil)
|
|
// NotificationCenter.default.post(name: VPLoginManager.loginStateDidChangeNotification, object: nil)
|
|
// } else {
|
|
// completer?(false)
|
|
// }
|
|
// }
|
|
}
|
|
|
|
///删除账号
|
|
func deleteAccount(completer: ((_ isFinish: Bool) -> Void)?) {
|
|
// VPStatAPI.requestLeaveApp()
|
|
// VPUserAPI.requestDelete { [weak self] isFinish in
|
|
// guard let self = self else { return }
|
|
// if isFinish {
|
|
// self.setLoginToken(token: nil)
|
|
// self.userInfo?.is_tourist = true
|
|
// self.updateUserInfo(completer: nil)
|
|
// VPStatAPI.requestStatOnLine()
|
|
// VPStatAPI.requestEnterApp()
|
|
// completer?(true)
|
|
// NotificationCenter.default.post(name: VPLoginManager.userInfoUpdateNotification, object: nil)
|
|
// NotificationCenter.default.post(name: VPLoginManager.loginStateDidChangeNotification, object: nil)
|
|
// } else {
|
|
// completer?(false)
|
|
// }
|
|
// }
|
|
}
|
|
|
|
|
|
///更新用户信息
|
|
func updateUserInfo(completer: (() -> Void)?) {
|
|
|
|
BRUserAPI.requestUserInfo { [weak self] userInfo in
|
|
guard let self = self else { return }
|
|
if let userInfo = userInfo {
|
|
self.userInfo = userInfo
|
|
UserDefaults.br_setObject(userInfo, forKey: kBRLoginUserInfoDefaultsKey)
|
|
NotificationCenter.default.post(name: BRLoginManager.userInfoUpdateNotification, object: nil)
|
|
}
|
|
completer?()
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
extension BRLoginManager {
|
|
|
|
///登录状态发生变化
|
|
@objc static let loginStateDidChangeNotification = NSNotification.Name(rawValue: "BRLoginManager.loginStateDidChangeNotification")
|
|
///用户信息更新
|
|
@objc static let userInfoUpdateNotification = NSNotification.Name(rawValue: "BRLoginManager.userInfoUpdateNotification")
|
|
|
|
}
|