class LoginVM:BaseVM{
static let shared = LoginVM()
var countryList = [CountryModel]()
+ private static var deviceLoginVM:DeviceLoginVM?
override init() {
countryList = CountryCache.shared.get()
static public func login(param:[String:Any], completion:@escaping (_ result:LoginModel) ->Void) {
let api = CommomApi.login(param: param)
HttpClient.request(api) { (model:LoginModel,res) in
- if model.isSuccess{
- CacheManager.shared.user.login(token: model.data)
- }
- completion(model)
+ loginFinish(model: model, completion: completion)
}
}
static public func phoneCodeLogin(param:[String:Any], completion:@escaping (_ result:LoginModel) ->Void) {
let api = CommomApi.phoneCodeLogin(param: param)
HttpClient.request(api) { (model:LoginModel,res) in
- if model.isSuccess{
- CacheManager.shared.user.login(token: model.data)
- }
- completion(model)
+ loginFinish(model: model, completion: completion)
}
}
static public func emailCodeLogin(param:[String:Any], completion:@escaping (_ result:LoginModel) ->Void) {
let api = CommomApi.emailCodeLogin(param: param)
HttpClient.request(api) { (model:LoginModel,res) in
- if model.isSuccess{
- CacheManager.shared.user.login(token: model.data)
- }
- completion(model)
+ loginFinish(model: model, completion: completion)
}
}
static public func appleLogin(param:[String:Any], completion:@escaping (_ result:LoginModel) ->Void) {
let api = CommomApi.appleLogin(param: param)
HttpClient.request(api) { (model:LoginModel,res) in
- if model.isSuccess{
- CacheManager.shared.user.login(token: model.data)
- }
- completion(model)
+ loginFinish(model: model, completion: completion)
}
}
static public func wechatLogin(param:[String:Any], completion:@escaping (_ result:LoginModel) ->Void) {
let api = CommomApi.wechatLogin(param: param)
HttpClient.request(api) { (model:LoginModel,res) in
- if model.isSuccess{
- CacheManager.shared.user.login(token: model.data)
- }
- completion(model)
+ loginFinish(model: model, completion: completion)
}
}
completion(model)
}
}
+ static func loginFinish(model:LoginModel,completion:@escaping (_ result:LoginModel) ->Void){
+ if !model.isSuccess{
+ completion(model)
+ return
+ }
+ CacheManager.shared.user.login(token: model.data)
+ checkedUnbind { success in
+// if success{
+// model.isSuccess
+// }
+ completion(model)
+ }
+
+
+ }
+}
+
+extension LoginVM{
+ static func checkedUnbind(finished:@escaping ((Bool) -> Void)){
+ deviceLoginVM = DeviceLoginVM()
+ deviceLoginVM?.refresh { result in
+ if result.isSuccess, result.data.list.count > 1{
+ let name = result.data.list[1].deviceName.lowercased()
+ if name.contains("iphone") ||
+ name.contains("ios") ||
+ name.contains("ipad") ||
+ name.contains("homepod") ||
+ name.contains("simulator")
+ {
+ finished(true)
+ }
+ else{
+ needUnBind(finished: finished)
+ }
+ }
+ else{
+ finished(false)
+ }
+ }
+ }
+
+ static func needUnBind(finished:@escaping ((Bool) -> Void)){
+ DeviceVM.shared.refresh { result in
+ DeviceVM.shared.dataList.removeAll()
+ startUnBindList(result.data,finished: finished)
+ }
+ }
+
+
+ static func startUnBindList(_ list:[HomeDeviceModel],finished:@escaping ((Bool) -> Void)){
+ var isSuccess = true
+ let dispatchGroup = DispatchGroup()
+ for item in list {
+ dispatchGroup.enter()
+ startUnbind(item.deviceId) { success in
+ if !success {
+ isSuccess = false
+ }
+ dispatchGroup.leave()
+ }
+ }
+
+ dispatchGroup.notify(queue:.main) {
+ finished(isSuccess)
+ }
+ }
+
+ static func startUnbind(_ deviceId:String,finished:@escaping ((Bool) -> Void)){
+ let api = CommomApi.unbind(deviceId: deviceId)
+ HttpClient.request(api) {(model:HomeDeviceModelRoot,res) in
+ finished(model.isSuccess)
+ }
+ }
}
let titleLabel = UILabel()
let nextIcon = UIImageView()
let valueIcon = UIImageView()
+ let copyIcon = UIImageView()
let valueLabel = UILabel()
var type:UserInfoCellType = .area{
didSet{
titleLabel.text = type.title
valueIcon.isHidden = type != .avatar
+ copyIcon.isHidden = type != .uid
+ nextIcon.isHidden = !copyIcon.isHidden
if type == .avatar {
valueLabel.isHidden = true
}
else if type == .uid {
valueLabel.text = info.userId
+
}
else if type == .avatar{
valueIcon.kf.setImage(with:CacheManager.shared.user.info.avatar.yc.asUrl )
}
override func setupViews() {
contentView.addSubview(bgView)
- bgView.addSubviews([titleLabel,nextIcon,valueIcon,valueLabel])
+ bgView.addSubviews([titleLabel,nextIcon,valueIcon,valueLabel,copyIcon])
backgroundColor = .color(.bgColor)
contentView.backgroundColor = .clear
v.isHidden = true
}
nextIcon.image = UIImage(named: "arrow_next")
+ copyIcon.image = UIImage(named: "copy_icon_2")
}
override func setupLayout() {
m.height.equalToSuperview()
m.left.equalToSuperview().inset(90)
}
+ copyIcon.snp.makeConstraints { (m) in
+ m.size.equalTo(20)
+ m.right.equalToSuperview().inset(15)
+ m.centerY.equalToSuperview()
+ }
}
}