MyDynamicController.m
4.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
//
// MyDynamicController.m
// DreamSleep
//
// Created by peter on 2022/10/19.
//
#import "MyDynamicController.h"
#import "DynamicDetailController.h"
#import "MyDynamicView.h"
#import "ComListViewModel.h"
@interface MyDynamicController () <MyDynamicViewDelegate, DynamicDetailControllerDelegate>
@property (nonatomic, assign) int offset;
@property (nonatomic, strong) MyDynamicView *myDynamicView;
@property (nonatomic, strong) PersonDynViewModel *myDynVM;
@property (nonatomic, strong) NSURLSessionDataTask *likeDataTask;
@end
@implementation MyDynamicController
- (void)loadView {
self.myDynVM = [PersonDynViewModel new];
self.view = self.myDynamicView;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.offset = 1;
self.navigationItem.title = @"我的动态";
self.edgesForExtendedLayout = UIRectEdgeNone;
}
- (void)fireHandler {
[super fireHandler];
[self getDynamicListRequest:NO];
}
#pragma mark - MyDynamicViewDelegate
- (void)getDynamicListRequest:(BOOL)loadMore {
if (loadMore == NO) { self.offset = 1; }
[self.myDynVM queryUserDynamicListWithLoadMore:loadMore offset:self.offset completion:^(PersonDynViewModel * _Nonnull requestModel) {
if (requestModel.resCode == DSResCodeSuccess) {
if (requestModel.latestDataList.count == 0) {
if (loadMore) {
[self.myDynamicView endRefreshingWithNoMoreData];
} else {
[self.myDynamicView endRefreshing:NO];
[self updateDefalutView:DefaultTypeEmpty info:@""];
}
} else {
self.offset++;
[self.myDynamicView updateCommunityMoments:loadMore];
}
} else {
if (loadMore) {
[DSProgressHUD showToast:requestModel.errMessage];
} else {
[self updateDefalutView:DefaultTypeNet info:requestModel.errMessage];
}
[self.myDynamicView endRefreshing:loadMore];
}
}];
}
- (void)didSelectItemWithModel:(ComDynModel *)comDynModel {
if (![LoginUtils getUserLoginData]) {
[LoginUtils jumpToLoginControllerWithTarget:self];
return;
}
DynamicDetailController *detailVC = [DynamicDetailController new];
detailVC.comDynModel = comDynModel;
detailVC.delegate = self;
[self.navigationController pushViewController:detailVC animated:YES];
}
- (void)didTapLikeItem:(ComDynModel *)comDynModel cell:(ComDynamicCell *)cell {
if (![LoginUtils getUserLoginData]) {
[LoginUtils jumpToLoginControllerWithTarget:self];
return;
}
// 1、用户点赞或取消点赞直接响应UI变化
[ComListViewModel updateLikeData:comDynModel];
[cell fireLikeAnimate];
[cell updateLikeUI];
// 2、更新点赞或取消点赞请求
if (self.likeDataTask) { [self.likeDataTask cancel]; }
self.likeDataTask = [ComListViewModel userDynamicPraiseWithComDynModel:comDynModel completion:^(ComListViewModel * _Nonnull requestModel) {
// 3、如果请求失败,延迟执行回退
if (requestModel.resCode != DSResCodeSuccess) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[cell updateLikeUI];
[DSProgressHUD showToast:requestModel.errMessage];
});
}
}];
}
- (void)startDeleteDynamicRquest:(int)dynamicID {
self.myDynVM.oper_type = @"dynamic";
self.myDynVM.delete_id = dynamicID;
[DSProgressHUD showProgressHUDWithInfo:@""];
[self.myDynVM communityDeleteOperationWithCompletion:^(PersonDynViewModel * _Nonnull requestModel) {
[DSProgressHUD dissmissProgressHUD];
if (requestModel.resCode == DSResCodeSuccess) {
[self.myDynVM deleteComDynWithDynamicID:self.myDynVM.delete_id];
[self.myDynamicView deleteSuccess];
[self.myDynamicView updateListView];
if (self.myDynVM.listArr.count == 0) {
[self updateDefalutView:DefaultTypeEmpty info:@""];
}
// 刷新社区动态列表
[[NSNotificationCenter defaultCenter] postNotificationName:NeedUpdateComList object:nil];
} else {
[DSProgressHUD showToast:requestModel.errMessage];
}
}];
}
#pragma mark - DynamicDetailControllerDelegate
- (void)updateLikeOrRemark {
[self.myDynamicView updateListView];
}
#pragma mark - 关闭侧滑
- (BOOL)enableInteractivePopGestureRecognizer {
return NO;
}
#pragma mark - lazy
- (MyDynamicView *)myDynamicView {
if (!_myDynamicView) {
_myDynamicView = [[MyDynamicView alloc] initWithDelegate:self myDynViewModel:self.myDynVM];
}
return _myDynamicView;
}
@end