70 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Swift
		
	
	
	
		
		
			
		
	
	
			70 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Swift
		
	
	
	
|  | // | |||
|  | //  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 | |||
|  |     } | |||
|  | } |