// // 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:@"", self, self.uniqueIdentifier, (long)self.displayType, self.timestamp]; } @end