| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457 |
- //
- // UserInfoViewController.m
- // NIMDemo
- //
- // Created by Fenix Wang on 2017/7/14.
- // Copyright © 2017年 Netease. All rights reserved.
- //
- #import "UserInfoViewController.h"
- #import "UIView+NTES.h"
- #import "NIMAvatarImageView.h"
- #import "UIImageView+WebCache.h"
- #import "AppDelegate.h"
- #import "User.h"
- #import "NTESSessionViewController.h"
- #import "UserGiftViewController.h"
- #import "HttpRequest.h"
- #import "UIView+Toast.h"
- #import "UserConfigViewController.h"
- #import "AddPhotoViewController.h"
- #import "ImagePagerViewController.h"
- #import "SocialTableViewController.h"
- #import "SVProgressHUD.h"
- #import "UIActionSheet+NTESBlock.h"
- @interface UserInfoViewController ()
- @property (weak, nonatomic) IBOutlet UIView *topView;
- @property (weak, nonatomic) IBOutlet UIImageView *bannerImage;
- @property (weak, nonatomic) IBOutlet UIView *avatarContainer;
- @property (weak, nonatomic) IBOutlet UIImageView *genderImage;
- @property (weak, nonatomic) IBOutlet UILabel *nickLabel;
- @property (weak, nonatomic) IBOutlet UILabel *idLabel;
- @property (weak, nonatomic) IBOutlet UIButton *followBtn;
- @property (weak, nonatomic) IBOutlet UIButton *msgBtn;
- @property (weak, nonatomic) IBOutlet UIButton *giftBtn;
- @property (weak, nonatomic) IBOutlet UIView *photoContainer;
- @property (weak, nonatomic) IBOutlet UIView *socialContainer;
- @property (weak, nonatomic) IBOutlet UILabel *picTitle;
- @property (weak, nonatomic) IBOutlet UIView *picContainer;
- @property (weak, nonatomic) IBOutlet UILabel *morePicLabel;
- @property (weak, nonatomic) IBOutlet UILabel *ageLabel;
- @property (weak, nonatomic) IBOutlet UILabel *hobbyLabel;
- @property (weak, nonatomic) IBOutlet UILabel *addressLabel;
- @property (weak, nonatomic) IBOutlet UIButton *kickBtn;
- @property (nonatomic, strong) NIMAvatarImageView *avatar;
- @property (nonatomic, strong) NSString *userId;
- @property (nonatomic, strong) NIMUser *nimUser;
- @property (nonatomic, strong) UserInfo *userInfo;
- @property (nonatomic, assign) int followState;
- @property (nonatomic, strong) NSMutableArray *photoPicArr;
- @property (nonatomic, strong) NSMutableArray *photoThumbArr;
- @property (nonatomic, strong) NSMutableArray *socialPicArr;
- @property (nonatomic, strong) NSMutableArray *socialThumbArr;
- @end
- @implementation UserInfoViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view.
- self.tableView.contentInset = UIEdgeInsetsMake(-69, 0, 0, 0);
-
- _bannerImage.clipsToBounds = YES;
-
- _followBtn.layer.borderColor = UIColor.lightGrayColor.CGColor;
- _followBtn.layer.borderWidth = 1;
- _followBtn.layer.cornerRadius = _followBtn.height/2;
-
- _msgBtn.layer.borderColor = UIColor.lightGrayColor.CGColor;
- _msgBtn.layer.borderWidth = 1;
- _msgBtn.layer.cornerRadius = _msgBtn.height/2;
-
- _giftBtn.layer.cornerRadius = _giftBtn.height/2;
- _kickBtn.layer.cornerRadius = _kickBtn.height/2;
-
- if(_userInfo)
- {
- [self followState:_userInfo.follow];
- }
- else if(self.title && self.title.intValue > 0)
- {
- [self setUserId:self.title];
- }
-
- [self fetchGift];
-
- [_picContainer addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTouchMorePic:)]];
- }
- - (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- - (void)viewWillAppear:(BOOL)animated{
- [super viewWillAppear:animated];
-
- [self.navigationItem setTitle:@""];
-
- UIButton *configBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- [configBtn setImage:[UIImage imageNamed:@"群成员信息_03"] forState:UIControlStateNormal];
- [configBtn addTarget:self action:@selector(onTouchConfig:) forControlEvents:UIControlEventTouchUpInside];
- [configBtn sizeToFit];
-
- UIBarButtonItem *configItem = [[UIBarButtonItem alloc] initWithCustomView:configBtn];
- [self.navigationItem setRightBarButtonItems:@[configItem]];
-
- AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
- [appDelegate transparentNavBar:self];
- }
- - (void)viewWillDisappear:(BOOL)animated{
- [super viewWillDisappear:animated];
-
- AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
- [appDelegate orangeNavBar:self];
- }
- - (void)setUserId:(NSString *)userId{
- __weak typeof(self) wself = self;
- [[HttpRequest shared] userInfo:userId search:NO success:^(UserInfo *userInfo) {
- [wself setUser:userInfo];
- } failure:^{
-
- }];
- }
- - (void)setUser:(UserInfo *)userInfo{
- _userId = userInfo.userId;
- self.userInfo = userInfo;
- [self followState:userInfo.follow];
- [self fetchNIMUser];
- [self fetchSocial];
- [self fetchGift];
- [self checkTeamKick];
- }
- - (void)checkTeamKick
- {
- if(_team == nil ||
- ![_team.owner isEqualToString:[NIMSDK sharedSDK].loginManager.currentAccount] ||
- [_team.owner isEqualToString:_userId])
- {
- _kickBtn.hidden = YES;
- return;
- }
-
- _kickBtn.hidden = NO;
- }
- - (void)fetchGift
- {
- __weak typeof(self) wself = self;
- [[User sharedInfo] requestGiftList:^(NSMutableArray * _Nullable list) {
-
- if(list.count == 0)
- {
- float centerX = wself.msgBtn.superview.width/2;
- wself.followBtn.right = centerX - 20;
- wself.msgBtn.left = centerX + 20;
- wself.giftBtn.hidden = YES;
- }
-
- } failure:^(NSError * _Nullable error) {
-
- }];
- }
- - (void)fetchNIMUser{
- __weak typeof(self) wself = self;
- [[NIMSDK sharedSDK].userManager fetchUserInfos:@[_userId] completion:^(NSArray<NIMUser *> * _Nullable users, NSError * _Nullable error) {
- _nimUser = [users objectAtIndex:0];
- [wself fillInfo];
- }];
- }
- - (void)fetchSocial{
- __weak typeof(self) wself = self;
- [[HttpRequest shared] getSocialDataList:nil targetId:_userId success:^(NSMutableArray * _Nullable dataList) {
-
- _socialPicArr = [[NSMutableArray alloc] init];
- _socialThumbArr = [[NSMutableArray alloc] init];
- for(int i=0; i<dataList.count; i++)
- {
- SocialItemData *data = [dataList objectAtIndex:i];
- [_socialPicArr addObjectsFromArray:data.picArr];
- [_socialThumbArr addObjectsFromArray:data.thumbArr];
- }
- [wself fillSocial];
-
- } failure:^{
-
- }];
- }
- - (void)fillSocial{
- float space = 5;
- float size = _picContainer.height;
- for(int i=0; i<_socialThumbArr.count; i++)
- {
- float x = i*(size + space);
- if(x+size > _picContainer.width)
- {
- break;
- }
-
- NSString *thumb = [_socialThumbArr objectAtIndex:i];
- NSURL *url = [NSURL URLWithString:thumb];
- UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(x, 0, size, size)];
- imgView.tag = i;
- [imgView setUserInteractionEnabled:YES];
- [imgView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTouchSocialImage:)]];
- [imgView sd_setImageWithURL:url placeholderImage:User.defaultPlaceHolderImage];
- [_picContainer addSubview:imgView];
- }
- }
- - (void)fillInfo
- {
-
- if(!_avatar)
- {
- _avatar = [[NIMAvatarImageView alloc] initWithFrame:CGRectMake(0, 0, _avatarContainer.width, _avatarContainer.height)];
- [_avatar setUserInteractionEnabled:YES];
- [_avatar addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTouchAvatar:)]];
- [_avatarContainer addSubview:_avatar];
- }
-
- NSURL *url = nil;
- if(_nimUser)
- {
- url = _nimUser.userInfo.avatarUrl ? [NSURL URLWithString:_nimUser.userInfo.avatarUrl] : nil;
- [_avatar nim_setImageWithURL:url placeholderImage:[UIImage imageNamed:@"avatar_user2"]];
- [_genderImage setImage:[[User sharedInfo] getGenderImg:_nimUser]];
- _nickLabel.text = [[User sharedInfo] getUserName:_nimUser];
- _idLabel.text = [NSString stringWithFormat:@"ID:%@", _userInfo.ssid];
- }
-
- if(_userInfo.showAge > 0)
- {
- if(_userInfo.age > 0)
- {
- _ageLabel.text = [@(_userInfo.age) stringValue];
- }
- else
- {
- _ageLabel.text = @"未知";
- }
- }
- else
- {
- _ageLabel.text = @"保密";
- }
-
- NSString *hobby = _userInfo.hobbyStr;
- if(hobby && hobby.length > 0)
- {
- _hobbyLabel.text = hobby;
- }
- else
- {
- _hobbyLabel.text = @"";
- }
-
- if(_userInfo.address && _userInfo.address.length > 0)
- {
- _addressLabel.text = _userInfo.address;
- }
- else
- {
- _addressLabel.text = @"未知";
- }
-
-
- NSString *imgURL = _userInfo.socialBanner;
- url = imgURL && imgURL.length > 0 ? [NSURL URLWithString:imgURL] : nil;
- [_bannerImage sd_setImageWithURL:url placeholderImage:User.defaultSocialBanner];
-
-
- int maxPhoto = 8;
- int numPhotos = _userInfo.photeArr.count;
- int columns = 4;
- int space = 2;
- float size = (self.view.width - space * (columns-1)) / columns;
- _photoPicArr = [[NSMutableArray alloc] init];
- _photoThumbArr = [[NSMutableArray alloc] init];
- for(int i=0; i<numPhotos; i++)
- {
- float x = (i % columns) * (size + space);
- float y = (i / columns) * (size + space);
- NSDictionary *photo = [_userInfo.photeArr objectAtIndex:i];
- NSString *thumb = [photo objectForKey:@"thumb"];
- NSString *pic = [photo objectForKey:@"pic"];
- NSURL *url = [NSURL URLWithString:thumb];
- UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(x, y, size, size)];
- [imgView sd_setImageWithURL:url placeholderImage:User.defaultPlaceHolderImage];
- imgView.tag = i;
- [imgView setUserInteractionEnabled:YES];
- [imgView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTouchImage:)]];
- [_photoContainer addSubview:imgView];
- [_photoThumbArr addObject:thumb];
- [_photoPicArr addObject:pic];
- if(i >= maxPhoto)
- break;
- }
-
- int row = (int)ceilf((float)numPhotos / (float)columns);
- row = MIN(row, 2);
-
- if(row > 0)
- _photoContainer.height = row * size + (row - 1) * space;
-
- _socialContainer.top = _photoContainer.bottom;
- _topView.height = _socialContainer.bottom;
-
- [self.tableView reloadData];
- }
- - (void)followState:(int)state{
-
- _followState = state;
-
- if(state == 1)
- {
- [_followBtn setTitle:@"已关注" forState:UIControlStateNormal];
- }
- else if(state == 0)
- {
- [_followBtn setTitle:@"+关注" forState:UIControlStateNormal];
- }
- }
- - (IBAction)onTouchFollow:(id)sender {
-
- __weak typeof(self) wself = self;
- [[HttpRequest shared] follow:_userId success:^(int state) {
-
- [wself followState:state];
-
- if(state == 1)
- [wself.view makeToast:@"关注成功" duration:2.0 position:CSToastPositionCenter];
- else
- [wself.view makeToast:@"关注取消" duration:2.0 position:CSToastPositionCenter];
-
- } failure:^{
- [wself.view makeToast:@"操作失败" duration:2.0 position:CSToastPositionCenter];
- }];
-
- }
- - (IBAction)onTouchMsg:(id)sender {
- NIMSession *session = [NIMSession session:_userId type:NIMSessionTypeP2P];
- NTESSessionViewController *vc = [[NTESSessionViewController alloc] initWithSession:session];
- [self.navigationController pushViewController:vc animated:YES];
- }
- - (IBAction)onTouchGift:(id)sender {
- UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
- UserGiftViewController *userGiftVC = [board instantiateViewControllerWithIdentifier:@"UserGift"];
- [userGiftVC setUser:_nimUser];
- [self.navigationController pushViewController:userGiftVC animated:YES];
- }
- - (IBAction)onTouchMorePic:(id)sender {
- NSLog(@"onTouchMorePic");
-
- UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
- SocialTableViewController *vc = [board instantiateViewControllerWithIdentifier:@"TargetSocial"];
- vc.userInfo = _userInfo;
- [self.navigationController pushViewController:vc animated:YES];
- }
- - (void)onTouchConfig:(id)sender{
- UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
- UserConfigViewController *vc = [board instantiateViewControllerWithIdentifier:@"UserConfig"];
- [vc setUserId:_userId];
- [self.navigationController pushViewController:vc animated:YES];
- }
- - (void)onTouchImage:(UITapGestureRecognizer *)gestureRecognizer{
-
- UIView *viewClicked = [gestureRecognizer view];
-
- NSLog(@"show image %ld", (long)viewClicked.tag);
-
- int index = (int)viewClicked.tag;
- ImagePagerViewController *imagePageVC = [[ImagePagerViewController alloc] init];
- [imagePageVC setImages:_photoPicArr thumbs:_photoThumbArr startIndex:index];
-
- [self.navigationController pushViewController:imagePageVC animated:YES];
- }
- - (void)onTouchSocialImage:(UITapGestureRecognizer *)gestureRecognizer{
- UIView *viewClicked = [gestureRecognizer view];
-
- NSLog(@"show image %ld", (long)viewClicked.tag);
-
- int index = (int)viewClicked.tag;
- ImagePagerViewController *imagePageVC = [[ImagePagerViewController alloc] init];
- NSString *image = [_socialPicArr objectAtIndex:index];
- NSString *thumb = [_socialThumbArr objectAtIndex:index];
- [imagePageVC setImage:image thumb:thumb];
-
- [self.navigationController pushViewController:imagePageVC animated:YES];
- }
- - (void)onTouchAvatar:(UITapGestureRecognizer *)gestureRecognizer{
- if(_nimUser && _nimUser.userInfo && _nimUser.userInfo.avatarUrl)
- {
- ImagePagerViewController *vc = [[ImagePagerViewController alloc] init];
- [vc setImage:_nimUser.userInfo.avatarUrl thumb:_nimUser.userInfo.thumbAvatarUrl];
- [self.navigationController pushViewController:vc animated:YES];
- }
- }
- - (IBAction)onTouchKick:(id)sender {
- if(_team == nil)
- {
- return;
- }
-
- UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"确定移除改成员?" delegate:nil cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定" otherButtonTitles:nil, nil];
- __weak UIActionSheet *wSheet;
- __weak typeof(self) wself = self;
- [sheet showInView:self.view completionHandler:^(NSInteger index) {
- if (index == wSheet.destructiveButtonIndex) {
- [wself removeMember];
- }
- }];
-
- }
- - (void)removeMember{
- [SVProgressHUD show];
- [[NIMSDK sharedSDK].teamManager kickUsers:@[_userId] fromTeam:_team.teamId completion:^(NSError * _Nullable error) {
- [SVProgressHUD dismiss];
- if(!error) {
- [self.view makeToast:@"移除成功"];
- [self.navigationController popViewControllerAnimated:YES];
- } else {
- [self.view makeToast:@"移除失败"];
- }
- }];
- }
- @end
|