190 lines
6.3 KiB
Objective-C
190 lines
6.3 KiB
Objective-C
//
|
||
// MyEventsViewController.m
|
||
// YuMi
|
||
//
|
||
// Created by P on 2025/5/16.
|
||
//
|
||
|
||
#import "MyEventsViewController.h"
|
||
#import "CreateEventPresenter.h"
|
||
#import "EventCenterEmptyCell.h"
|
||
#import "EventCenterEventCell.h"
|
||
#import "XPWebViewController.h"
|
||
#import "XPRoomViewController.h"
|
||
|
||
@interface MyEventsViewController () <UITableViewDataSource, UITableViewDelegate, CreateEventPresenterProcotol>
|
||
|
||
@property (nonatomic, assign) NSInteger page;
|
||
@property (nonatomic, strong) UITableView *myEventTableView;
|
||
@property (nonatomic, strong) NSMutableArray <EventItemModel *>*datasource;
|
||
|
||
@end
|
||
|
||
@implementation MyEventsViewController
|
||
|
||
- (CreateEventPresenter *)createPresenter {
|
||
return [[CreateEventPresenter alloc] init];
|
||
}
|
||
|
||
- (void)viewDidLoad {
|
||
[super viewDidLoad];
|
||
|
||
self.title = YMLocalizedString(@"20.20.59_text_4");
|
||
|
||
[self.view addSubview:self.myEventTableView];
|
||
[self.myEventTableView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||
make.edges.mas_equalTo(self.view);
|
||
}];
|
||
|
||
[self.myEventTableView.mj_header beginRefreshing];
|
||
}
|
||
|
||
- (void)handleCellStatusButtonDidTap:(EventItemModel *)model action:(EventCellActions)action {
|
||
switch (action) {
|
||
case EventCellAction_participate:
|
||
[XPRoomViewController openRoom:@(model.roomUid).stringValue
|
||
viewController:self];
|
||
break;
|
||
case EventCellAction_sub:
|
||
[self.presenter subEvent:model.subStatus ? NO : YES
|
||
eventId:model.id];
|
||
break;
|
||
case EventCellAction_unsub:
|
||
[self.presenter subEvent:model.subStatus ? NO : YES
|
||
eventId:model.id];
|
||
break;
|
||
case EventCellAction_delete:
|
||
[self.presenter deleteEvent:model.id];
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
#pragma mark -
|
||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||
return self.datasource.count == 0 ? 1 : self.datasource.count;
|
||
}
|
||
|
||
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||
return self.datasource.count == 0 ? [EventCenterEmptyCell cellHeight] : [EventCenterEventCell cellHeight];
|
||
}
|
||
|
||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||
if (self.datasource.count == 0) {
|
||
return [EventCenterEmptyCell cellFor:tableView customID:@"" atIndexPath:indexPath];
|
||
}
|
||
EventCenterEventCell *cell = [EventCenterEventCell cellFor:tableView atIndexPath:indexPath];
|
||
EventItemModel *model = [self.datasource xpSafeObjectAtIndex:indexPath.row];
|
||
[cell updateCell:model];
|
||
@kWeakify(self);
|
||
[cell setStatusButtonDidTap:^(EventItemModel * _Nonnull model, EventCellActions action) {
|
||
@kStrongify(self);
|
||
[self handleCellStatusButtonDidTap:model action:action];
|
||
}];
|
||
return cell;
|
||
}
|
||
|
||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||
EventItemModel *model = [self.datasource xpSafeObjectAtIndex:indexPath.row];
|
||
if (model) {
|
||
XPWebViewController * webVC = [[XPWebViewController alloc] initWithRoomUID:nil];
|
||
webVC.url = [NSString stringWithFormat:@"%@%@",
|
||
URLWithType(kEventDetailPath),
|
||
@(model.id)];
|
||
[self.navigationController pushViewController:webVC animated:YES];
|
||
}
|
||
}
|
||
|
||
#pragma mark - CreateEventPresenterProcotol
|
||
- (void)myCreateEventListSuccess:(NSArray<EventItemModel *> *)list {
|
||
if (self.page > 1) {
|
||
[self.datasource addObjectsFromArray:list];
|
||
} else {
|
||
self.datasource = list.mutableCopy;
|
||
|
||
// 首次加载完成后,根据数据量添加footer
|
||
if (!self.myEventTableView.mj_footer) {
|
||
__weak typeof(self) weakSelf = self;
|
||
MJRefreshAutoNormalFooter *footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
|
||
// 上拉加载更多
|
||
weakSelf.page += 1;
|
||
[weakSelf.presenter loadMyCreateEvents:weakSelf.page];
|
||
}];
|
||
[footer setTitle:YMLocalizedString(@"20.20.59_text_23") forState:MJRefreshStateNoMoreData];
|
||
self.myEventTableView.mj_footer = footer;
|
||
}
|
||
}
|
||
[self.myEventTableView reloadData];
|
||
|
||
[self.myEventTableView.mj_header endRefreshing];
|
||
if (list.count < 20) {
|
||
[self.myEventTableView.mj_footer endRefreshingWithNoMoreData];
|
||
} else {
|
||
[self.myEventTableView.mj_footer resetNoMoreData];
|
||
}
|
||
}
|
||
|
||
- (void)myCreateEventListFailure:(NSString *)msg {
|
||
|
||
}
|
||
|
||
- (void)eventSubActionSuccess:(BOOL)isSub eventId:(NSInteger)eventId {
|
||
NSInteger count = 0;
|
||
if (isSub) {
|
||
count += 1;
|
||
[XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"20.20.59_text_35")];
|
||
} else {
|
||
count -= 1;
|
||
[XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"20.20.59_text_36")];
|
||
}
|
||
|
||
for (EventItemModel *m in self.datasource) {
|
||
if (m.id == eventId) {
|
||
m.subStatus = isSub;
|
||
m.subNum += count;
|
||
break;
|
||
}
|
||
}
|
||
|
||
[self.myEventTableView reloadData];
|
||
}
|
||
|
||
|
||
- (void)deleteEventSuccess:(NSInteger)eventId {
|
||
for (EventItemModel *m in self.datasource) {
|
||
if (m.id == eventId) {
|
||
[self.datasource removeObject:m];
|
||
break;
|
||
}
|
||
}
|
||
[self.myEventTableView reloadData];
|
||
}
|
||
|
||
- (void)deleteEventFailure:(NSString *)msg {
|
||
|
||
}
|
||
|
||
#pragma mark -
|
||
- (UITableView *)myEventTableView {
|
||
if (!_myEventTableView) {
|
||
_myEventTableView = [[UITableView alloc] init];
|
||
_myEventTableView.backgroundColor = [UIColor whiteColor];
|
||
_myEventTableView.delegate = self;
|
||
_myEventTableView.dataSource = self;
|
||
_myEventTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
|
||
if (@available(iOS 11.0, *)) {
|
||
_myEventTableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
|
||
}
|
||
[EventCenterEmptyCell registerTo:_myEventTableView withCustomID:@""];
|
||
[EventCenterEventCell registerTo:_myEventTableView];
|
||
__weak typeof(self) weakSelf = self;
|
||
_myEventTableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
|
||
// 下拉刷新
|
||
weakSelf.page = 1;
|
||
[weakSelf.presenter loadMyCreateEvents:weakSelf.page];
|
||
}];
|
||
}
|
||
return _myEventTableView;
|
||
}
|
||
@end
|