ifish/Ifish/controllers/IfishTabControllers/消息/IfishIMFiles/Sessions/Card/ViewController/NTESSessionCardViewControll...

159 lines
6.0 KiB
Objective-C

//
// NTESSessionCardViewController.m
// NIM
//
// Created by chris on 15/10/20.
// Copyright © 2015年 Netease. All rights reserved.
//
#import "NTESSessionCardViewController.h"
#import "NIMCommonTableDelegate.h"
#import "NIMCommonTableData.h"
#import "SVProgressHUD.h"
#import "Toast+UIView.h"
#import "NIMMemberGroupView.h"
#import "UIView+NTES.h"
#import "NIMContactSelectConfig.h"
#import "NIMContactSelectViewController.h"
//#import "NTESSessionViewController.h"
#import "IfishSessionViewController.h"
@interface NTESSessionCardViewController ()<NIMMemberGroupViewDelegate,NIMContactSelectDelegate>
@property (nonatomic,strong) NIMCommonTableDelegate *delegator;
@property (nonatomic,copy ) NSArray *data;
@property (nonatomic,strong) NIMSession *session;
@property (nonatomic,strong) NIMMemberGroupView *headerView;
@end
@implementation NTESSessionCardViewController
- (instancetype)initWithSession:(NIMSession *)session{
self = [super initWithNibName:nil bundle:nil];
if (self) {
_session = session;
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title = @"聊天信息";
__weak typeof(self) wself = self;
self.delegator = [[NIMCommonTableDelegate alloc] initWithTableData:^NSArray *{
return wself.data;
}];
self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.tableView.backgroundColor = [UIColor colorWithRed:236.0/255.0 green:241.0/255.0 blue:245.0/255.0 alpha:1];
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
self.tableView.delegate = self.delegator;
self.tableView.dataSource = self.delegator;
[self.view addSubview:self.tableView];
[self refresh];
}
- (void)refresh{
[self buildData];
[self bulidTableHeader:self.view.width];
[self.tableView reloadData];
}
- (void)buildData{
BOOL needNotify = [[NIMSDK sharedSDK].userManager notifyForNewMsg:self.session.sessionId];
NSArray *data = @[
@{
HeaderTitle:@"",
RowContent :@[
@{
Title : @"消息提醒",
CellClass : @"NTESSettingSwitcherCell",
RowHeight : @(50),
CellAction : @"onActionNeedNotifyValueChange:",
ExtraInfo : @(needNotify),
ForbidSelect : @(YES)
},
],
},
];
self.data = [NIMCommonTableSection sectionsWithData:data];
}
- (void)bulidTableHeader:(CGFloat)width{
self.headerView = [[NIMMemberGroupView alloc] initWithFrame:CGRectZero];
self.headerView.delegate = self;
[self.headerView refreshUids:@[self.session.sessionId] operators:CardHeaderOpeatorAdd];
[self.headerView setTitle:@"创建讨论组" forOperator:CardHeaderOpeatorAdd];
CGSize size = [self.headerView sizeThatFits:CGSizeMake(width, CGFLOAT_MAX)];
self.headerView.size = size;
self.tableView.tableHeaderView = self.headerView;
}
- (void)onActionNeedNotifyValueChange:(id)sender{
UISwitch *switcher = sender;
[SVProgressHUD show];
__weak typeof(self) wself = self;
[[NIMSDK sharedSDK].userManager updateNotifyState:switcher.on forUser:self.session.sessionId completion:^(NSError *error) {
[SVProgressHUD dismiss];
if (error) {
[wself.view makeToast:@"操作失败"];
[wself refresh];
}
}];
}
- (void)didSelectOperator:(NIMKitCardHeaderOpeator )opera{
if (opera == CardHeaderOpeatorAdd) {
NSMutableArray *users = [[NSMutableArray alloc] init];
NSString *currentUserID = [[[NIMSDK sharedSDK] loginManager] currentAccount];
[users addObject:currentUserID];
NIMContactFriendSelectConfig *config = [[NIMContactFriendSelectConfig alloc] init];
config.filterIds = users;
config.needMutiSelected = YES;
config.alreadySelectedMemberId = @[self.session.sessionId];
NIMContactSelectViewController *vc = [[NIMContactSelectViewController alloc] initWithConfig:config];
vc.delegate = self;
[vc show];
}
}
#pragma mark - ContactSelectDelegate
- (void)didFinishedSelect:(NSArray *)selectedContacts{
if (!selectedContacts.count) {
return;
}
NSString *uid = [[NIMSDK sharedSDK].loginManager currentAccount];
NSArray *users = [@[uid] arrayByAddingObjectsFromArray:selectedContacts];
NIMCreateTeamOption *option = [[NIMCreateTeamOption alloc] init];
option.name = @"讨论组";
option.type = NIMTeamTypeNormal;
__weak typeof(self) wself = self;
[SVProgressHUD show];
[[NIMSDK sharedSDK].teamManager createTeam:option
users:users
completion:^(NSError *error, NSString *teamId) {
[SVProgressHUD dismiss];
if (!error) {
NIMSession *session = [NIMSession session:teamId type:NIMSessionTypeTeam];
UINavigationController *nav = wself.navigationController;
[nav popToRootViewControllerAnimated:NO];
IfishSessionViewController *vc = [[IfishSessionViewController alloc] initWithSession:session];
[nav pushViewController:vc animated:YES];
}else{
[wself.view makeToast:@"创建讨论组失败" ];
}
}];
}
@end