创建消息好友列表

This commit is contained in:
linyudan
2023-12-20 14:55:07 -08:00
parent 080705846f
commit 7942113fb2
14 changed files with 318 additions and 128 deletions

View File

@@ -212,6 +212,7 @@
8CD77FFB2B3272CA00F4CFF3 /* MewAlertPopup.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CD77FFA2B3272CA00F4CFF3 /* MewAlertPopup.m */; };
8CD77FFF2B32832C00F4CFF3 /* MewAlertModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CD77FFE2B32832C00F4CFF3 /* MewAlertModel.m */; };
8CD780032B32B72300F4CFF3 /* MewMineFriendTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CD780022B32B72300F4CFF3 /* MewMineFriendTableViewCell.m */; };
8CD780072B3379C800F4CFF3 /* MewCATransitionAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CD780062B3379C800F4CFF3 /* MewCATransitionAnimation.m */; };
FFDAAB800AD6BB4653B4427F /* Pods_yinmeng_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1797344FB85F47F60D0CC2A0 /* Pods_yinmeng_ios.framework */; };
/* End PBXBuildFile section */
@@ -657,6 +658,8 @@
8CD77FFE2B32832C00F4CFF3 /* MewAlertModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MewAlertModel.m; sourceTree = "<group>"; };
8CD780012B32B72300F4CFF3 /* MewMineFriendTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MewMineFriendTableViewCell.h; sourceTree = "<group>"; };
8CD780022B32B72300F4CFF3 /* MewMineFriendTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MewMineFriendTableViewCell.m; sourceTree = "<group>"; };
8CD780052B3379C800F4CFF3 /* MewCATransitionAnimation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MewCATransitionAnimation.h; sourceTree = "<group>"; };
8CD780062B3379C800F4CFF3 /* MewCATransitionAnimation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MewCATransitionAnimation.m; sourceTree = "<group>"; };
A22C3BCB2715A2E8FDECEA30 /* Pods-yinmeng-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-yinmeng-ios.release.xcconfig"; path = "Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.release.xcconfig"; sourceTree = "<group>"; };
E9E8A33E3FDD457C53D1E6D7 /* Pods-yinmeng-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-yinmeng-ios.debug.xcconfig"; path = "Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
@@ -1214,6 +1217,7 @@
237054422B1F3B3200F5DE14 /* Tool */ = {
isa = PBXGroup;
children = (
8CD780042B33799C00F4CFF3 /* CATransitionAnimation */,
8CD77FF82B32727800F4CFF3 /* MewAlertView */,
237054432B1F3B3200F5DE14 /* YYUtility */,
237054492B1F3B3200F5DE14 /* UIImage */,
@@ -2226,6 +2230,15 @@
path = Model;
sourceTree = "<group>";
};
8CD780042B33799C00F4CFF3 /* CATransitionAnimation */ = {
isa = PBXGroup;
children = (
8CD780052B3379C800F4CFF3 /* MewCATransitionAnimation.h */,
8CD780062B3379C800F4CFF3 /* MewCATransitionAnimation.m */,
);
path = CATransitionAnimation;
sourceTree = "<group>";
};
B603F71B608343F0E1A79C4B /* Frameworks */ = {
isa = PBXGroup;
children = (
@@ -2407,6 +2420,7 @@
237053F22B1F3B1700F5DE14 /* MewConstant.m in Sources */,
237054DE2B204C4E00F5DE14 /* MewUserVipInfoVo.m in Sources */,
237054AD2B1F3B3200F5DE14 /* YYReachability.m in Sources */,
8CD780072B3379C800F4CFF3 /* MewCATransitionAnimation.m in Sources */,
237054DB2B204ADE00F5DE14 /* MewUserInfoModel.m in Sources */,
8C9C843A2B0C697A00A601BC /* MewBaseRtcImpl.m in Sources */,
8CD77FE82B3211C800F4CFF3 /* MewSessionFanPartyModel.m in Sources */,

View File

@@ -0,0 +1,23 @@
//
// MewCATransitionAnimation.h
// yinmeng-ios
//
// Created by 触海 on 2023/12/20.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface MewCATransitionAnimation : NSObject
@property (nonatomic, strong, readonly) CATransition *transition;
/// 初始化
+ (MewCATransitionAnimation *)Mew_TranstionAnimationDuration:(CFTimeInterval)duration
timing:(CAMediaTimingFunctionName)timing
type:(CATransitionType)type subType:(CATransitionSubtype)subType;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,47 @@
//
// MewCATransitionAnimation.m
// yinmeng-ios
//
// Created by on 2023/12/20.
//
#import "MewCATransitionAnimation.h"
@interface MewCATransitionAnimation()
@property (nonatomic, strong) CATransition *_transtion;
@property (nonatomic, assign) CFTimeInterval duration;
@property (nonatomic, assign) CATransitionType type;
@property (nonatomic, assign) CATransitionSubtype subType;
@end
@implementation MewCATransitionAnimation
///
+ (MewCATransitionAnimation *)Mew_TranstionAnimationDuration:(CFTimeInterval)duration
timing:(CAMediaTimingFunctionName)timing
type:(CATransitionType)type subType:(CATransitionSubtype)subType {
MewCATransitionAnimation *animation = [[MewCATransitionAnimation alloc] init];
animation.duration = duration;
animation.type = type;
animation.subType = subType;
animation._transtion = [animation transtionAnimationWithName:timing];
return animation;
}
#pragma mark - Get
- (CATransition *)transition {
return __transtion;
}
#pragma mark - Private Method
/// CATransition
- (CATransition *)transtionAnimationWithName:(CAMediaTimingFunctionName)timingName {
CATransition *transition = [CATransition animation];
transition.duration = self.duration;
transition.timingFunction = [CAMediaTimingFunction functionWithName:timingName];
transition.type = self.type;
transition.subtype = self.subType;
return transition;
}
@end

View File

@@ -8,13 +8,17 @@
#import "MewBaseViewController.h"
#import "MewEnum.h"
#import <JXCategoryView/JXCategoryView.h>
@class MewUserInfoModel;
NS_ASSUME_NONNULL_BEGIN
typedef void(^didSelectFriendClouseEvent)(MewUserInfoModel *userInfo);
@interface MewMessageFriendViewController : MewBaseViewController<JXCategoryListContentViewDelegate>
/// 初始化
- (instancetype)initWithOpenMessageType:(MewOpenFriendType)type;
/// 分享好友
@property (nonatomic, weak) didSelectFriendClouseEvent gotoShareFriendComplted;
@property (nonatomic, assign) MewOpenFriendType friendType;
@property (nonatomic, strong) UIViewController *currentViewController;
@end
NS_ASSUME_NONNULL_END

View File

@@ -9,6 +9,7 @@
/// View
#import "MewEmptyTableViewCell.h"
#import "MewMineFriendTableViewCell.h"
#import "MewSessionViewController.h"
/// Net
#import "Api+Mine.h"
/// Third
@@ -18,6 +19,7 @@
#import "NSArray+MewSafe.h"
#import "MewEnum.h"
#import "MewMacro.h"
#import "MewCATransitionAnimation.h"
@interface MewMessageFriendViewController ()<UITableViewDelegate, UITableViewDataSource>
@@ -29,25 +31,21 @@
@property (nonatomic, assign) NSInteger page;
/** */
@property (nonatomic, assign) BOOL hasMoreData;
@property (nonatomic, assign) MewOpenMessageType friendType;
@end
@implementation MewMessageFriendViewController
- (BOOL)mew_isHiddenNavBar {
return self.friendType != Mew_OpenFriendType_Share;
}
#pragma mark - Life Cycle
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = UIColor.redColor;
}
#pragma mark - Init
- (instancetype)initWithOpenMessageType:(MewOpenFriendType)type {
self = [super init];
if (self) {
[self loadFriendUids];
[self loadRequestUserInfos];
[self setUI];
}
return self;
}
#pragma mark - Load Data
@@ -64,10 +62,10 @@
if (self.friendUids.count == 0) return;
NSString *uidStrings = [self.friendUids componentsJoinedByString:@","];
[Api Mew_GetUserInfos:uidStrings completion:^(MewBaseModel * _Nonnull data, NSInteger code, NSString * _Nonnull msg) {
[Api Mew_GetUserInfos:^(MewBaseModel * _Nonnull data, NSInteger code, NSString * _Nonnull msg) {
self.friendModels = [MewUserInfoModel mewModelsWithArray:data.data];
[self.friendTableView reloadData];
}];
} uids:uidStrings];
}
#pragma mark - UITableViewDelegate, UITableViewDataSource
@@ -91,6 +89,32 @@
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (self.friendModels.count == 0) return;
MewUserInfoModel *model = [self.friendModels mewSafeObjectAtIndex:indexPath.row];
//
if (self.friendType == Mew_OpenFriendType_Share && self.gotoShareFriendComplted) {
self.gotoShareFriendComplted(model);
}
NIMSession *session = [NIMSession session:[NSString stringWithFormat:@"%ld", model.uid] type:NIMSessionTypeP2P];
MewSessionViewController *controller = [[MewSessionViewController alloc] initWithSession:session];
//
if (self.friendType == Mew_OpenFriendType_Normal) {
controller.openType = Mew_OpenMessageType_Normal;
[self.navigationController pushViewController:controller animated:YES];
}
//
if (self.friendType == Mew_OpenFriendType_In_Room) {
controller.openType = Mew_OpenMessageType_In_Room;
CATransition *transition = [MewCATransitionAnimation Mew_TranstionAnimationDuration:0.3f timing:kCAMediaTimingFunctionEaseInEaseOut type:kCATransitionPush subType:kCATransitionFromRight].transition;
[self.currentViewController.view.layer addAnimation:transition forKey:nil];
[self.currentViewController addChildViewController:controller];
[self.currentViewController.view addSubview:controller.view];
}
}

