// // KBPersonaChatCell.h // keyBoard // // Created by Kiro on 2026/1/26. // #import #import "KBPersonaModel.h" #import "KBChatTableView.h" NS_ASSUME_NONNULL_BEGIN /// 人设聊天 Cell @interface KBPersonaChatCell : UICollectionViewCell /// 聊天列表 @property (nonatomic, strong) KBChatTableView *chatView; /// 人设数据 @property (nonatomic, strong) KBPersonaModel *persona; /// 预加载数据 - (void)preloadDataIfNeeded; /// 添加用户消息 - (void)appendUserMessage:(NSString *)text; /// 添加用户消息(绑定本次请求 requestId) - (void)appendUserMessage:(NSString *)text requestId:(NSString *)requestId; /// 标记最后一条用户消息结束加载 - (void)markLastUserMessageLoadingComplete; /// 添加加载中的用户消息 - (void)appendLoadingUserMessage; /// 更新最后一条用户消息 - (void)updateLastUserMessage:(NSString *)text; /// 移除 loading 用户消息 - (void)removeLoadingUserMessage; /// 添加 AI 消息(支持打字机效果) - (void)appendAssistantMessage:(NSString *)text audioId:(nullable NSString *)audioId; /// 添加 loading AI 消息 - (void)appendLoadingAssistantMessage; /// 添加 loading AI 消息(绑定本次请求 requestId) - (void)appendLoadingAssistantMessageWithRequestId:(NSString *)requestId; /// 移除 loading AI 消息 - (void)removeLoadingAssistantMessage; /// 移除 loading AI 消息(按 requestId 精确移除) - (void)removeLoadingAssistantMessageWithRequestId:(NSString *)requestId; /// 更新聊天列表底部 inset - (void)updateChatViewBottomInset:(CGFloat)bottomInset; /// 更新指定 requestId 对应的 AI 回复(替换 loading 占位消息) - (void)updateAssistantMessageWithRequestId:(NSString *)requestId text:(NSString *)text audioId:(nullable NSString *)audioId; /// 当前 Cell 成为屏幕主显示页 - (void)onBecameCurrentPersonaCell; /// 当前 Cell 不再是屏幕主显示页 - (void)onResignedCurrentPersonaCell; @end NS_ASSUME_NONNULL_END