feat: 公聊厅点击头像跳转到个人页

This commit is contained in:
eggmanQQQ
2024-07-29 12:18:12 +08:00
parent e8dffabb2c
commit 2805f0d858
5 changed files with 137 additions and 93 deletions

View File

@@ -10,8 +10,10 @@
NS_ASSUME_NONNULL_BEGIN
@interface MessageContentChatHallHeadView : UIView
-(instancetype)initWithFrame:(CGRect)frame isSelf:(BOOL)isSelf;
- (void)render:(nonnull MessageBaseModel *)model;
@end
NS_ASSUME_NONNULL_END

View File

@@ -17,7 +17,11 @@
#import "MessageHeadlinesTextModel.h"
#import "XPMessageRemoteExtModel.h"
#import "MSSessionPublicChatHalImageModel.h"
@interface MessageContentChatHallHeadView()
@property (nonatomic, strong) XPMessageRemoteExtModel *cellModel;
@property(nonatomic,assign) BOOL isSelf;
///
@property (nonatomic,strong) YYAnimatedImageView *headWearImageView;
@@ -123,6 +127,7 @@
}
- (void)render:(nonnull MessageBaseModel *)model {
XPMessageRemoteExtModel *extModel ;
if([model isKindOfClass:[MSSessionPublicChatHalImageModel class]]){
MSSessionPublicChatHalImageModel *imageModel = (MSSessionPublicChatHalImageModel *)model;
@@ -132,7 +137,13 @@
extModel = textModel.extModel;
}
if(extModel == nil)return;
self.cellModel = extModel;
self.cellModel.uid = @(model.uid).stringValue;
if(extModel == nil) {
return;
}
@kWeakify(self);
self.avatarView.image = nil;
[self.avatarView loadImageWithUrl:extModel.avatar completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) {
@@ -162,7 +173,6 @@
if (extModel.headWearType == 1 || [headwearUrl hasSuffix:@"svga"]) {
self.headWearImageView.hidden = YES;
self.headWearSVGAImageView.hidden = NO;
// [self.headWearSVGAImageView setImageName:headwearUrl];
[self.parser parseWithURL:[NSURL URLWithString:headwearUrl] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
@kStrongify(self);
self.headWearSVGAImageView.videoItem = videoItem;
@@ -184,6 +194,14 @@
}
}
- (void)handleTapAvatar {
if (self.cellModel.uid.length > 0) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"xpHandleTapAvatar"
object:nil
userInfo:@{@"user erban no.": self.cellModel.uid}];
}
}
#pragma mark -
- (NetImageView *)avatarView{
if(!_avatarView){
@@ -192,6 +210,9 @@
_avatarView = [[NetImageView alloc]initWithConfig:config];
_avatarView.layer.cornerRadius = kGetScaleWidth(48)/2;
_avatarView.layer.masksToBounds = YES;
_avatarView.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapAvatar)];
[_avatarView addGestureRecognizer:tap];
}
return _avatarView;
}
@@ -208,6 +229,7 @@
_headWearImageView = [[YYAnimatedImageView alloc] init];
_headWearImageView.backgroundColor = [UIColor clearColor];
_headWearImageView.contentMode = UIViewContentModeScaleAspectFit;
_headWearImageView.userInteractionEnabled = NO;
}
return _headWearImageView;
}

View File

