100 lines
2.4 KiB
Objective-C
100 lines
2.4 KiB
Objective-C
//
|
|
// XPMessageItem.m
|
|
// YUMI
|
|
//
|
|
// Created by YUMI on 2024/12/19.
|
|
//
|
|
|
|
#import "XPMessageItem.h"
|
|
|
|
@implementation XPMessageItem
|
|
|
|
- (instancetype)initWithMessageModel:(XPMessageInfoModel *)model
|
|
uniqueIdentifier:(NSString *)identifier {
|
|
self = [super init];
|
|
if (self) {
|
|
_messageModel = model;
|
|
_uniqueIdentifier = identifier;
|
|
_timestamp = [[NSDate date] timeIntervalSince1970];
|
|
_displayType = 1; // 默认显示在所有类型中
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (BOOL)isChatMessage {
|
|
if (!self.messageModel) return NO;
|
|
|
|
// 文本消息 (NIMMessageTypeText = 0)
|
|
if (self.messageModel.first == 0) {
|
|
return YES;
|
|
}
|
|
|
|
// 表情消息 (CustomMessageType_Face = 9)
|
|
if (self.messageModel.first == 9) {
|
|
return YES;
|
|
}
|
|
|
|
return NO;
|
|
}
|
|
|
|
- (BOOL)isGiftMessage {
|
|
if (!self.messageModel) return NO;
|
|
|
|
// 礼物相关消息类型
|
|
switch (self.messageModel.first) {
|
|
case 3: // CustomMessageType_Gift - 单人送礼物
|
|
case 63: // CustomMessageType_RoomBoom - 房间爆炸
|
|
case 26: // CustomMessageType_Candy_Tree - 糖果树
|
|
case 12: // CustomMessageType_AllMicroSend - 全麦送礼物
|
|
return YES;
|
|
default:
|
|
return NO;
|
|
}
|
|
}
|
|
|
|
- (BOOL)shouldDisplayInType:(NSInteger)displayType {
|
|
switch (displayType) {
|
|
case 1: // 所有消息
|
|
return YES;
|
|
case 2: // 聊天消息
|
|
return [self isChatMessage];
|
|
case 3: // 礼物消息
|
|
return [self isGiftMessage];
|
|
default:
|
|
return YES;
|
|
}
|
|
}
|
|
|
|
#pragma mark - NSCopying
|
|
|
|
- (id)copyWithZone:(NSZone *)zone {
|
|
XPMessageItem *copy = [[XPMessageItem alloc] init];
|
|
copy.messageModel = self.messageModel;
|
|
copy.uniqueIdentifier = self.uniqueIdentifier;
|
|
copy.timestamp = self.timestamp;
|
|
copy.displayType = self.displayType;
|
|
return copy;
|
|
}
|
|
|
|
#pragma mark - NSObject
|
|
|
|
- (BOOL)isEqual:(id)object {
|
|
if (![object isKindOfClass:[XPMessageItem class]]) {
|
|
return NO;
|
|
}
|
|
|
|
XPMessageItem *other = (XPMessageItem *)object;
|
|
return [self.uniqueIdentifier isEqualToString:other.uniqueIdentifier];
|
|
}
|
|
|
|
- (NSUInteger)hash {
|
|
return [self.uniqueIdentifier hash];
|
|
}
|
|
|
|
- (NSString *)description {
|
|
return [NSString stringWithFormat:@"<XPMessageItem: %p, identifier: %@, type: %ld, timestamp: %.0f>",
|
|
self, self.uniqueIdentifier, (long)self.displayType, self.timestamp];
|
|
}
|
|
|
|
@end
|