BeeReel/BeeReel/Lib/Login/BRLoginManager.swift
2025-06-30 18:18:27 +08:00

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")
}