// // HomeMessageViewController.m // tongxin // // Created by ecell on 2023/4/24. // Copyright © 2023 xTT. All rights reserved. // #import "HomeMessageViewController.h" #import "MyTabBarViewController.h" #import "HomeMsgHeaderView.h" #import "HomeMsgTableViewCell.h" #import "CommonTableView.h" #import "MessageViewController.h" #import "MyMQTT.h" #import "JCManager.h" #import "BRManager.h" #import "TihuManager.h" #import "NoWatchView.h" #import "ChatViewController.h" #import "HomeChatListModel.h" @interface HomeMessageViewController () @property (nonatomic ,strong) HomeMsgHeaderView *headerView; @property (nonatomic ,strong) CommonTableView *homeTable; @property (nonatomic ,strong) NoWatchView *noView; @end @implementation HomeMessageViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.zx_navBarBackgroundColor = KKClearColor; self.zx_navTitle = @"首页"; //清除预加载的图片 MyTabBarViewController *mytabVC = (MyTabBarViewController*)self.tabBarController; [mytabVC removeTransitionImageView]; self.view.backgroundColor = KKBackgroundGrey; UIColor *color = [UIColor blackColor]; NSDictionary *dict = [NSDictionary dictionaryWithObject:color forKey:UITextAttributeTextColor]; self.navigationController.navigationBar.titleTextAttributes = dict; UIImageView *topImg = [[UIImageView alloc] init]; topImg.image = ImageName_(@"comm_bg_img_"); [self.view addSubview:topImg]; [topImg mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view); make.left.right.equalTo(self.view); make.height.mas_equalTo(Adapted(topImg.image.size.height)); }]; [self.view addSubview:self.homeTable]; [self.homeTable mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view).offset(iPhoneX_NavHeight); make.left.right.equalTo(self.view).inset(15); make.bottom.equalTo(self.view.mas_bottom); }]; self.noView = [[NoWatchView alloc] init]; self.noView.hidden = YES; [self.view addSubview:self.noView]; WEAKSELF [[NSNotificationCenter defaultCenter] addObserverForName:@"device_add" object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { NSLog(@"===添加设备成功通知==="); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ if (cUser.myDevices && cUser.myDevices.count ==0) { [weakSelf viewWillAppear:YES]; } }); }]; } - (CommonTableView *)homeTable { if (!_homeTable) { _homeTable = [[CommonTableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain cellHeight:87 cellRow:0 isAdaptive:NO isLine:YES commonCell:HomeMsgTableViewCell.class createCell:^(ZZTableViewCell * _Nonnull cells, NSIndexPath * _Nonnull indexPath) { HomeMsgTableViewCell *cell = (HomeMsgTableViewCell *)cells; [UICommon tableView:self->_homeTable willDisplayCell:cell forRowAtIndexPath:indexPath cellCoutn:self.myDataSource.count sizeH:0]; cell.listModel = self.myDataSource[indexPath.row]; // if (indexPath.row == 0) // [UICommon setExtraCellLineHidden:cell]; } selectedCell:^(UITableView * _Nonnull tableView, NSIndexPath * _Nonnull indexPath) { HomeChatListModel *model = self.myDataSource[indexPath.row]; ChatViewController *vc = [[ChatViewController alloc] init]; vc.zx_navTitle = model.groupid ? @"家庭群聊" : model.name; vc.chatType = model.groupid ? 222: 111; if (model.groupid) { Circle *infoCircle = [[Circle alloc] init]; infoCircle.groupid = model.groupid; infoCircle.creator = model.creator; infoCircle.members = model.members; infoCircle.devices = model.devices; infoCircle.msgNum = model.msgNum; vc.infoCircle = infoCircle; } else { Circle *infoCircle = [[Circle alloc] init]; vc.imei = model.imei; vc.infoCircle = infoCircle; } [self.navigationController pushViewController:vc animated:YES]; } DidscrollView:^(UIScrollView * _Nonnull scrollView) { }]; _homeTable.tableHeaderView = self.headerView; _homeTable.tableHeaderView.height = 118; _homeTable.backgroundColor = KKClearColor; [UICommon setTavleViewlink:_homeTable distance:30]; } return _homeTable; } - (HomeMsgHeaderView *)headerView { WEAKSELF if (!_headerView) { _headerView = [[HomeMsgHeaderView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth-30, 118)]; UIButton *btn = [UICommon ui_buttonSimple:_headerView.frame font:Font_(0) normalColor:KKClearColor normalText:@"" click:^(id x) { MessageViewController *vc = [[MessageViewController alloc] init]; vc.hidesBottomBarWhenPushed = YES; vc.title = @"消息中心"; [weakSelf.navigationController pushViewController:vc animated:YES]; }]; [_headerView addSubview:btn]; } return _headerView; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; } -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; NSLog(@"======HomeVC viewWillAppear=========="); WEAKSELF //刷新 关联数据 if(!cUser){ [[NSNotificationCenter defaultCenter] postNotificationName:@"outLogin" object:nil]; return; } // 查找默认imei add by lsz 2020-12-28 Device *defaultDev = nil; NSString *defaultImei = [User getDefaultImei]; if (defaultImei && cUser.myDevices) { for (Device *dev in cUser.myDevices) { if ([defaultImei isEqualToString:dev.imei]) { defaultDev = dev; break; } } } if (defaultDev) { cUser.cDevice = defaultDev; NSLog(@"===default:%@",defaultImei); } else if (![cUser.myDevices containsObject:cUser.cDevice] && cUser.myDevices.count > 0) { cUser.cDevice = [cUser.myDevices firstObject]; } [cUser getRelatedDeviceSuccess:^(id responseObject) { [cUser getUserInfoSuccess:^(id responseObject) { [self updataViews]; BOOL haveJuphoonDevice = NO; for (Device* item in cUser.myDevices) { if (item.support_video.integerValue == 4) { haveJuphoonDevice = YES; } } if(haveJuphoonDevice){ //MARK:拥有菊风的设备,需要登录 账号 (调试时期暂时停止) // if(![JCManager shared].client) // { // [[JCManager shared] initializeWithAPPKey:cUser.juphoonKey]; // [[JCManager shared].client setConfig:JCClientConfigServer value:@"http:cn.router.justalkcloud.com:8080"]; // [[JCManager shared].client setServerAddress:@"http:cn.router.justalkcloud.com:8080"]; // [[JCManager shared].client login:cUser.openid password:@"test" loginParam:nil];//免鉴权密码随意但是不能为空 // [JCManager shared].gMianVC = self; // xLog(@"菊风账号是:%@", cUser.openid); // } if(![JCManager shared].client) { [[JCManager shared] initializeWithAPPKey:cUser.juphoonKey]; JCClientLoginParam* loginParam = [[JCClientLoginParam alloc] init]; loginParam.directConnectEnable = YES; [[JCManager shared].client setServerAddress:@"http:cn.router.justalkcloud.com:8080"]; [[JCManager shared].client login:cUser.openid password:@"test" loginParam:loginParam]; [[JCManager shared].mediaDevice enableSpeaker:YES]; [JCManager shared].gMianVC = self; } } BOOL haveBairuiDevice = NO; for (Device* item in cUser.myDevices) { if (item.support_video.integerValue == 5) { haveBairuiDevice = YES; } } if(haveBairuiDevice){ //MARK:拥有佰锐的设备,需要登录 账号 if (![[BRManager shared] isUserLogin]) { [[BRManager shared] initialize]; [BRManager shared].gMianVC = self; [[BRManager shared] login:cUser.bairui_id nick:cUser.name]; } else { xLog(@"====================>佰锐视频账号已经登录"); } xLog(@"佰锐账号是:%d", [cUser.bairui_id intValue]); } BOOL haveTihuDevice = NO; for (Device* item in cUser.myDevices) { if (item.support_video.integerValue == 6) { haveTihuDevice = YES; } } if(haveTihuDevice){ //MARK:拥有鹈鹕的设备,需要登录账号 if (![[TihuManager shared] isUserLogin]) { [[TihuManager shared] initialize]; [TihuManager shared].gMianVC = self; [[TihuManager shared] login:cUser.openid pwd:@"123456"]; xLog(@"鹈鹕账号是:%@", cUser.openid); } else { xLog(@"====>鹈鹕视频账号已经登录"); } } //MARK:拥有声网的设备,需要调用查询接口,判断是否有用户在正在通话中的 for (Device *item in cUser.myDevices) { if (item.support_video.integerValue == 1) { [cUser getVideoInfoWithDeviceImei:item.imei CallType:0 Success:^(NSDictionary *responseObject) { if ([responseObject valueForKey:@"video_id"]){ NSLog(@"===%@",responseObject); [weakSelf showCallViewWithDic:responseObject]; // [[NSNotificationCenter defaultCenter] postNotificationName:@"VideoCall" object:responseObject userInfo:responseObject]; } } failure:^{ }]; } } } failure:nil]; if (cUser.myDevices.count > 0) { [cUser getRelatedChatGroupSuccess:^(id responseObject) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // TODO 0.5-->0.1 }); } failure:nil]; } else { } // MARK 切换到同意的绑定设备 ===================================== add by lsz 2021-6-22 NSString *agreeImei = [User agreeImei]; Device *agreeDevice; if (agreeImei && cUser.myDevices) { for (Device *dev in cUser.myDevices) { if ([agreeImei isEqualToString:dev.imei]) { agreeDevice = dev; break; } } } } failure:nil]; // [self updataViews]; } - (void)updataViews { self.homeTable.hidden = cUser.myDevices.count > 0 ? NO : YES; self.noView.hidden = cUser.myDevices.count > 0 ? YES : NO; [self getModelList]; [self getNotification]; } /// 获取用户所有单聊和群聊信息 - (void)getModelList { WEAKSELF [cUser.cDevice GetChatGroupsWithSuccess:^(id responseObject) { weakSelf.myDataSource = [NSMutableArray new]; NSArray *groupArr = responseObject[@"groupDataList"]; NSArray *singleArr = responseObject[@"singleDataList"]; for (NSDictionary *dic in singleArr) { HomeChatListModel *model = [HomeChatListModel yy_modelWithJSON:dic]; [weakSelf.myDataSource addObject:model]; } for (NSDictionary *dic in groupArr) { HomeChatListModel *model = [HomeChatListModel yy_modelWithJSON:dic]; [weakSelf.myDataSource addObject:model]; } weakSelf.homeTable.cellRow = weakSelf.myDataSource.count; [weakSelf.homeTable reloadData]; } failure:^(NSError *error) { }]; } /// 获取未读消息(最后一条) - (void)getNotification { WEAKSELF [cUser GetNotificationCountWithSuccess:^(id responseObject) { weakSelf.headerView.modelDic = responseObject; [weakSelf.homeTable reloadData]; } failure:^(NSError *error) { }]; } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end