View File

@@ -14,9 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
@interface MewMessageSessionViewController : MewBaseViewController<JXCategoryListContentViewDelegate>
/// 初始化
- (instancetype)initWithSessionType:(MewOpenMessageType)type;
@property (nonatomic, assign) MewOpenMessageType messageType;
/// 当前控制器,因为房间内聊天没有控制器去 push 或者做其他的操作
@property (nonatomic, weak) UIViewController *currentController;

View File

@@ -15,6 +15,7 @@
#import "NSArray+MewSafe.h"
#import "MewTimeIntervalUtils.h"
#import "MewAlertPopup.h"
#import "MewCATransitionAnimation.h"
/// View
#import "MewMessageSessionHeaderView.h"
#import "MewYoungerView.h"
@@ -32,7 +33,6 @@
@interface MewMessageSessionViewController () <UITableViewDelegate, UITableViewDataSource, MewMessageSessionHeaderViewDelegate,
NIMLoginManagerDelegate, NIMConversationManagerDelegate>
@property (nonatomic, assign) MewOpenMessageType type;
/****/
@property (nonatomic, strong) MewMessageSessionHeaderView *sessionHeaderView;
@@ -66,31 +66,22 @@
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = UIColor.whiteColor;
[self addNIMNoti];
[[NIMSDKConfig sharedConfig] setShouldSyncStickTopSessionInfos:YES];
[self loadRequestSessionDatas];
[self setUI];
[self setUIConstraints];
[self loadRequestUserInfoModel];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if (self.type != Mew_OpenMessageType_Normal) { return; }
if (self.messageType != Mew_OpenMessageType_Normal) { return; }
[self loadRequestFansPartyModel];
}
#pragma mark - Init
- (instancetype)initWithSessionType:(MewOpenMessageType)type {
self = [super init];
if (self) {
self.type = type;
[self addNIMNoti];
[[NIMSDKConfig sharedConfig] setShouldSyncStickTopSessionInfos:YES];
[self loadRequestSessionDatas];
[self setUI];
[self setUIConstraints];
}
return self;
}
#pragma mark - Public Method
///
@@ -115,12 +106,11 @@
}
NSArray<NIMRecentSession *> *allRecentSessions = [NIMSDK sharedSDK].conversationManager.allRecentSessions;
// NSMutableArray<NSString *> *uidArray = [NSMutableArray array];
NSMutableArray<NIMRecentSession *> *sessionArray = [NSMutableArray array];
__block int unreadCount = 0;
[allRecentSessions enumerateObjectsUsingBlock:^(NIMRecentSession * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
BOOL isContainerOffice = [[MewClientConfig shareConfig] mew_isContainerOfficeMsgUid:obj.session.sessionId];
if (self.type == Mew_OpenMessageType_Normal && isContainerOffice) {
if (self.messageType == Mew_OpenMessageType_Normal && isContainerOffice) {
[self.sessionHeaderView mew_updateBadgeViewWithSessionId:obj.session.sessionId unreadCount:obj.unreadCount];
} else {
if (obj.session.sessionId.integerValue > 0) {
@@ -154,7 +144,7 @@
}
- (void)loadRequestFansPartyModel {
if (self.type == Mew_OpenMessageType_In_Room) { return; }
if (self.messageType == Mew_OpenMessageType_In_Room) { return; }
[Api Mew_RequestFansParty:^(MewBaseModel * _Nonnull data, NSInteger code, NSString * _Nonnull msg) {
if (code == 200) {
NSArray<MewSessionFanPartyModel *> *fans = [MewSessionFanPartyModel mewModelsWithArray:data.data];
@@ -190,15 +180,11 @@
NIMRecentSession *selectSession = [self.recentSessions mewSafeObjectAtIndex:indexPath.row];
MewSessionViewController *controller = [[MewSessionViewController alloc] initWithSession:selectSession.session];
controller.openType = self.type;
if (self.type == Mew_OpenMessageType_Normal) {
controller.openType = self.messageType;
if (self.messageType == Mew_OpenMessageType_Normal) {
[self.navigationController pushViewController:controller animated:YES];
} else {
CATransition *transition = [CATransition animation];
transition.duration = 0.3f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
CATransition *transition = [MewCATransitionAnimation Mew_TranstionAnimationDuration:0.3f timing:kCAMediaTimingFunctionEaseInEaseOut type:kCATransitionPush subType:kCATransitionFromRight].transition;
[self.currentController.view.layer addAnimation:transition forKey:nil];
[self.currentController.view addSubview:controller.view];
[self.currentController addChildViewController:controller];
@@ -223,7 +209,7 @@
///
- (void)didAddRecentSession:(NIMRecentSession *)recentSession totalUnreadCount:(NSInteger)totalUnreadCount {
BOOL isContainerOffice = [[MewClientConfig shareConfig] mew_isContainerOfficeMsgUid:recentSession.session.sessionId];
if (self.type != Mew_OpenMessageType_In_Room && isContainerOffice) {
if (self.messageType != Mew_OpenMessageType_In_Room && isContainerOffice) {
[self.sessionHeaderView mew_updateBadgeViewWithSessionId:recentSession.session.sessionId unreadCount:recentSession.unreadCount];
return;
}
@@ -246,7 +232,7 @@
- (void)didUpdateRecentSession:(NIMRecentSession *)recentSession totalUnreadCount:(NSInteger)totalUnreadCount {
NSString *sessionId = recentSession.session.sessionId;
BOOL isContainer = [[MewClientConfig shareConfig] mew_isContainerOfficeMsgUid:sessionId];
if (self.type != Mew_OpenMessageType_In_Room && isContainer) {
if (self.messageType != Mew_OpenMessageType_In_Room && isContainer) {
[self.sessionHeaderView mew_updateBadgeViewWithSessionId:sessionId unreadCount:recentSession.unreadCount];
return;
}
@@ -348,7 +334,9 @@
}
NSString *badgeString = badge > 0 ? [NSString stringWithFormat:@"%ld", badge] : nil;
[self.tabBarController.tabBar.items[3] setBadgeValue:badgeString];
NSInteger itemCount = self.tabBarController.tabBar.items.count;
NSInteger messageIndex = itemCount > 3 ? itemCount - 2 : itemCount - 1;
[self.tabBarController.tabBar.items[messageIndex] setBadgeValue:badgeString];
}
/// index
@@ -401,7 +389,7 @@
- (void)setUI {
[self.view addSubview:self.sessionListTableView];
if (self.type == Mew_OpenMessageType_In_Room) { return; }
if (self.messageType == Mew_OpenMessageType_In_Room) { return; }
self.view.backgroundColor = UIColor.clearColor;
[self.view addSubview:self.sessionHeaderView];
}
@@ -410,14 +398,14 @@
- (void)setUIConstraints {
[self.sessionListTableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.bottom.mas_equalTo(self.view);
if (self.type == Mew_OpenMessageType_Normal) {
if (self.messageType == Mew_OpenMessageType_Normal) {
make.top.mas_equalTo(self.sessionHeaderView.mas_bottom);
} else {
make.top.mas_equalTo(self.view);
}
}];
if (self.type == Mew_OpenMessageType_In_Room) { return; }
if (self.messageType == Mew_OpenMessageType_In_Room) { return; }
[self.sessionHeaderView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(0);
make.top.mas_equalTo(8);
@@ -464,6 +452,4 @@
return _sessionHeaderView;
}
@end

View File

@@ -46,12 +46,9 @@
[self setUI];
}
#pragma mark - JXCategoryListContainerViewDelegate
- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView {
return self.navTitleView.titles.count;
return 2;
}
- (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index {
@@ -60,7 +57,6 @@
} else {
return self.friendController;
}
}
@@ -96,7 +92,8 @@
[self.listContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.navTitleView.mas_bottom);
make.left.right.bottom.mas_equalTo(0);
make.left.right.mas_equalTo(0);
make.bottom.mas_equalTo(0);
}];
[self.allReadButton mas_makeConstraints:^(MASConstraintMaker *make) {
@@ -127,6 +124,7 @@
return _navTitleView;
}
- (JXCategoryListContainerView *)listContainerView {
if (!_listContainerView) {
_listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self];
@@ -139,7 +137,7 @@
- (MewMessageSessionViewController *)sessionController {
if (!_sessionController) {
_sessionController = [[MewMessageSessionViewController alloc] initWithSessionType:Mew_OpenMessageType_Normal];
_sessionController = [[MewMessageSessionViewController alloc] init];
}
return _sessionController;
}

View File

@@ -13,7 +13,8 @@ NS_ASSUME_NONNULL_BEGIN
@interface MewMineFriendTableViewCell : UITableViewCell
/// 用户信息
@property (nonatomic, strong) MewUserInfoModel *userInfo;
/// 是否在房间内
@property (nonatomic, assign, getter=isInRoom) BOOL inRoom;
@end

View File

@@ -6,6 +6,32 @@
//
#import "MewMineFriendTableViewCell.h"
/// View
#import "NetImageView.h"
/// Tool
#import "MewThemeColor.h"
#import "MewMacro.h"
@interface MewMineFriendTableViewCell()
//
@property (nonatomic, strong) NetImageView *iconImageView;
//
@property (nonatomic, strong) UIStackView *horStackView;
//
@property (nonatomic, strong) UILabel *nickNameLabel;
//
@property (nonatomic, strong) UIImageView *generImageView;
//
@property (nonatomic, strong) NetImageView *levelImageView;
//
@property (nonatomic, strong) NetImageView *charmLevelImageView;
//
@property (nonatomic, strong) UILabel *personSignLabel;
// 线
@property (nonatomic, strong) UIView *lineView;
@end
@implementation MewMineFriendTableViewCell
@@ -23,6 +49,80 @@
}
#pragma mark - Get
- (NetImageView *)iconImageView {
if (!_iconImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.imageType = ImageTypeUserIcon;
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_iconImageView = [[NetImageView alloc] initWithConfig:config];
_iconImageView.layer.masksToBounds = YES;
_iconImageView.layer.cornerRadius = 55/2;
}
return _iconImageView;
}
- (UIStackView *)horStackView {
if (!_horStackView) {
_horStackView = [[UIStackView alloc] init];
_horStackView.axis = UILayoutConstraintAxisHorizontal;
_horStackView.distribution = UIStackViewDistributionFill;
_horStackView.alignment = UIStackViewAlignmentCenter;
_horStackView.spacing = 10;
}
return _horStackView;
}
- (UILabel *)nickNameLabel {
if (!_nickNameLabel) {
_nickNameLabel = [[UILabel alloc] init];
_nickNameLabel.font = kFontRegular(15);
_nickNameLabel.textColor = MewThemeColor.mewMainTextColor;
}
return _nickNameLabel;
}
- (UIImageView *)generImageView {
if (!_generImageView) {
_generImageView = [[UIImageView alloc] init];
_generImageView.userInteractionEnabled = YES;
}
return _generImageView;
}
- (NetImageView *)levelImageView {
if (!_levelImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_levelImageView = [[NetImageView alloc] initWithConfig:config];
}
return _levelImageView;
}
- (NetImageView *)charmLevelImageView {
if (!_charmLevelImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_charmLevelImageView = [[NetImageView alloc] initWithConfig:config];
}
return _charmLevelImageView;
}
- (UILabel *)personSignLabel {
if (!_personSignLabel) {
_personSignLabel = [[UILabel alloc] init];
_personSignLabel.textColor = MewThemeColor.mewSecondTextColor;
_personSignLabel.font = kFontRegular(12);
}
return _personSignLabel;
}
- (UIView *)lineView {
if (!_lineView) {
_lineView = [[UIView alloc] init];
_lineView.backgroundColor = MewThemeColor.mewDividerColor;
}
return _lineView;
}
@end

View File

@@ -6,13 +6,14 @@
//
#import "MewMvpViewController.h"
#import "MewEnum.h"
@class NIMSession;
NS_ASSUME_NONNULL_BEGIN
@interface MewSessionViewController : MewMvpViewController
@property (nonatomic, assign) NSInteger openType;
@property (nonatomic, assign) MewOpenMessageType openType;
- (instancetype)initWithSession:(NIMSession *)session;
@end

View File

@@ -37,7 +37,6 @@
@interface MewSessionViewController ()<MewSessionToolbarViewDelegate,MewSessionNavViewDelegate,MewSessionMessageCellDelegate,MewMessageProtocol,
UITableViewDelegate, UITableViewDataSource,
MewSessionMessageManagerDelegate,
NIMChatManagerDelegate, NIMConversationManagerDelegate, NIMMediaManagerDelegate,TZImagePickerControllerDelegate>
///
@property (nonatomic,strong) MewSessionNavView *sessionNavView;
@@ -65,18 +64,12 @@
- (void)viewDidLoad {
[super viewDidLoad];
[[NIMManager sharedManager] addNIMListener];
[[MewSessionMessageManager shared] addProtocol:self];
self.view.backgroundColor = UIColor.whiteColor;
[self initViews];
self.view.backgroundColor = [UIColor whiteColor];
// [[NIMSDK sharedSDK].chatManager addDelegate:self];
// [[NIMSDK sharedSDK].conversationManager addDelegate:self];
// [self mew_initHeaderAndFooterRefresh];
[[NIMSDK sharedSDK].chatManager addDelegate:self];
[[NIMSDK sharedSDK].conversationManager addDelegate:self];
[self mew_initHeaderAndFooterRefresh];
[IQKeyboardManager sharedManager].enable = NO;
}
@@ -194,43 +187,43 @@
}
#pragma mark - NIMChatManagerDelegate, NIMMediaManagerDelegate ()
- (NIMSession *)getCurrentSession {
return self.session;
}
//- (NIMSession *)getCurrentSession {
// return self.session;
//}
- (void)recvMessages:(NSArray<NIMMessage *> *)messages {
// 8714013 7067608
NSLog(@"接收到的消息的数据是:%@",messages);
// [self.messages addObjectsFromArray:messages];
self.messages = [messages mutableCopy];
[self.sessionTableView reloadData];
[self.sessionTableView nim_scrollToBottom:YES];
[[NIMSDK sharedSDK].conversationManager markAllMessagesReadInSession:self.session];
}
//- (void)recvMessages:(NSArray<NIMMessage *> *)messages {
//// 8714013 7067608
//
// NSLog(@"接收到的消息的数据是:%@",messages);
//// [self.messages addObjectsFromArray:messages];
// self.messages = [messages mutableCopy];
// [self.sessionTableView reloadData];
// [self.sessionTableView nim_scrollToBottom:YES];
// [[NIMSDK sharedSDK].conversationManager markAllMessagesReadInSession:self.session];
//}
//
//- (void)onRecvMessages:(NSArray<NIMMessage *> *)messages {
// NIMMessage *message = messages.firstObject;
// NIMSession *session = message.session;
// if (![session isEqual:self.session] || !messages.count) {
// return;
// }
//
//
// for (NIMMessage *message in messages) {
// if (message.isDeleted) {
// continue;
// }
// [self.messages addObject:message];
// }
// [self.sessionTableView reloadData];
// [self.sessionTableView nim_scrollToBottom:YES];
//
// [[NIMSDK sharedSDK].conversationManager markAllMessagesReadInSession:self.session];
//}
- (void)onRecvMessages:(NSArray<NIMMessage *> *)messages {
NIMMessage *message = messages.firstObject;
NIMSession *session = message.session;
if (![session isEqual:self.session] || !messages.count) {
return;
}
for (NIMMessage *message in messages) {
if (message.isDeleted) {
continue;
}
[self.messages addObject:message];
}
[self.sessionTableView reloadData];
[self.sessionTableView nim_scrollToBottom:YES];
[[NIMSDK sharedSDK].conversationManager markAllMessagesReadInSession:self.session];
}
//
- (void)sendMessage:(NIMMessage *)message didCompleteWithError:(NSError *)error {
@@ -326,27 +319,27 @@
///
- (void)mew_headerRefresh {
// if (self.messages.count > 0) {
// [[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session message:self.messages.firstObject limit:20 completion:^(NSError * _Nullable error, NSArray<NIMMessage *> * _Nullable messages) {
// [self.sessionTableView.mj_header endRefreshing];
// if (error == nil && messages.count > 0) {
// for (int i = ((int)messages.count - 1); i > 0; i--) {
// NIMMessage *message = [messages mewSafeObjectAtIndex:i];
// [self.messages insertObject:message atIndex:0];
// }
// }
// [self.sessionTableView reloadData];
// }];
// } else {
// [[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session message:nil limit:20 completion:^(NSError * _Nullable error, NSArray<NIMMessage *> * _Nullable messages) {
// [self.sessionTableView.mj_header endRefreshing];
// if (error == nil) {
// [self.messages addObjectsFromArray:messages];
// }
// [self.sessionTableView reloadData];
// [self.sessionTableView nim_scrollToBottom:NO];
// }];
// }
if (self.messages.count > 0) {
[[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session message:self.messages.firstObject limit:20 completion:^(NSError * _Nullable error, NSArray<NIMMessage *> * _Nullable messages) {
[self.sessionTableView.mj_header endRefreshing];
if (error == nil && messages.count > 0) {
for (int i = ((int)messages.count - 1); i > 0; i--) {
NIMMessage *message = [messages mewSafeObjectAtIndex:i];
[self.messages insertObject:message atIndex:0];
}
}
[self.sessionTableView reloadData];
}];
} else {
[[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session message:nil limit:20 completion:^(NSError * _Nullable error, NSArray<NIMMessage *> * _Nullable messages) {
[self.sessionTableView.mj_header endRefreshing];
if (error == nil) {
[self.messages addObjectsFromArray:messages];
}
[self.sessionTableView reloadData];
[self.sessionTableView nim_scrollToBottom:NO];
}];
}
}
- (void)initData {

View File

@@ -119,7 +119,7 @@ NS_ASSUME_NONNULL_BEGIN
/// 获取批量的用户数组
/// @param uids 用户ids
/// @param completion 完成
+ (void)Mew_GetUserInfos:(NSString *)uids completion:(MewHttpRequestHelperCompletion)completion;
+ (void)Mew_GetUserInfos:(MewHttpRequestHelperCompletion)completion uids:(NSString *)uids;
@end

View File

@@ -144,7 +144,7 @@
///
/// @param uids ids
/// @param completion
+ (void)Mew_GetUserInfos:(NSString *)uids completion:(MewHttpRequestHelperCompletion)completion {
+ (void)Mew_GetUserInfos:(MewHttpRequestHelperCompletion)completion uids:(NSString *)uids {
[self makeRequest:@"user/list" method:MewHttpRequestHelperMethodGET completion:completion, __FUNCTION__, uids, nil];
}