91 lines
2.1 KiB
Objective-C
91 lines
2.1 KiB
Objective-C
//
|
|
// KBAICommentModel.h
|
|
// keyBoard
|
|
//
|
|
// Created by Mac on 2026/1/16.
|
|
//
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
@class KBAIReplyModel;
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
/// Footer 状态枚举
|
|
typedef NS_ENUM(NSInteger, KBAIReplyFooterState) {
|
|
KBAIReplyFooterStateHidden, // 无二级评论,不显示
|
|
KBAIReplyFooterStateExpand, // 显示"展开x条回复"(折叠状态)
|
|
KBAIReplyFooterStateCollapse // 显示"收起"(展开状态)
|
|
};
|
|
|
|
/// 一级评论模型
|
|
@interface KBAICommentModel : NSObject
|
|
|
|
/// 评论ID
|
|
@property(nonatomic, copy) NSString *commentId;
|
|
|
|
/// 用户ID
|
|
@property(nonatomic, copy) NSString *userId;
|
|
|
|
/// 用户名
|
|
@property(nonatomic, copy) NSString *userName;
|
|
|
|
/// 用户头像
|
|
@property(nonatomic, copy) NSString *avatarUrl;
|
|
|
|
/// 评论内容
|
|
@property(nonatomic, copy) NSString *content;
|
|
|
|
/// 点赞数
|
|
@property(nonatomic, assign) NSInteger likeCount;
|
|
|
|
/// 是否已点赞
|
|
@property(nonatomic, assign) BOOL isLiked;
|
|
|
|
/// 创建时间(时间戳)
|
|
@property(nonatomic, assign) NSTimeInterval createTime;
|
|
|
|
#pragma mark - 二级评论相关
|
|
|
|
/// 所有二级评论(从服务器获取的完整数据)
|
|
@property(nonatomic, strong) NSArray<KBAIReplyModel *> *replies;
|
|
|
|
/// 当前显示的二级评论(分页展开用)
|
|
@property(nonatomic, strong) NSMutableArray<KBAIReplyModel *> *displayedReplies;
|
|
|
|
/// 二级评论总数
|
|
@property(nonatomic, assign) NSInteger totalReplyCount;
|
|
|
|
/// 是否还有更多回复未展开
|
|
@property(nonatomic, assign) BOOL hasMoreReplies;
|
|
|
|
/// 回复是否已展开
|
|
@property(nonatomic, assign) BOOL isRepliesExpanded;
|
|
|
|
#pragma mark - 缓存高度
|
|
|
|
/// Header 高度缓存
|
|
@property(nonatomic, assign) CGFloat cachedHeaderHeight;
|
|
|
|
#pragma mark - Helper Methods
|
|
|
|
/// 格式化后的时间字符串
|
|
- (NSString *)formattedTime;
|
|
|
|
/// 获取当前 Footer 状态
|
|
- (KBAIReplyFooterState)footerState;
|
|
|
|
/// 展开全部回复
|
|
- (void)expandAllReplies;
|
|
|
|
/// 收起所有回复
|
|
- (void)collapseReplies;
|
|
|
|
/// 计算 Header 高度
|
|
/// @param maxWidth 最大宽度
|
|
- (CGFloat)calculateHeaderHeightWithMaxWidth:(CGFloat)maxWidth;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|