Files
yinmeng-ios/xplan-ios/Main/Home/View/XPHomeLivesViewController.m
2022-07-19 18:21:57 +08:00

258 lines
9.1 KiB
Objective-C

//
// XPHomeLivesViewController.m
// xplan-ios
//
// Created by GreenLand on 2022/7/15.
//
#import "XPHomeLivesViewController.h"
///Third
#import <Masonry/Masonry.h>
#import <JXCategoryView/JXCategoryView.h>
#import <JXCategoryView/JXCategoryIndicatorBackgroundView.h>
#import <JXCategoryView/JXCategoryListContainerView.h>
#import <JXPagingView/JXPagerView.h>
#import <MJRefresh/MJRefresh.h>
///Tool
#import "XPMacro.h"
#import "ThemeColor.h"
#import "XPHtmlUrl.h"
#import "StatisticsServiceHelper.h"
///Model
#import "HomeLiveTagModel.h"
#import "HomeLiveLookRecordModel.h"
#import "HomeRecommendRoomModel.h"
///View
#import "XPRoomSearchContainerViewController.h"
#import "XPHomePartyViewController.h"
#import "XPWebViewController.h"
#import "XPHomeLikeViewController.h"
#import "XPHomeLittleGameViewController.h"
#import "XPHomeLiveHeadView.h"
#import "XPHomeHappyViewController.h"
#import "XPHomeLivePageViewController.h"
#import "XPMineUserInfoViewController.h"
#import "XPRoomViewController.h"
///P
#import "XPHomeLivePresenter.h"
#import "XPHomeLiveProtocol.h"
UIKIT_EXTERN NSString * kHomeMoreScrollPageKey;
@interface XPHomeLivesViewController ()<JXCategoryViewDelegate, JXPagerViewDelegate, JXPagerMainTableViewGestureDelegate, XPHomeLiveProtocol, XPHomeLiveHeadViewDelegate>
///分页标题
@property (nonatomic, strong) NSArray<NSString *> *titles;
@property (nonatomic, strong) JXPagerView *pagingView;
///分页控件
@property (nonatomic, strong) JXCategoryTitleView *titleView;
///分页lineView
@property (nonatomic, strong) JXCategoryListContainerView *contentView;
///tag的列表
@property (nonatomic,copy) NSArray<HomeLiveTagModel *> *tagList;
///头部浏览记录
@property (nonatomic, strong) XPHomeLiveHeadView *headerView;
///浏览记录房间列表
@property (nonatomic, strong) NSArray<HomeRecommendRoomModel *> *roomList;
@end
@implementation XPHomeLivesViewController
- (XPHomeLivePresenter *)createPresenter {
return [[XPHomeLivePresenter alloc] init];
}
- (BOOL)isHiddenNavBar {
return YES;
}
- (void)viewDidLoad {
[super viewDidLoad];
[self initHeaderAndFooterRrfresh];
[self initSubViews];
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
self.pagingView.frame = self.view.bounds;
}
#pragma mark - InitHttp
- (void)headerRefresh {
self.titleView.defaultSelectedIndex = 0;
[self.presenter getOnceLookRoom];
[self.presenter getHomeLiveTagList];
}
- (void)initHeaderAndFooterRrfresh {
MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)];
header.stateLabel.font = [UIFont systemFontOfSize:10.0];
header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0];
header.stateLabel.textColor = [ThemeColor secondTextColor];
header.lastUpdatedTimeLabel.textColor = [ThemeColor secondTextColor];
self.pagingView.mainTableView.mj_header = header;
[self headerRefresh];
}
#pragma mark - Private Method
- (void)initSubViews {
self.view.backgroundColor = [UIColor clearColor];
[self.view addSubview:self.pagingView];
}
#pragma mark - XPHomeRecommendProtocol
- (void)getOnceLookRoomListSuccess:(HomeLiveLookRecordModel *)data {
self.headerView.hadHistoryRecord = data.onceLookStatus;
self.headerView.roomList = [NSMutableArray arrayWithArray:data.singleRoomList];
self.roomList = data.singleRoomList;
[self.pagingView reloadData];
}
- (void)getHomeLiveTagListSuccess:(NSArray<HomeLiveTagModel *> *)array {
self.tagList = array;
NSMutableArray * titles = [NSMutableArray array];
[array enumerateObjectsUsingBlock:^(HomeLiveTagModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (obj.sortName.length > 0) {
[titles addObject:obj.sortName];
}
}];
self.titles = titles.copy;
self.titleView.titles = self.titles;
[self.titleView reloadData];
[self.pagingView.mainTableView.mj_header endRefreshing];
[self.pagingView reloadData];
}
- (void)getHomeLiveTagListFail:(NSArray<HomeLiveTagModel *> *)array {
self.tagList = array;
NSMutableArray * titles = [NSMutableArray array];
[array enumerateObjectsUsingBlock:^(HomeLiveTagModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (obj.sortName.length > 0) {
[titles addObject:obj.sortName];
}
}];
self.titles = titles.copy;
self.titleView.titles = self.titles;
[self.titleView reloadData];
[self.pagingView.mainTableView.mj_header endRefreshing];
[self.pagingView reloadData];
}
#pragma mark - JXCategoryListContentViewDelegate
- (UIView *)listView {
return self.view;
}
#pragma mark - JXCategoryViewDelegate
- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView {
return [XPHomeLiveHeadView getHomeLiveHeaderViewHeight:self.roomList];
}
- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView {
return self.headerView;
}
- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
return 50;
}
- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
return self.titleView;
}
- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView {
return self.titles.count;
}
- (id<JXPagerViewListViewDelegate>)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index {
UIViewController *viewController;
XPHomeLivePageViewController * homeVC = [[XPHomeLivePageViewController alloc] init];
HomeLiveTagModel *tag = self.tagList[index];
homeVC.tabId = tag.tid;
return homeVC;
return (id <JXPagerViewListViewDelegate>)viewController;
}
- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
HomeLiveTagModel *tag = self.tagList[index];
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventGebo_tab_click eventAttributes:@{@"geboTagName" : tag.sortName}];
// [self.presenter getHomeMoreAnchorRoomListWithTabId:tag.tid];
// if ([title isEqualToString:@"开黑畅聊"]) {
// [self.presenter getPlayGameWithTeam:1];
// } else {
// [self.presenter getHomePersonalRoomList];
// }
}
#pragma mark - JXPagerMainTableViewGestureDelegate
- (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
///1000是外部的scrollView 1001是人气主播中的collectionView
if (otherGestureRecognizer.view.tag == 1000 || otherGestureRecognizer.view == self.headerView || otherGestureRecognizer.view.tag == 1001) {
return NO;
}
return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]];
}
#pragma mark - XPHomeLiveHeadViewDelegate
- (void)xPHomeLiveHeadViewDidClickItem:(HomeRecommendRoomModel *)model {
NSString *roomUid = model.uid;
if (roomUid.length > 0) {
[XPRoomViewController openRoom:roomUid viewController:self];
}
}
#pragma mark - Getters And Setters
- (JXCategoryTitleView *)titleView {
if (!_titleView) {
_titleView = [[JXCategoryTitleView alloc] init];
_titleView.delegate = self;
_titleView.backgroundColor = [UIColor clearColor];
_titleView.titleColor = [ThemeColor textThirdColor];
_titleView.titleSelectedColor = [ThemeColor mainTextColor];
_titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:14];
_titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:14];
_titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter;
_titleView.contentScrollViewClickTransitionAnimationEnabled = NO;
_titleView.defaultSelectedIndex = 0;
_titleView.averageCellSpacingEnabled = NO;
_titleView.titles = self.titles;
_titleView.cellSpacing = 25;
_titleView.titles = self.titles;
_titleView.listContainer = (id<JXCategoryViewListContainer>)self.pagingView.listContainerView;
JXCategoryIndicatorBackgroundView * indocator = [[JXCategoryIndicatorBackgroundView alloc] init];
indocator.indicatorColor = [ThemeColor appMainColor];
indocator.indicatorHeight = 24;
indocator.indicatorWidthIncrement = 20;
indocator.indicatorCornerRadius = 12;
_titleView.indicators = @[indocator];
}
return _titleView;
}
- (JXPagerView *)pagingView {
if (!_pagingView) {
_pagingView = [[JXPagerView alloc] initWithDelegate:self];
_pagingView.backgroundColor = [UIColor clearColor];
_pagingView.listContainerView.backgroundColor = [UIColor clearColor];
_pagingView.mainTableView.backgroundColor = [UIColor clearColor];
_pagingView.mainTableView.gestureDelegate = self;
_pagingView.listContainerView.listCellBackgroundColor = UIColor.clearColor;
}
return _pagingView;
}
- (XPHomeLiveHeadView *)headerView {
if (!_headerView) {
_headerView = [[XPHomeLiveHeadView alloc] init];
_headerView.backgroundColor = [UIColor clearColor];
_headerView.currenViewController = self;
_headerView.delegate = self;
}
return _headerView;
}
@end