215 lines
7.8 KiB
Objective-C
215 lines
7.8 KiB
Objective-C
//
|
|
// MessageContentRedPacketView.m
|
|
// xplan-ios
|
|
//
|
|
// Created by GreenLand on 2022/9/5.
|
|
//
|
|
|
|
#import "MessageContentRedPacketView.h"
|
|
///Third
|
|
#import <Masonry/Masonry.h>
|
|
#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<RoomHostDelegate> * 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
|