// // MessageContentRedPacketView.m // xplan-ios // // Created by GreenLand on 2022/9/5. // #import "MessageContentRedPacketView.h" ///Third #import #import "ThemeColor.h" #import "XPReceiveRedPacketModel.h" #import "NSObject+MJExtension.h" #import "XPConstant.h" #import "XCCurrentVCStackManager.h" #import "XPRoomViewController.h" #import "RoomHostDelegate.h" #define MESSAGE_MAX_WIDTH 260 @interface MessageContentRedPacketView () @property (nonatomic, strong) UIImageView *bgImageView; ///红包icon @property (nonatomic, strong) UIImageView *redPacketImageView; ///显示标题 @property (nonatomic,strong) UILabel *titleLabel; ///发出一个全服红包 @property (nonatomic,strong) UILabel *subLabel; ///分割线 @property (nonatomic, strong) UIView *devideView; ///领取说明 @property (nonatomic, strong) UILabel *descLabel; ///消息的信息 @property (nonatomic,strong) XPReceiveRedPacketModel *messageInfo; @property (nonatomic,strong) AttachmentModel *attachment; @property (nonatomic,strong) NIMMessage *message; @end @implementation MessageContentRedPacketView + (CGFloat)measureHeight:(NIMMessage *)message { return 95 + CONTENT_PADDING_V_TOTAL; } - (void)initSubViews { [super initSubViews]; [self.backView addSubview:self.bgImageView]; [self.backView addSubview:self.redPacketImageView]; [self.backView addSubview:self.titleLabel]; [self.backView addSubview:self.subLabel]; [self.backView addSubview:self.devideView]; [self.backView addSubview:self.descLabel]; UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(event:)]; [self.bgImageView addGestureRecognizer:tapGesture]; } - (void)initSubViewConstraints { [super initSubViewConstraints]; [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(MESSAGE_MAX_WIDTH); make.height.mas_equalTo(95); make.edges.mas_equalTo(self).insets(UIEdgeInsetsMake(0, 0, 0, 0)); }]; [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(MESSAGE_MAX_WIDTH); make.top.mas_equalTo(self.backView); make.height.mas_equalTo(95); make.left.mas_equalTo(self.backView); }]; [self.redPacketImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.backView).mas_offset(16); make.width.mas_equalTo(31); make.height.mas_equalTo(40); make.top.mas_equalTo(self.backView).mas_offset(13); }]; [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.redPacketImageView.mas_right).mas_offset(6); make.height.mas_equalTo(16); make.top.mas_equalTo(self.redPacketImageView).mas_offset(12); }]; [self.subLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.titleLabel); make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(8); make.height.mas_equalTo(13); }]; [self.devideView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(16); make.right.mas_equalTo(-8); make.top.mas_equalTo(self.redPacketImageView.mas_bottom).offset(11); make.height.mas_equalTo(0.5); }]; [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(16); make.top.mas_equalTo(self.devideView.mas_bottom).offset(9); make.height.mas_equalTo(13); }]; } - (void)render:(NIMMessage *)message { self.message = message; NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; AttachmentModel * attach = obj.attachment; self.attachment = attach; XPReceiveRedPacketModel * info = [XPReceiveRedPacketModel modelWithJSON:attach.data]; self.messageInfo = info; //超过半小时就是失效 NSTimeInterval now = [[NSDate date] timeIntervalSince1970]; if (now - message.timestamp > 60*30) { self.titleLabel.text = @"红包已失效"; self.descLabel.text = @"下次要快点来哦~"; self.subLabel.hidden = YES; self.bgImageView.image = [UIImage imageNamed:@"redPacket_msg_inValid_bg"]; self.bgImageView.userInteractionEnabled = NO; } else { NSArray *redPacketHistory = [[NSUserDefaults standardUserDefaults] objectForKey:kRedPacketHistory]; if (info) { if ([redPacketHistory containsObject:info.redEnvelopeId]) { self.subLabel.hidden = YES; self.titleLabel.text = @"红包已领取"; self.bgImageView.image = [UIImage imageNamed:@"redPacket_msg_inValid_bg"]; self.descLabel.text = @"可前往账单查看详情"; self.bgImageView.userInteractionEnabled = NO; } else { self.titleLabel.text = info.sendUserNick; self.descLabel.text = @"点击进房领取>"; self.subLabel.hidden = NO; self.bgImageView.image = [UIImage imageNamed:@"redPacket_msg_valid_bg"]; self.bgImageView.userInteractionEnabled = YES; [self.titleLabel mas_updateConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.redPacketImageView).mas_offset(5); }]; } } } } - (void)event:(UITapGestureRecognizer *)gesture { UIViewController * controllerView = [XCCurrentVCStackManager shareManager].getCurrentVC; //退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合 [controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { if ([obj isKindOfClass:[XPRoomViewController class]]) { [controllerView.navigationController popToRootViewControllerAnimated:NO]; XPRoomViewController * rooomVC = obj; [rooomVC exitRoom]; *stop = YES; } }]; dispatch_after(1.0, dispatch_get_main_queue(), ^{ [XPRoomViewController openRoom:self.messageInfo.roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; }); } #pragma mark - Getters And Setters - (UIImageView *)bgImageView { if (!_bgImageView) { _bgImageView = [[UIImageView alloc] init]; _bgImageView.image = [UIImage imageNamed:@"redPacket_msg_valid_bg"]; self.bgImageView.userInteractionEnabled = YES; } return _bgImageView; } - (UIImageView *)redPacketImageView { if (!_redPacketImageView) { _redPacketImageView = [[UIImageView alloc] init]; _redPacketImageView.contentMode = UIViewContentModeScaleAspectFit; _redPacketImageView.image = [UIImage imageNamed:@"redPacket_msg_icon"]; } return _redPacketImageView; } - (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [[UILabel alloc] init]; _titleLabel.textAlignment= NSTextAlignmentCenter; _titleLabel.font = [UIFont systemFontOfSize:16]; _titleLabel.textColor = [UIColor whiteColor]; } return _titleLabel; } - (UILabel *)subLabel { if (!_subLabel) { _subLabel = [[UILabel alloc] init]; _subLabel.text = @"发出了一个全服红包"; _subLabel.font = [UIFont systemFontOfSize:13]; _subLabel.textColor = [UIColor whiteColor]; } return _subLabel; } - (UILabel *)descLabel { if (!_descLabel) { _descLabel = [[UILabel alloc] init]; _descLabel.font = [UIFont systemFontOfSize:13]; _descLabel.textColor = [UIColor whiteColor]; } return _descLabel; } - (UIView *)devideView { if (!_devideView) { _devideView = [[UIView alloc] init]; _devideView.backgroundColor = [UIColor whiteColor]; } return _devideView; } @end