MoviaBox/ShortPlay/Libs/Login/SPLoginManager.swift
2025-04-18 08:57:53 +08:00

102 lines
2.7 KiB
Swift

//
// SPLoginManager.swift
// ShortPlay
//
// Created by on 2025/4/8.
//
import UIKit
class SPLoginManager: NSObject {
static let manager = SPLoginManager()
private(set) var token: SPTokenModel?
///token
private(set) var isRefreshingToken = false
override init() {
super.init()
token = UserDefaults.jx_object(forKey: kSPLoginTokenDefaultsKey, class: SPTokenModel.self) as? SPTokenModel
}
func setLoginToken(token: SPTokenModel?) {
self.token = token
UserDefaults.jx_setObject(token, forKey: kSPLoginTokenDefaultsKey)
}
}
extension SPLoginManager {
///
func requestVisitorLogin(completer: (() -> Void)?) {
if isRefreshingToken {
return
}
isRefreshingToken = true
let param = SPNetworkParameters(path: "/customer/register")
SPNetwork.request(parameters: param) { [weak self] (response: SPNetworkResponse<SPTokenModel>) in
guard let self = self else { return }
if let token = response.data {
self.setLoginToken(token: token)
}
self.isRefreshingToken = false
completer?()
}
}
func performDependentRequestsWithOperations() {
let queue = OperationQueue()
// 1.
let initialOperation = BlockOperation {
let semaphore = DispatchSemaphore(value: 0)
// initialRequest { result in
// defer { semaphore.signal() }
//
// if result.isSuccess {
// print("")
// }
// }
semaphore.wait()
}
// 2.
let request1Operation = BlockOperation {
let semaphore = DispatchSemaphore(value: 0)
// request1 {
// print("1")
// semaphore.signal()
// }
semaphore.wait()
}
let request2Operation = BlockOperation {
let semaphore = DispatchSemaphore(value: 0)
// request2 {
// print("2")
// semaphore.signal()
// }
semaphore.wait()
}
// 3.
request1Operation.addDependency(initialOperation)
request2Operation.addDependency(initialOperation)
// 4.
queue.addOperations([initialOperation, request1Operation, request2Operation], waitUntilFinished: false)
}
}