Files
TIMSDK/iOS/Demo/TUIKitDemo/Chat/GroupInfoController.m
T
2022-01-25 21:57:45 +08:00

178 lines
6.9 KiB
Objective-C

//
// GroupInfoController.m
// TUIKitDemo
//
// Created by kennethmiao on 2018/10/18.
// Copyright © 2018年 Tencent. All rights reserved.
//
/** 腾讯云IM Demo 群组信息视图
* 本文件实现了群组信息的展示页面
*
* 您可以通过此界面查看特定群组的信息,包括群名称、群成员、群类型等
*
* 本类依赖于腾讯云 TUIKit和IMSDK 实现
*/
#import "GroupInfoController.h"
#import "TUIGroupInfoController.h"
#import "GroupMemberController.h"
#import "TUIGroupMemberCell.h"
#import "TUIContactSelectController.h"
#import "ReactiveObjC/ReactiveObjC.h"
#import "UIView+TUIToast.h"
#import "TUIKit.h"
#import "TUINaviBarIndicatorView.h"
@interface GroupInfoController () <TUIGroupInfoControllerDelegate>
@property (nonatomic, strong) TUINaviBarIndicatorView *titleView;
@end
@implementation GroupInfoController
- (void)viewDidLoad {
[super viewDidLoad];
TUIGroupInfoController *info = [[TUIGroupInfoController alloc] init];
info.groupId = _groupId;
info.delegate = self;
info.view.frame = self.view.bounds;
[self addChildViewController:info];
[self.view addSubview:info.view];
_titleView = [[TUINaviBarIndicatorView alloc] init];
self.navigationItem.titleView = _titleView;
self.navigationItem.title = @"";
[_titleView setTitle:NSLocalizedString(@"ProfileDetails", nil)];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
/**
*点击 群成员 按钮后的响应函数
*/
- (void)groupInfoController:(TUIGroupInfoController *)controller didSelectMembersInGroup:(NSString *)groupId groupInfo:(V2TIMGroupInfo *)groupInfo
{
GroupMemberController *membersController = [[GroupMemberController alloc] init];
membersController.groupId = groupId;
membersController.groupInfo = groupInfo;
[self.navigationController pushViewController:membersController animated:YES];
}
/**
*点击添加群成员后的响应函数->进入添加群成员视图
*/
- (void)groupInfoController:(TUIGroupInfoController *)controller didAddMembersInGroup:(NSString *)groupId members:(NSArray<TUIGroupMemberCellData *> *)members
{
TUIContactSelectController *vc = [[TUIContactSelectController alloc] initWithNibName:nil bundle:nil];
vc.title = NSLocalizedString(@"GroupAddFirend", nil); // @"添加联系人";
vc.viewModel.disableFilter = ^BOOL(TUICommonContactSelectCellData *data) {
for (TUIGroupMemberCellData *cd in members) {
if ([cd.identifier isEqualToString:data.identifier])
return YES;
}
return NO;
};
@weakify(self)
[self.navigationController pushViewController:vc animated:YES];
//添加成功后默认返回群组聊天界面
vc.finishBlock = ^(NSArray<TUICommonContactSelectCellData *> *selectArray) {
@strongify(self)
NSMutableArray *list = @[].mutableCopy;
for (TUICommonContactSelectCellData *data in selectArray) {
[list addObject:data.identifier];
}
[self.navigationController popToViewController:self animated:YES];
[self addGroupId:groupId memebers:list controller:controller];
};
}
/**
*点击删除群成员后的响应函数->进入删除群成员视图
*删除群成员按钮为群成员头像队列后的 "-" 按钮
*/
- (void)groupInfoController:(TUIGroupInfoController *)controller didDeleteMembersInGroup:(NSString *)groupId members:(NSArray<TUIGroupMemberCellData *> *)members
{
TUIContactSelectController *vc = [[TUIContactSelectController alloc] initWithNibName:nil bundle:nil];
vc.title = NSLocalizedString(@"GroupDeleteFriend", nil); // @"删除联系人";
NSMutableArray *ids = NSMutableArray.new;
for (TUIGroupMemberCellData *cd in members) {
if (![cd.identifier isEqualToString:[[V2TIMManager sharedInstance] getLoginUser]]) {
[ids addObject:cd.identifier];
}
}
[vc setSourceIds:ids];
@weakify(self)
[self.navigationController pushViewController:vc animated:YES];
//删除成功后默认返回群组聊天界面
vc.finishBlock = ^(NSArray<TUICommonContactSelectCellData *> *selectArray) {
@strongify(self)
NSMutableArray *list = @[].mutableCopy;
for (TUICommonContactSelectCellData *data in selectArray) {
[list addObject:data.identifier];
}
[self.navigationController popToViewController:self animated:YES];
[self deleteGroupId:groupId memebers:list controller:controller];
};
}
/**
*确认添加群成员后的执行函数,函数内包含请求后的回调
*/
- (void)addGroupId:(NSString *)groupId memebers:(NSArray *)members controller:(TUIGroupInfoController *)controller
{
[[V2TIMManager sharedInstance] inviteUserToGroup:_groupId userList:members succ:^(NSArray<V2TIMGroupMemberOperationResult *> *resultList) {
[TUITool makeToast:NSLocalizedString(@"add_success", nil)];
[controller updateData];
} fail:^(int code, NSString *desc) {
[TUITool makeToastError:code msg:desc];
}];
}
/**
*确认删除群成员后的执行函数,函数内包含请求后的回调
*/
- (void)deleteGroupId:(NSString *)groupId memebers:(NSArray *)members controller:(TUIGroupInfoController *)controller
{
[[V2TIMManager sharedInstance] kickGroupMember:groupId memberList:members reason:@"" succ:^(NSArray<V2TIMGroupMemberOperationResult *> *resultList) {
[TUITool makeToast:NSLocalizedString(@"delete_success", nil)];
[controller updateData];
} fail:^(int code, NSString *desc) {
[TUITool makeToastError:code msg:desc];
}];
}
/**
*解散群组后执行的函数,默认回到上一界面
*/
- (void)groupInfoController:(TUIGroupInfoController *)controller didDeleteGroup:(NSString *)groupId
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
/**
*退出群组后执行的函数,默认回到上一界面
*/
- (void)groupInfoController:(TUIGroupInfoController *)controller didQuitGroup:(NSString *)groupId
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
- (void)groupInfoController:(TUIGroupInfoController *)controller didSelectChangeAvatar:(NSString *)groupId
{
UIAlertController *ac = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"choose_avatar_for_you", nil) message:nil preferredStyle:UIAlertControllerStyleAlert];
[ac addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"OK", nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSString *url = [TUITool randAvatarUrl];
V2TIMGroupInfo *info = [[V2TIMGroupInfo alloc] init];
info.groupID = groupId;
info.faceURL = url;
[[V2TIMManager sharedInstance] setGroupInfo:info succ:^{
[controller updateGroupInfo];
} fail:^(int code, NSString *msg) {
[TUITool makeToastError:code msg:msg];
}];
}]];
[self presentViewController:ac animated:YES completion:nil];
}
@end