Visual_Novel_iOS/crush/Crush/Src/Modules/Chat/Util/IMUserKit.swift

70 lines
1.9 KiB
Swift
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// IMUserKit.swift
// Crush
//
// Created by Leon on 2025/8/21.
//
import Foundation
class IMUserKit {
///
var userId: Int?
var accountId: String?
var nickname: String?
var avatar: String?
var user: V2NIMUser?
var loadCompleteAction: ((_ user: IMUserKit) -> Void)?
class func imUserKitWith(accId: String?, completion: ((_ user: IMUserKit?) -> Void)? = nil) -> IMUserKit {
let kit = IMUserKit()
// let conversationId = V2NIMConversationIdUtil.p2pConversationId(accountId)
guard let accountId = accId, accountId.count > 0 else {
return kit
}
// NIMSDK.shared().v2UserService.getUserInfo(accountId, error:)
NIMSDK.shared().v2UserService.getUserList([accountId]) { user in
if let searchUser = user.first {
kit.user = searchUser
kit.syncDataFrom(nimUser: searchUser)
completion?(kit)
kit.loadCompleteAction?(kit)
// dlog("IMUserKit user(V2NIMUser) get:\(user)")
} else {
//fatalError("wrong state")
dlog("IMUserKit ❌user nil")
}
} failure: { error in
dlog("IMUserKit ❌ get user list error:\(error)")
}
return kit
}
class func accountIdWithAIId(aiId:Int) -> String?{
if aiId <= 0{
return nil
}
if APIConfig.environment == .appStore || APIConfig.environment == .product{
return "\(aiId)@r"
}else{
// Test Envirment
return "\(aiId)@r@t"
}
}
private func syncDataFrom(nimUser: V2NIMUser?) {
guard let imUser = nimUser else {
return
}
accountId = imUser.accountId
nickname = imUser.name
avatar = imUser.avatar
}
}