@@ -46,6 +46,8 @@ typedef NS_ENUM(NSInteger, SessionMessageType) {
@property (nonatomic,assign) BOOL isHiddenAvatar;
///消息的类型
@property (nonatomic,assign) SessionMessageType messageType;
@property (nonatomic, assign) NSInteger uid;
///初始化一个message
- (instancetype)initWithMessage:(NIMMessage *)message;

View File

@@ -11,6 +11,8 @@ NS_ASSUME_NONNULL_BEGIN
@interface MSSessionPublicChatHallVC : MvpViewController
@end
NS_ASSUME_NONNULL_END

View File

@@ -94,31 +94,54 @@
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[Api requestRecordIncome:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
if(code == 200){
XPIncomeRecordModel *model = [XPIncomeRecordModel modelWithDictionary:data.data];
self.myCoins = @(model.diamonds).stringValue;
}
}];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.isLoadHistoryMessage = YES;
[self initViews];
[self initLayout];
[self initHeaderAndFooterRrfresh];
[IQKeyboardManager sharedManager].enable = NO;
[IQKeyboardManager sharedManager].enableAutoToolbar = NO;
[[NIMSDK sharedSDK].chatManager addDelegate:self];
[self updateCoins];
@kWeakify(self);
[[NSNotificationCenter defaultCenter] addObserverForName:@"xpHandleTapAvatar"
object:nil
queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification * _Nonnull notification) {
@kStrongify(self);
NSNumber *userUrbanID = [notification.userInfo objectForKey:@"user erban no."];
if (userUrbanID) {
XPMineUserInfoViewController * infoVC = [[XPMineUserInfoViewController alloc] init];
infoVC.uid = userUrbanID.integerValue;
[[self getKeyWindowNav] pushViewController:infoVC animated:YES];
}
}];
}
- (void)initHeaderAndFooterRrfresh {
[self initData];
}
- (void)updateCoins {
@kWeakify(self);
[Api requestRecordIncome:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
@kStrongify(self);
if(code == 200){
XPIncomeRecordModel *model = [XPIncomeRecordModel modelWithDictionary:data.data];
self.myCoins = @(model.diamonds).stringValue;
}
}];
}
#pragma mark -
- (void)loadAlbumPhotos {
[YYUtility checkAssetsLibrayAvailable:^{} denied:^{} restriction:^{}];
@@ -141,6 +164,7 @@
model = [[MessageUnSupportModel alloc] initWithMessage:message];
break;
}
model.uid = message.from.integerValue;
return model;
}
- (MessageBaseModel *)modelTransformCustomMessage:(NIMMessage *)message {
@@ -324,17 +348,13 @@
}
- (void)sendPublicChatHallTopTextSuccess{
[Api requestRecordIncome:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
if(code == 200){
XPIncomeRecordModel *model = [XPIncomeRecordModel modelWithDictionary:data.data];
self.myCoins = @(model.diamonds).stringValue;
}
}];
[self updateCoins];
}
-(void)getPublicChatHallTopTextPayMoneySuccess:(NSString *)money{
self.releaseCoins = money;
}
- (void)getPublicChatHallTopTextSuccess:(MSSessionPublicChatHallTopModel *)model{
self.headView.topModel = model;
@@ -388,7 +408,10 @@
option.startTime = 0;
option.order = NIMMessageSearchOrderAsc;
option.messageTypes = @[@(NIMMessageTypeText),@(NIMMessageTypeImage)];
@kWeakify(self);
[[NIMSDK sharedSDK].chatroomManager fetchMessageHistory:roomId option:option result:^(NSError * _Nullable error, NSArray<NIMMessage *> * _Nullable messages) {
@kStrongify(self);
if(error != nil){
self.isLoadHistoryMessage = NO;
}
@@ -445,7 +468,6 @@
NSArray *needRemoveMsgArray = [self.messages objectsAtIndexes:set];
[self.messages removeObjectsInArray:needRemoveMsgArray];
}else{
for (NIMMessage *message in messages) {
[self addTimeMessage:message];
if (message.isDeleted) {
@@ -456,7 +478,6 @@
MessageBaseModel * model = [self modeTransformMessage:message];
[self.messages addObject:model];
}
}
}
//
@@ -469,11 +490,7 @@
}
});
}];
}
#pragma mark - MessageCellDelegate
@@ -566,7 +583,6 @@
}
cell.delegate = self;
[cell renderWithMessage:[self.messages xpSafeObjectAtIndex:indexPath.row]];
[cell renderWithMessage:[self.messages xpSafeObjectAtIndex:indexPath.row]];
return cell;
}
break;
@@ -575,8 +591,8 @@
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
MessageBaseModel *m = [self.messages xpSafeObjectAtIndex:indexPath.row];
NSLog(@"%@",m.message.remoteExt);
// MessageBaseModel *m = [self.messages xpSafeObjectAtIndex:indexPath.row];
// NSLog(@"%@", m.message.remoteExt);
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
[self.keyboardManager hideAllBoardView];