357 lines
14 KiB
Objective-C
357 lines
14 KiB
Objective-C
//
|
|
// MewMainViewController.m
|
|
// xplan-ios
|
|
//
|
|
// Created by duoban on 2023/12/19.
|
|
//
|
|
|
|
#import "MewMainHomeViewController.h"
|
|
#import <JXCategoryView.h>
|
|
#import <JXPagerView.h>
|
|
#import "MewMainHomeNavView.h"
|
|
#import "MewMainHomePartyVC.h"
|
|
#import "MewMainHomeMakeFriendVC.h"
|
|
#import "XPRoomSearchContainerViewController.h"
|
|
#import "ClientConfig.h"
|
|
#import "XPWebViewController.h"
|
|
#import "Api+Room.h"
|
|
#import "XPRoomViewController.h"
|
|
#import "XPLittleGameRoomOpenView.h"
|
|
#import "XPTeenagerHomeView.h"
|
|
#import "XPWeakTimer.h"
|
|
#import "MewHomeManager.h"
|
|
#import "UserInfoModel.h"
|
|
@interface MewMainHomeViewController ()<MewMainHomePartyVCDelegate,MewMainHomeMakeFriendVCDelegate,MewMainHomeNavViewDelegate,JXCategoryViewDelegate,JXPagerViewDelegate,JXPagerMainTableViewGestureDelegate>
|
|
{
|
|
NSTimer * _mewTimer;
|
|
}
|
|
@property (nonatomic, strong) UIStackView *mewStackView;
|
|
///背景图片
|
|
@property(nonatomic,strong) UIImageView *mewBgImageView;
|
|
///导航栏
|
|
@property(nonatomic,strong) MewMainHomeNavView *mewMainHomeNavView;
|
|
///分页控制器
|
|
@property (nonatomic, strong) JXCategoryTitleView *mewTopTitleView;
|
|
@property (nonatomic, strong) JXPagerView *mewPagingView;
|
|
@property (nonatomic, strong) NSArray<NSString *> *mewTitleList;
|
|
///派对
|
|
@property(nonatomic,strong) MewMainHomePartyVC *mewPartyVC;
|
|
///交友
|
|
@property(nonatomic,strong) MewMainHomeMakeFriendVC *mewMakeFriendVC;
|
|
///青少年空白view
|
|
@property (nonatomic, strong) XPTeenagerHomeView *mewTeenagerView;
|
|
@property(nonatomic,strong) UserInfoModel *mewInfoModel;
|
|
@end
|
|
|
|
@implementation MewMainHomeViewController
|
|
|
|
@synthesize parentMode = _parentMode;
|
|
- (MewHomeManager *)createPresenter {
|
|
return [[MewHomeManager alloc] init];
|
|
}
|
|
- (void)setParentMode:(BOOL)parentMode {
|
|
_parentMode = parentMode;
|
|
if (parentMode) {
|
|
if (!self.mewTeenagerView.superview) {
|
|
[self.view addSubview:self.mewTeenagerView];
|
|
[self.mewTeenagerView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.edges.mas_equalTo(self.view);
|
|
}];
|
|
}
|
|
} else {
|
|
[self.mewTeenagerView removeFromSuperview];
|
|
}
|
|
}
|
|
|
|
- (BOOL)isHiddenNavBar {
|
|
return YES;
|
|
}
|
|
- (void)viewWillAppear:(BOOL)animated {
|
|
[super viewWillAppear:animated];
|
|
if (_mewTimer) {
|
|
[_mewTimer setFireDate:[NSDate distantPast]]; //很远的过去
|
|
}
|
|
|
|
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRecent_homepage_show];
|
|
}
|
|
|
|
- (void)viewWillDisappear:(BOOL)animated {
|
|
[super viewWillDisappear:animated];
|
|
if (_mewTimer) {
|
|
//关闭定时器
|
|
[_mewTimer setFireDate:[NSDate distantFuture]]; //很远的将来
|
|
}
|
|
}
|
|
- (void)viewDidLoad {
|
|
[super viewDidLoad];
|
|
[self installUI];
|
|
[self installConstraints];
|
|
[self initHeaderAndFooterRrfresh];
|
|
[self addTimer];
|
|
}
|
|
- (void)addTimer {
|
|
_mewTimer = [XPWeakTimer scheduledTimerWithTimeInterval:15 block:^(id userInfo) {
|
|
[self timeRefresh];
|
|
} userInfo:nil repeats:YES];
|
|
}
|
|
|
|
- (void)timeRefresh {
|
|
if (_parentMode) return;
|
|
if(self.mewTopTitleView.selectedIndex == 1){
|
|
[self.mewMakeFriendVC mew_againHeaderData];
|
|
}else{
|
|
[self.mewPartyVC headerRefresh];
|
|
}
|
|
}
|
|
-(void)installUI{
|
|
self.view.backgroundColor = UIColorFromRGB(0xF5F5F7);
|
|
[self.view addSubview:self.mewBgImageView];
|
|
[self.view addSubview:self.mewStackView];
|
|
[self.view addSubview:self.mewPagingView];
|
|
[self.mewStackView addArrangedSubview:self.mewTopTitleView];
|
|
[self.mewStackView addArrangedSubview:self.mewMainHomeNavView];
|
|
}
|
|
-(void)installConstraints{
|
|
|
|
[self.mewBgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.left.right.top.equalTo(self.view);
|
|
make.height.mas_equalTo(kGetScaleWidth(250));
|
|
}];
|
|
[self.mewStackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.right.mas_equalTo(0);
|
|
make.left.mas_equalTo(kGetScaleWidth(15));
|
|
make.top.mas_equalTo(kStatusBarHeight);
|
|
make.top.mas_equalTo(44);
|
|
}];
|
|
[self.mewMainHomeNavView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.width.mas_equalTo(232);
|
|
make.height.mas_equalTo(30);
|
|
}];
|
|
[self.mewPagingView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.bottom.left.right.equalTo(self.view);
|
|
make.top.equalTo(self.mewStackView.mas_bottom).mas_offset(kGetScaleWidth(0));
|
|
}];
|
|
[self.mewTopTitleView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.height.mas_equalTo(44);
|
|
}];
|
|
}
|
|
- (void)initHeaderAndFooterRrfresh {
|
|
MewRefreshSvgaHeader *header = [MewRefreshSvgaHeader headerWithRefreshingTarget:self refreshingAction:@selector(mew_headerRefresh)];
|
|
self.mewPagingView.mainTableView.mj_header = header;
|
|
|
|
[self.presenter mew_getMainHomeUserInfo];
|
|
|
|
}
|
|
///请求用户信息成功
|
|
-(void)mew_RequestMainHomeUserInfoSuccess:(UserInfoModel *)userInfo{
|
|
self.mewInfoModel = userInfo;
|
|
}
|
|
-(void)mew_headerRefresh{
|
|
if(self.mewTopTitleView.selectedIndex == 1){
|
|
[self.mewMakeFriendVC mew_refresHeaderData];
|
|
}else{
|
|
[self.mewPartyVC headerRefresh];
|
|
}
|
|
}
|
|
#pragma mark - JXCategoryViewDelegate
|
|
- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView {
|
|
return 0;
|
|
}
|
|
|
|
- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView {
|
|
return [UIView new];
|
|
}
|
|
|
|
- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
|
|
return 0;
|
|
}
|
|
- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
|
|
return [UIView new];
|
|
}
|
|
|
|
|
|
- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView {
|
|
return self.mewTitleList.count;
|
|
}
|
|
|
|
- (id<JXPagerViewListViewDelegate>)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index {
|
|
UIViewController *viewController;
|
|
if (index == 0) {
|
|
viewController = self.mewPartyVC;
|
|
}else{
|
|
viewController = self.mewMakeFriendVC;
|
|
}
|
|
return (id <JXPagerViewListViewDelegate>)viewController;
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
|
|
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRecent_homepage_top_tab_click eventAttributes:index == 0 ? @{@"type" : @"1"}:@{@"type" : @"2"}];
|
|
}
|
|
|
|
#pragma mark - JXPagerMainTableViewGestureDelegate
|
|
|
|
- (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
|
|
///1000是外部的scrollView 1001是人气主播中的collectionView 9999是 开黑畅聊的轮播图
|
|
if (otherGestureRecognizer.view.tag == 1000 || otherGestureRecognizer.view.tag == 1001 || otherGestureRecognizer.view.tag == 9999 || otherGestureRecognizer.view.tag == 4999) {
|
|
return NO;
|
|
}
|
|
return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]];
|
|
}
|
|
#pragma mark- MewMainHomeNavViewDelegate
|
|
///点击了搜索房间
|
|
- (void)mew_MainHomeNavView:(MewMainHomeNavView *_Nullable)view didClickSearch:(UIView *_Nullable)sender{
|
|
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRecent_homepage_top_search_click];
|
|
XPRoomSearchContainerViewController * searchVC = [[XPRoomSearchContainerViewController alloc] init];
|
|
searchVC.modalPresentationStyle = UIModalPresentationFullScreen;
|
|
[self.navigationController presentViewController:searchVC animated:YES completion:nil];
|
|
}
|
|
///点击了榜单按钮
|
|
- (void)mew_MainHomeNavView:(MewMainHomeNavView *_Nullable)view didClickRank:(UIButton *_Nullable)sender{
|
|
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRecent_homepage_top_rank_click];
|
|
NSString *url = @"";
|
|
if([ClientConfig shareConfig].configInfo.h5Uris.count > 0){
|
|
for (XPClientH5UresModel *h5Model in [ClientConfig shareConfig].configInfo.h5Uris) {
|
|
if([h5Model.code isEqualToString:@"rank"]){
|
|
url = h5Model.uri;
|
|
break;;
|
|
}
|
|
}
|
|
}
|
|
|
|
XPWebViewController * webVC =[[XPWebViewController alloc] init];
|
|
webVC.url = url.length > 0 ? url : URLWithType(kHomeRankURL);
|
|
[self.navigationController pushViewController:webVC animated:YES];
|
|
}
|
|
///点击了我的房间
|
|
- (void)mew_MainHomeNavView:(MewMainHomeNavView *_Nullable)view didClickRoom:(UIButton *_Nullable)sender{
|
|
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRecent_homepage_top_myroom_click];
|
|
NSString* roomUid = [AccountInfoStorage instance].getUid;
|
|
[Api getRoomInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
|
if (code == 200) {
|
|
RoomInfoModel * roomInfo = [RoomInfoModel modelWithJSON:data.data];
|
|
if (roomInfo.isReselect) {
|
|
if(self.mewInfoModel.isCertified == NO && [ClientConfig shareConfig].configInfo.certificationType > 0){
|
|
[self showRealNameAuthenticationTipsAlertView:@"为了营造更安全的网络环境\n在 开通个人房间前\n需要先进行实名认证" isShowRoom:YES] ;
|
|
return;
|
|
}
|
|
XPLittleGameRoomOpenView * roomOpenView = [[XPLittleGameRoomOpenView alloc] init];
|
|
roomOpenView.roomInfo = roomInfo;
|
|
roomOpenView.currentVC = self;
|
|
[TTPopup popupView:roomOpenView style:TTPopupStyleActionSheet];
|
|
} else {
|
|
[XPRoomViewController openRoom:roomUid viewController:self];
|
|
}
|
|
} else {
|
|
if(code == 10108 && self.mewInfoModel){
|
|
if(self.mewInfoModel.isCertified == NO){
|
|
[self showRealNameAuthenticationTipsAlertView:@"为了营造更安全的网络环境\n在 开通个人房间前\n需要先进行实名认证" isShowRoom:YES];
|
|
}
|
|
return;
|
|
}
|
|
[self showErrorToast:msg];
|
|
}
|
|
} uid:roomUid intoUid:roomUid];
|
|
}
|
|
#pragma mark - MewMainHomePartyVCDelegate
|
|
-(void)mew_RefreshSucceed:(MewMainHomePartyVC *)vc{
|
|
[self.mewPagingView.mainTableView.mj_header endRefreshing];
|
|
}
|
|
#pragma mark - MewMainHomeMakeFriendVCDelegate
|
|
-(void)mew_RefreshDataSucceed:(MewMainHomeMakeFriendVC*)VC{
|
|
[self.mewPagingView.mainTableView.mj_header endRefreshing];
|
|
}
|
|
#pragma mark - 懒加载
|
|
- (UIImageView *)mewBgImageView{
|
|
if(!_mewBgImageView){
|
|
_mewBgImageView = [UIImageView new];
|
|
_mewBgImageView.image = kImage(@"mew_home_top_bg_image");
|
|
|
|
}
|
|
return _mewBgImageView;
|
|
}
|
|
- (MewMainHomeNavView *)mewMainHomeNavView{
|
|
if(!_mewMainHomeNavView){
|
|
_mewMainHomeNavView = [[MewMainHomeNavView alloc]initWithFrame:CGRectZero];
|
|
_mewMainHomeNavView.delegate = self;
|
|
}
|
|
return _mewMainHomeNavView;
|
|
}
|
|
- (JXCategoryTitleView *)mewTopTitleView {
|
|
if (!_mewTopTitleView) {
|
|
_mewTopTitleView = [[JXCategoryTitleView alloc] init];
|
|
_mewTopTitleView.delegate = self;
|
|
_mewTopTitleView.backgroundColor = [UIColor clearColor];
|
|
_mewTopTitleView.titleColor = UIColorFromRGB(0x696D7A);
|
|
_mewTopTitleView.titleSelectedColor = UIColorFromRGB(0x2B2D33);
|
|
_mewTopTitleView.titleFont = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium];
|
|
_mewTopTitleView.titleSelectedFont = [UIFont systemFontOfSize:20 weight:UIFontWeightSemibold];
|
|
_mewTopTitleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter;
|
|
_mewTopTitleView.contentScrollViewClickTransitionAnimationEnabled = NO;
|
|
if([ClientConfig shareConfig].defaultTab.intValue == 2){
|
|
_mewTopTitleView.defaultSelectedIndex = 1;
|
|
}else{
|
|
_mewTopTitleView.defaultSelectedIndex = 0;
|
|
}
|
|
_mewTopTitleView.averageCellSpacingEnabled = NO;
|
|
_mewTopTitleView.titles = self.mewTitleList;
|
|
_mewTopTitleView.cellSpacing = 20;
|
|
_mewTopTitleView.listContainer = (id<JXCategoryViewListContainer>)self.mewPagingView.listContainerView;
|
|
|
|
JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init];
|
|
lineView.indicatorImageViewSize = CGSizeMake(54, 28);
|
|
lineView.verticalMargin = 8;
|
|
lineView.indicatorImageView.image = [UIImage imageNamed:@"mew_home_top_choose_icon"];
|
|
_mewTopTitleView.indicators = @[lineView];
|
|
}
|
|
return _mewTopTitleView;
|
|
}
|
|
|
|
- (JXPagerView *)mewPagingView {
|
|
if (!_mewPagingView) {
|
|
_mewPagingView = [[JXPagerView alloc] initWithDelegate:self];
|
|
_mewPagingView.backgroundColor = [UIColor clearColor];
|
|
_mewPagingView.listContainerView.backgroundColor = [UIColor clearColor];
|
|
_mewPagingView.mainTableView.backgroundColor = [UIColor clearColor];
|
|
_mewPagingView.mainTableView.gestureDelegate = self;
|
|
_mewPagingView.listContainerView.listCellBackgroundColor = UIColor.clearColor;
|
|
}
|
|
return _mewPagingView;
|
|
}
|
|
|
|
- (NSArray<NSString *> *)mewTitleList {
|
|
if (!_mewTitleList) {
|
|
_mewTitleList = @[@"派对", @"交友"];
|
|
}
|
|
return _mewTitleList;
|
|
}
|
|
- (UIStackView *)mewStackView {
|
|
if (!_mewStackView) {
|
|
_mewStackView = [[UIStackView alloc] init];
|
|
_mewStackView.axis = UILayoutConstraintAxisHorizontal;
|
|
_mewStackView.distribution = UIStackViewDistributionFill;
|
|
_mewStackView.alignment = UIStackViewAlignmentCenter;
|
|
_mewStackView.spacing = 6;
|
|
}
|
|
return _mewStackView;
|
|
}
|
|
- (MewMainHomePartyVC *)mewPartyVC{
|
|
if(!_mewPartyVC){
|
|
_mewPartyVC = [MewMainHomePartyVC new];
|
|
_mewPartyVC.delegate = self;
|
|
}
|
|
return _mewPartyVC;
|
|
}
|
|
- (MewMainHomeMakeFriendVC *)mewMakeFriendVC{
|
|
if(!_mewMakeFriendVC){
|
|
_mewMakeFriendVC = [MewMainHomeMakeFriendVC new];
|
|
_mewMakeFriendVC.delegate = self;
|
|
}
|
|
return _mewMakeFriendVC;
|
|
}
|
|
|
|
|
|
@end
|