Files
real-e-party-iOS/YuMi/Modules/YMNewHome/View/MyEventsViewController.m
edwinQQQ a35a711be6 chore: Initial clean commit
- Removed YuMi/Library/ (138 MB, not tracked)
- Removed YuMi/Resources/ (23 MB, not tracked)
- Removed old version assets (566 files, not tracked)
- Excluded Pods/, xcuserdata/ and other build artifacts
- Clean repository optimized for company server deployment
2025-10-09 16:19:14 +08:00

193 lines
6.5 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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 {
[self.myEventTableView.mj_header endRefreshing];
if (self.page > 1) {
[self.myEventTableView.mj_footer endRefreshing];
}
}
- (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